One Signal тихие уведомления во флаттере - PullRequest
0 голосов
/ 09 апреля 2020

Я реализовал тихие уведомления для обеих платформ. Основываясь на документации OneSignal, в Android мне пришлось добавить класс NotificationServiceExtender, а в IOS мне нужно было только отправить из REST API content_available: true

Обычные уведомления работают на обеих платформах, но в режиме без вывода сообщений IOS не запускаются:

   OneSignal.shared
        .setNotificationReceivedHandler((OSNotification notification) async {
     print(notification);
}

В AppDelegate я сделал тест, если что-то возвращается из OneSignal, и кажется, что данные возвращаются:

  override func application(_ application: UIApplication, didReceiveRemoteNotification 
userInfo: [AnyHashable : Any]) {
 print(userInfo)
    } 

Я не Не знаю, есть ли другой метод на FLutter от OneSignal, который может быть запущен, или я должен сделать канал для IOS и получить данные. Это может осложнить ситуацию.

Также я должен отметить, что Silent Notification работают на Android устройствах.

Пакет: onesignal_flutter: ^2.0.0

1 Ответ

0 голосов
/ 24 апреля 2020

Я не нашел способа напрямую получить полученное уведомление. Поэтому я создал канал Flutter to Native IOS, из которого я мог бы извлечь данные.

override func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
    var notificationData:NSMutableDictionary
    var isAppInFocus: Bool = false

                   if let custom = userInfo["custom"] as? NSDictionary {
                        if let data = custom["a"] as? NSDictionary {
                            notificationData = data.mutableCopy() as! NSMutableDictionary

                            if(data["category"] as? String == "MESSAGESTATUS"){
                                notificationChannel.invokeMethod("getSilentLastSeenMessage", arguments: notificationData)
                            }

                    }}
    }

}

...