首页 > 解决方案 > 如何使用 PHP (web) 检索设备注册 ID 以避免 MismatchSenderId?

问题描述

这是我在 phonegap 上的应用程序上获取注册 ID 的代码。注册ID总是成功获取的。

const push = PushNotification.init({

    android: {
    },
    browser: {
        pushServiceURL: 'http://push.api.phonegap.com/v1/push'
    },
    ios: {
        alert: "true",
        badge: "true",
        sound: "true"
    },
    windows: {}

});

push.on('registration', function ( data ) {

    recordRegistrationID( data.registrationId ); //Pseudo

});

push.on('notification', function ( data ) {

    // data.message,
    // data.title,
    // data.count,
    // data.sound,
    // data.image,
    // data.additionalData

});

push.on('error', (e) => {

    // e.message

});

然后,我尝试通过将其卷曲到 Firebase Cloud Messaging API,使用存储的注册 ID 从我的 PHP 服务器(example.com)向该设备发送推送通知,它始终返回 MismatchSenderId。

{"multicast_id":6660509895358893455,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}

我已经尝试编译 .APK 并在我的移动设备上运行它。我总是成功获得令牌,但消息永远无法发送到 PhoneGap 应用程序检索到的注册 ID。

做更多的研究,似乎是因为PhoneGap实际上检索了注册ID,但它与PhoneGap本身作为发件人相关联,因此其他发件人将无法工作。

我是否正确假设这一点?如果是这种情况,如何使用 PHP 而不是 PhoneGap 获取 Firebase Cloud Messaging 的注册 ID?

谢谢你。

标签: phpfirebasefirebase-cloud-messagingphonegap

解决方案


做更多的研究,似乎是因为PhoneGap实际上检索了注册ID,但它与PhoneGap本身作为发件人相关联,因此其他发件人将无法工作。

这似乎是一种奇怪的行为。生成的令牌与应用实例Firebase 项目相关联。你能提供提到这个的链接吗?将关联的令牌更改为不同的发件人根本没有意义。

话虽如此,目前无法从您的后端获取注册令牌。正如我上面提到的,令牌与应用程序实例相关联,因此它只能在客户端应用程序端生成。


推荐阅读