我正在实施Firebase云消息传递(FCM),遇到了一个我无法解决的问题。我已根据指南实施了FirebaseMessagingService
和FirebaseInstanceIdService
。当我为我的应用程序访问Firebase控制台并使用通知功能时,我可以成功向所有应用程序实例发送消息(使用程序包名称)。
现在,在代码中,我使用以下代码获取了Firebase实例ID(令牌):
String token = FirebaseInstanceId.getInstance().getToken();
SendFirebaseTokenToServer(token);
(请注意,目前我正在使用HTTP协议,因为我的服务器还没有证书)。无论如何,使用我从上面的调用获得的令牌,我回到Firebase控制台并尝试向我的应用程序的一(1)个已安装实例发送消息。我从服务器DB中获取令牌,并将其存储为“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控制台才能使用它,然后我的服务器人就可以知道它应该可以工作了。
答案 0 :(得分:1)
原来我在发送到我们的服务器之前以编程方式编码所有POST或PUT参数。 FCM令牌中有一个分号,它被编码为“%3A”,似乎导致了问题。
不要对FCM令牌进行编码。