Уведомления Unity Mobile не работают на Android 13+C#

Место общения программистов C#
Ответить
Anonymous
 Уведомления Unity Mobile не работают на Android 13+

Сообщение Anonymous »

Уведомления не отображаются на Android 13 и более поздних версиях, но они прекрасно работают на Android 12.
Разрешение 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 6 (preview) на Unity 2022. В результате уведомления начали работать.
В тестовом проекте на В Unity 2022 не было Android Resolver или пользовательских файлов Gradle.

Подробнее здесь: https://stackoverflow.com/questions/793 ... android-13
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»