为什么通过Firebase FCM从Web API推送针对特定iOS设备的通知无法到达?

时间:2018-01-11 02:12:28

标签: ios node.js apple-push-notifications firebase-cloud-messaging

我正在与远程Web API开发人员合作,目前我们正在努力将推送消息从服务器发送到iOS和Android设备。我们通过OAuth API发送设备令牌。 (对于iOS,设备令牌是通过在AppDelegate发布时使用APNS服务注册远程服务获得的)。奇怪的是,Android可以获得推送通知,但iOS设备不会。但是当我尝试使用Firebase控制台时 - >成长 - >通知 - >新消息 - >并且针对所有iOS设备,所有注册到推送通知的iOS设备都会收到推送通知。你能帮我指出问题出在哪里吗? Web服务器正在使用nodeJs。

我做过的事情,我按照tutorial完成的事情:

  • 在Firebase项目中创建新应用。
  • 向应用提供相同的产品包ID。
  • 将google plist导入Xcode项目。
  • 向应用程序提供开发和生产证书.p12。
  • 通过Cocoapods安装Firebase / Core和Firebase / Messaging。
  • 使用此代码注册远程通知(已在目标部署iOS版本9.0和10.0中尝试过,两者都产生相同的结果):
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    if #available(iOS 10.0, *) {
        // For iOS 10 display notification (sent via APNS)
        UNUserNotificationCenter.current().delegate = self
        let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
        UNUserNotificationCenter.current().requestAuthorization(
            options: authOptions,
            completionHandler: {_, _ in })
        // For iOS 10 data message (sent via FCM
        Messaging.messaging().delegate = self
    } else {
        let settings: UIUserNotificationSettings =
            UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
        application.registerUserNotificationSettings(settings)
    }

    application.registerForRemoteNotifications()

    FirebaseApp.configure()

    return true
}

从所有这些准备工作中,如果我在真实iOS设备中运行应用程序,然后将其锁定,我在Firebase iOS应用程序中向iOS设备广播的任何消息都将显示在锁定屏幕通知中。但不是来自网络API的消息指向应用程序中记录的帐户(指向使用该帐户登录的所有Android和iOS设备 - 它在Android设备上显示,但不适用于iOS设备。)

我是FCM的新手。我通常使用APNS。我可能不太了解修复服务器端的条款,因为我不太了解nodeJs,所以如果你对服务器端有一些建议,请详细说明,所以我可以用web API dev。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

原来我需要发送到服务器的不是APNS令牌,而是Firebase令牌,可在此处找到:

https://firebase.google.com/docs/cloud-messaging/ios/client#monitor-token-generation