为啥没有通过 Firebase FCM 从 Web API 定向到特定 iOS 设备的推送通知?

Posted

技术标签:

【中文标题】为啥没有通过 Firebase FCM 从 Web API 定向到特定 iOS 设备的推送通知?【英文标题】:Why push notification directed to specific iOS device from Web API through Firebase FCM does not arrive?为什么没有通过 Firebase FCM 从 Web API 定向到特定 iOS 设备的推送通知? 【发布时间】:2018-01-11 02:12:28 【问题描述】:

我正在与远程 Web API 开发人员合作,目前我们正在努力将推送消息从服务器发送到 iosandroid 设备。我们通过 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 设备广播的任何消息都将显示在锁定屏幕通知中。但不是来自 Web API 的消息指向登录应用程序的帐户(该消息指向使用该帐户登录的所有 android 和 iOS 设备——它显示在 android 设备上,但不显示在 iOS 设备上)。

我是 FCM 的新手。我通常使用APNS。我可能不太了解修复服务器端的术语,因为我不太了解 nodeJs,所以如果您对服务器端有一些建议,请详细说明,以便我可以与 Web API 开发人员讨论。感谢您的帮助。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于为啥没有通过 Firebase FCM 从 Web API 定向到特定 iOS 设备的推送通知?的主要内容,如果未能解决你的问题,请参考以下文章

为啥调用firebase函数时会出现FCM错误

FCM - 为啥在较新的 Firebase Admin SDK 中不再支持 FCM 直接通道?

如何从网络向应用发送 FCM 通知

使用 Firebase (FCM) 的丰富通知

如何在没有 Firebase SDK(即通过 REST)的情况下生成 FCM 注册令牌?

Firebase FCM - 为啥会收到:有效负载错误,无效的“android”(或“apns”)属性