2014-07-10 88 views
1

我有一些Android手機。我使用Python中的boto將消息通過Amazon SNS推送給GCM。一部電話總是收到消息。另一個沒有。Android手機將不會收到SNS推送通知

我第一次給有問題的手機發送信息時,它似乎成功了,但沒有任何結果。當我轉到AWS控制檯並查看註冊到我的應用程序的端點列表時,它現在在「已啓用」列下顯示「false」。

我第二次發送郵件,博託提出了在它的消息的異常:「端點已禁用」

原因有哪些,爲什麼Android手機將無法接收GCM消息?有沒有可以禁用此功能的用戶設置?

回答

0

可能你想通了,但是,我發佈答案供將來使用。 This is圍繞這個話題的一篇很好的文章,並且解決了關於這個問題的一些可能性。

根據您的解釋,我認爲android手機的令牌已過期,需要使用GCM重新註冊,然後應更新SNS端點。

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的函數。這樣,您的後端將始終知道發送通知的位置。