我有一些Android手机。我正在使用Python中的boto将消息通过Amazon SNS推送到GCM。一部手机始终收到消息。另一个没有。
我第一次向问题手机发送消息时,似乎成功但没有任何消息通过。当我转到AWS控制台并查看注册到我的应用程序的端点列表时,它现在显示" false"在Enabled列下。
第二次发送消息时,boto引发了一个异常,其中包含一条消息:" Endpoint is Disabled"
Android手机无法接收GCM消息的原因是什么?是否有用户设置可以禁用此功能?
答案 0 :(得分:0)
可能你已经明白了,但是,我发布了答案以备将来使用。 This is围绕这一主题撰写了一篇很好的文章,并提出了解决问题的一些可能性。
根据您的解释,我认为Android手机的令牌已过期,需要重新注册GCM,然后应更新SNS端点。
答案 1 :(得分:0)
令牌可能已过期,或者可能已从应用的存储中清除。在Android应用中,创建一个扩展FirebaseInstanceIdService并覆盖此功能的类:
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
// If you want to send messages to this application instance or
// manage this apps subscriptions on the server side, send the
// Instance ID token to your app server.
sendRegistrationToServer(refreshedToken);
}
还可以创建自己的sendRegistrationToServer。在后端,实现一个接收令牌并将其分配给该端点的ARN的函数。这样,您的后端将始终知道将通知发送到何处。