我正在实现 Firebase 云消息传递 (FCM),但遇到了一个我无法解决的问题。我已经根据指南实现了 FirebaseMessagingService
和 FirebaseInstanceIdService
。当我转到我的应用程序的 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/