Критическое предупреждение iOS через FCM - PullRequest
0 голосов
/ 05 октября 2018

В iOS 12 добавлены критические оповещения.Полезная нагрузка APNS имеет звуковой словарь для поддержки критических оповещений.Существует ли эквивалентная поддержка звукового словаря в полезной нагрузке FCM для отправки уведомлений FCM на устройства iOS.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Отвечая на мой собственный вопрос.

Я должен был полагаться на расширение уведомлений, чтобы творить чудеса, поскольку полезная нагрузка FCM не поддерживает звуковой словарь iOS.Я отправляю «критический» флаг, установленный в 1, как часть полезной нагрузки данных FCM, и использую его в расширении уведомлений, чтобы пометить уведомление как критическое.

class NotificationService: UNNotificationServiceExtension {
    var contentHandler: ((UNNotificationContent) -> Void)?
    var bestAttemptContent: UNMutableNotificationContent?

    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
       self.contentHandler = contentHandler
       bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
       let userInfo: [AnyHashable : Any] = (bestAttemptContent?.userInfo)!
       if let apsInfo = userInfo["aps"] as? [AnyHashable: Any], let bestAttemptContent = bestAttemptContent, let critical =  userInfo["critical"] as? String, Int(critical)! == 1 {
            //critical alert try to change the sound if sound file is sent in notificaiton.
            if let sound = apsInfo["sound"] as? String {
                //sound file is present in notification. use it for critical alert..
                bestAttemptContent.sound =
                    UNNotificationSound.criticalSoundNamed(UNNotificationSoundName.init(sound),
                                                           withAudioVolume: 1.0)
            } else {
                //sound file not present in notifiation. use the default sound.
                bestAttemptContent.sound =
                                UNNotificationSound.defaultCriticalSound(withAudioVolume: 1.0)
            }
            contentHandler(bestAttemptContent)
        }
    }
}
0 голосов
/ 07 октября 2018

В настоящее время в FCM нет поддержки звукового словаря , что эквивалентно звуковому словарю iOS.Как я уверен, вы уже знаете, что аналог FCM с APN, когда дело доходит до звука , это параметр sound:

Звук, воспроизводимый при получении уведомления устройством.

Звуковые файлы могут находиться в основном комплекте клиентского приложения или в папке «Библиотека / Звуки» контейнера данных приложения.См. iOS Developer Library для получения дополнительной информации.

Однако, читая документы UNNotificationSound, возможно, вы можете попробовать добавить сообщение dataполезная нагрузка, содержащая идентификатор (например, "isCritical": "true"), затем приложение должно обрабатывать его по мере необходимости.

...