Разрешение POST_NOTIFICATION включено в пользовательский манифест. >
Перед регистрацией канала уведомлений и самих уведомлений я явно запрашиваю у пользователя разрешение на отправку уведомлений.
По данным Logcat, ошибок нет, и уведомления зарегистрированы успешно.
Я использую последнюю версию UnityMobileNotification.
Интересно, когда я перенес скрипт, отвечающий за регистрацию уведомлений, в Unity 2022, скорректировали манифест и подправили настройки проекта, уведомления корректно работали на всех версиях Android. Настройки в основном проекте (Unity 6) и тестовом проекте (Unity 2022) кажутся идентичными.
Прикрепление скрипта:
Код: Выделить всё
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");
}
В тестовом проекте на В Unity 2022 не было Android Resolver или пользовательских файлов Gradle.
Подробнее здесь: https://stackoverflow.com/questions/793 ... android-13
Мобильная версия