android - FCM : Invalid registration token. 检查 token 格式

标签 android firebase firebase-cloud-messaging

我正在实现 Firebase 云消息传递 (FCM),但遇到了一个我无法解决的问题。我已经根据指南实现了 FirebaseMessagingServiceFirebaseInstanceIdService。当我转到我的应用程序的 Firebase 控制台并使用通知功能时,我可以成功地向我的所有应用程序实例发送消息(使用包名称)。

现在,在代码中,我使用以下代码获取了 Firebase 实例 ID( token ):

    String token = FirebaseInstanceId.getInstance().getToken();
    SendFirebaseTokenToServer(token);

(注意目前我使用的是 HTTP 协议(protocol),因为我的服务器还没有证书)。无论如何使用我从上面的调用中获得的 token ,我返回到 Firebase 控制台并尝试向我的应用程序的一 (1) 个已安装实例发送消息。我从我们的服务器数据库中获取 token ,它存储为“varchar(max)”。当我这样做时,我收到以下错误消息:

Invalid registration token. Check the token format.

我用谷歌搜索了一下,只找到了一个(与 Firebase 和 iOS 有关):

http://stackoverflow.com/questions/41343520/ios-invalid-registration-token-check-the-token-format

该问题表明需要证书(我想我没看错)。我不确定我做错了什么。我需要先使用 Firebase 控制台让它工作,然后我的服务器人员可以在他知道它应该工作的情况下开始。

最佳答案

原来我在发送到我们的服务器之前以编程方式编码所有 POST 或 PUT 参数。 FCM token 中有一个分号,它被编码为“%3A”,似乎导致了问题。

不要对 FCM token 进行编码。

关于android - FCM : Invalid registration token. 检查 token 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43709408/

相关文章:

java - 如何在解析时存储日期和时间

ios - iPhone 应用程序在自动尝试登录已删除的帐户时崩溃

java - 设置带有推送的 key ,这样数据就不会被覆盖

android - Firebase Auth SignOut 不适用于卸载

firebase - iOS 上的 Flutter FCM 不调用 onMessage 和 onResume

android - 如何针对不同的android ABI选择不同的minSdkVersion?

java - 是否可以从Android sqlite 中的多个数据库中获取数据?或任何将数据插入数据库的快速方法?

Android:使用 Google Places API 查找附近的地点

ios - 在 Swift 中将数组发布到 firebase 数据库

使用 FCM 的 Android 通知 - 谁启动了 FirebaseMessagingService?