Поделиться через


Критические оповещения в Xamarin.iOS

С помощью iOS 12 приложения могут отправлять критические оповещения. Критические оповещения играют звук независимо от того, включена ли функция "Не беспокоить" или выключен переключатель звонка. Эти уведомления являются разрушительными и должны использоваться только в том случае, если пользователи должны принять немедленные меры.

Настраиваемое право на критическое оповещение

Для отображения критических оповещений в приложении сначала запросите пользовательские права на уведомления о критических оповещениях от Apple.

Получив это право от Apple и выполнив все связанные инструкции по настройке приложения для его использования, добавьте настраиваемое право на файлы приложения Propertiess.plist . Затем настройте параметры подписи пакета iOS, чтобы использовать entitlements.plist при подписи приложения на симуляторе и устройстве.

Запрос авторизации

Запрос авторизации уведомления приложения запрашивает у пользователя разрешение или запрет на уведомления приложения. Если запрос на авторизацию уведомления запрашивает разрешение на отправку критических оповещений, приложение также предоставит пользователю возможность принять критические оповещения.

Следующий код запрашивает разрешение на отправку как критических оповещений, так и стандартных уведомлений и звуков путем передачи соответствующих сведений UNAuthorizationOptionsзначения :RequestAuthorization

public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
    UNUserNotificationCenter center = UNUserNotificationCenter.Current;
    var options = UNAuthorizationOptions.Alert | UNAuthorizationOptions.Sound | UNAuthorizationOptions.CriticalAlert;
    center.RequestAuthorization(options, (bool success, NSError error) => {
        // ...
    );
    return true;
}

Локальные критические оповещения

Чтобы отправить локальное критическое оповещение, создайте UNMutableNotificationContent и задайте для его Sound свойства значение:

  • UNNotificationSound.DefaultCriticalSound, который использует звук уведомления по умолчанию.
  • UNNotificationSound.GetCriticalSound, который позволяет указать пользовательский звук, который упаковается с приложением и томом.

Затем создайте UNNotificationRequest содержимое уведомления и добавьте его в центр уведомлений:

var content = new UNMutableNotificationContent()
{
    Title = "Critical alert title",
    Body = "Text of the critical alert",
    CategoryIdentifier = "my-critical-alert-category",
    // Sound = UNNotificationSound.DefaultCriticalSound
    Sound = UNNotificationSound.GetCriticalSound("my_critical_sound.m4a", 1.0f)
};

var request = UNNotificationRequest.FromIdentifier(
    Guid.NewGuid().ToString(),
    content,
    UNTimeIntervalNotificationTrigger.CreateTrigger(3, false)
);

var center = UNUserNotificationCenter.Current;
center.AddNotificationRequest(request, null);

Внимание

Критически важные оповещения не будут доставлены, если они не включены для вашего приложения. Наряду с запросом, который отображается в первый раз, когда приложение запрашивает разрешение на отправку критических оповещений, пользователь также может включить или отключить критические оповещения в разделе уведомлений приложения iOS Параметры.

Удаленные критические оповещения

Дополнительные сведения о удаленных критических оповещениях см. в сеансе "Новые возможности уведомлений пользователей" из WWDC 2018 и в документе "Создание удаленного уведомления".