Firebase 推送通知不适用于单个设备 ios 但适用于用户群

Firebase push notifcation not working on single device ios but works for user segment

我正在使用 firebase 进行推送通知并使用 ionic/capacitor 开发移动应用程序。我注册推送通知并取回这样的令牌...

PushNotifications.requestPermission().then( result => {
  if (result.granted) {
    PushNotifications.register();
  }
});

PushNotifications.addListener('registration',
  (token: PushNotificationToken) => {
    alert('Push registration success, token: ' + token.value);
    console.log(token.value);
  }
);

在 firebase 控制台中,当我在用户群中定位我的应用程序时,我可以成功发送和接收通知,但是当我尝试通过使用发送测试消息复制和粘贴令牌来定位单个设备时,我没有收到推送通知。注意:这对我来说在 Android.

上很好用

令牌看起来像这样... BAAEF129E8F596F1305D0FEA2F50E21B2768FEFCA83CF19602CA0183077E441D

Capacitor 使用 APNS 进行推送,您获得的令牌是 APNS 令牌,而这些令牌不适用于 FCM。 不确定您是如何将 FCM 集成到 Capacitor 中的,但是您应该将 APNS 令牌转换为 FCM 令牌。

是这样的

    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        Messaging.messaging().apnsToken = deviceToken
        InstanceID.instanceID().instanceID { (result, error) in
            if let error = error {
                NotificationCenter.default.post(name: Notification.Name(CAPNotifications.DidFailToRegisterForRemoteNotificationsWithError.name()), object: error)
            } else if let result = result {
                NotificationCenter.default.post(name: Notification.Name(CAPNotifications.DidRegisterForRemoteNotificationsWithDeviceToken.name()), object: result.token)
            }
        }
    }

有关如何将 FCM 集成到电容器中的更多信息,您可以查看this guide