Реализация FCM в iOS и Android - PullRequest
       6

Реализация FCM в iOS и Android

0 голосов
/ 08 октября 2019

Я занимаюсь разработкой приложения. Я использую FCM в этом. Я сделал работу с FCM в Android. Сейчас я работаю над iOS-версией того же приложения.

Я отправляю подписку с моего сервера, используя this API

{
    "message": 
 {
    "token":"57e4f5984b5b42d34710c26a...16fe0b4bf25f49eec106bc6",

    "notification":{
    "title":"Tusday",
    "body":"Testing on 9:55 AM"

     }
   }
 }

Теперь, это то же самое, что я хочу показать с обеих сторон, Android делаетполучить его, но в iOS я не могу получить его в любом случае.

Вот некоторые из моих недоразумений:

FCM Регистрационный токен VS Device Token, который необходимо отправить на сервер, который должен использовать его для отправки уведомленияна устройство iOS

В андроиде onTokenRefresh - единственный метод, с помощью которого мы можем получить токен и отправить его на сервер приложений, но в iOS есть 2 разных метода, и мы можем получить два типа токенов. Токен APNs и токен регистрации. но я верю, что следующий метод возвращает токен регистрации FCM

  func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {

    print(fcmToken)

}

Я хочу знать, какой токен необходимо отправить на сервер приложений?

Реализация кода

Я просто печатаю во всех методах FCM, но ни один из них не работает, либо я в фоновом режиме, либо в режиме переднего плана

extension AppDelegate: UNUserNotificationCenterDelegate {

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
    print("Did Receive")
    completionHandler()
}

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    print("Will Present")
}

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
    print("Did Receive remote notification")
}


func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    print("Did Receive device token")
}

func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {

}

/// Register for push notifications
func registerForPushNotification(){

    if #available(iOS 10.0, *) {
        let center  = UNUserNotificationCenter.current()
        center.delegate = self
        center.requestAuthorization(options: [.sound, .alert, .badge]) { (granted, error) in
            if error == nil{
                DispatchQueue.main.async {
                    UIApplication.shared.registerForRemoteNotifications()
                }
            }
        }
    } else {

        let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
        UIApplication.shared.registerUserNotificationSettings(settings)
        UIApplication.shared.registerForRemoteNotifications()
    }
}

}

Чего не хватает на стороне сервера? как я уже говорил выше, я посылаю ту же полезную нагрузку на android и iOS, как показано выше, тогда почему она не отправляется. Я попытался отправить его с помощью вышеупомянутого API-интерфейса fcm.

Чего мне не хватает? Почему он отправляется, когда я отправляю его с консоли? Я проверил Идентификатор отправителя и Ключ сервера все одинаковые. В чем может быть проблема? Я что-то упустил на iOS или это ошибка сервера?

Примечание: на стороне сервера я вижу, что сообщение успешно отправлено, но никогда не отображается на стороне iOS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...