Unity Mobile Notification не приходят на Android13+
Не приходят уведомления на Android 13 и выше. На Андройд 12 все работает корректно.
POST_NOTIFICATION в кастомном манифесте присутствует.
Перед регистрацией канала и самих уведомлений запрашиваю у пользователя разрешение на получение уведомлений.
По логам в Logcat вижу, что ошибок нет и уведомления регистрируются корректно.
Версия UnityMobileNotification последняя.
Что интересно: перетащил скрипт, отвечающий за регистрацию уведомлений в Unity2022, поковырялся с манифестом и настройками проекта - на всех версиях Андройд уведомления приходят. Настройки с основным проектом (Unity6) и тестовым (Unity2022) - идентичны.
Прикрепляю скрипт, если нужно:
public async UniTask StartAsync(CancellationToken cancellation)
{
await WaitPermissionAsync(_tokenSource.Token);
RegisterChannel();
ClearNotifications();
}
private void RegisterChannel()
{
AndroidNotificationCenter.Initialize();
var channel = new AndroidNotificationChannel()
{
Id = ChannelId,
Name = "Notifications_Channel_Evolution",
Description = "Default description",
Importance = Importance.High,
};
AndroidNotificationCenter.RegisterNotificationChannel(channel);
_notificationInitialized = true;
Debug.Log("[Notification] Channel registered");
}
private async UniTask WaitPermissionAsync(CancellationToken token)
{
var request = new PermissionRequest();
await UniTask.WaitUntil(() => request.Status != PermissionStatus.RequestPending, cancellationToken: token);
Debug.Log("[Notification] Permission perform: " + request.Status);
}
private void RegisterNotifications()
{
if (_notificationInitialized == false)
{
return;
}
var calculatedTimes = CalculateNotificationTimes();
int i = 0;
foreach (var calculatedTime in calculatedTimes)
{
i++;
if (i > 2)
{
return;
}
NotificationsType type = NotificationsType.Default;
if (_dailyRewardClaimedObserver.GetDailyRewardStatus())
{
type = NotificationsType.Reward;
}
var notificationData = _localTextProvider.ChooseLocalKeysByRewardStatus(type)
.GetRandomLocalText();
var time = DateTime.Now.AddSeconds(20);
var notification = new AndroidNotification
{
Title = notificationData.Item1,
Text = notificationData.Item2,
FireTime = time
};
var id = AndroidNotificationCenter.SendNotification(notification, ChannelId);
var status = AndroidNotificationCenter.CheckScheduledNotificationStatus(id);
Debug.Log($"[Notification] Notification {id} at {calculatedTime} is {status}");
}
Debug.Log("[Notification] Notifications registered");
}