FCM pu sh уведомления от topi c iOS - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь использовать консоль Firebase FCM для отправки уведомления всем подписчикам определенного топи c. проблема в том, что я получаю уведомление только на одном устройстве, вот мой код в делегате приложения:

      FirebaseApp.configure()
      let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
      UNUserNotificationCenter.current().requestAuthorization(
        options: authOptions,
        completionHandler: {_, _ in })

    application.registerForRemoteNotifications()
    UNUserNotificationCenter.current().delegate = self
    Messaging.messaging().delegate = self
    return true
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {

    let dataDict:[String: String] = ["token": fcmToken]
    NotificationCenter.default.post(name: Notification.Name("FCMToken"), object: nil, userInfo: dataDict)
    InstanceID.instanceID().instanceID { (result, error) in
      if let error = error {
        print("Error fetching remote instance ID: \(error)")
      } else if let result = result {
        print("Remote instance ID token: \(result.token)")
        DispatchQueue.main.async {
            Messaging.messaging().subscribe(toTopic: "Athan") { error in
              print("Subscribed to athan topic")
            }
        }

      }
    }
}
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
  if let messageID = userInfo[gcmMessageIDKey] {
    print("Message ID: \(messageID)")
  }
  print(userInfo)
}

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any],
                     fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
      if let messageID = userInfo[gcmMessageIDKey] {
        print("Message ID: \(messageID)")
      }
        if let message : [String : Any] = userInfo["aps"] as? [String : Any]{
            print(message,"test",userInfo)
            if let messageAlert : [String : Any] = message["alert"] as? [String : Any]{
                if let lBody : String = messageAlert["body"] as? String, let lTitle : String = messageAlert["title"] as? String{
                    print (lBody,lTitle)
                    if lTitle == "Notification" && lBody.contains("Your daily verse is here") {
                    }
                }

            }
        }
      let sName = userInfo["sound"] as? String
        if sName == "athan.caf"{
            let url = URL(fileURLWithPath: "\(Bundle.main.resourcePath!)/\(sName ?? "")")
            audioPlayer = try? AVAudioPlayer(contentsOf: url)
            audioPlayer?.numberOfLoops = 0
            audioPlayer?.play()
        }
      completionHandler(UIBackgroundFetchResult.newData)
    }

как я могу убедиться, что все подписчики моего topi c получают эти уведомления pu sh ? Что мне нужно сделать с токеном устройства и отправить его в консоль Firebase FCM?

...