Я занимаюсь разработкой приложения. Я использую 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.