簡體   English   中英

卸載應用后,Google GCM不會返回錯誤代碼“ NotRegistered”

[英]Google GCM not returning error code “NotRegistered” when app was uninstalled

我目前正在使用GCM從我的第三方服務器通知500 000個唯一的android用戶。 幾個月來一切都很好。 似乎有些用戶正在卸載我的應用程序,並且gcm服務不能告訴我當前用戶不再使用該應用程序,而該應用程序帶有“ NotRegistered”錯誤代碼

例如:

  1. 我安裝了該應用程序,並將gcm_id發送到我的第三方服務器

  2. 我卸載了該應用程序

  3. 我嘗試從我的第三方服務器通過gcm將事件發送給應用:

 { "collapse_key" : "collapse_key_1", "data" : { "EVENT" : "{\\"myKey\\":\\"myValue\\"}" }, "time_to_live" : 30, "registration_ids" : ["APA91bFvdRWZimIXJMmIXvss1D-jRPQEg-1bTJ7w9LwOPNzMkSdI0UojnIjxkY8FMamrTUyBecZ2a44u1Fy1qKmcnSQLpxi2Nmw5hBUJdECXmh1jOXMW5dcXFF0OEdVLBvTLPro9ToxqrWsmq5GhtKP0BV1-HQOAQ"] } 

並得到響應:

{
    "multicast_id" : 5965047050545487565,
    "success" : 1,
    "failure" : 0,
    "canonical_ids" : 0,
    "results" : [{
            "message_id" : "0:1428954436986778%d127aaafb324bdbf"
        }
    ]
}

我應該從gcm收到一條失敗消息(帶有NotRegistered代碼),因為我卸載了該應用程序。

卸載了支持GCM的應用程序后,您將首次獲得成功。 正是在此回合中,客戶端通知GCM服務器該客戶端應用已卸載。 然后,服務器將將此特定注冊ID標記為刪除。

從GCM服務器中刪除可能要花一些時間,但以后的消息最終將返回NotRegistered 有關更多詳細信息,請參閱本節

卸載應用后,當GCM服務器嘗試將消息發送到設備時,GCM客戶端會檢測到該應用不再安裝在設備上。 您無需在應用程序代碼中執行此操作。 Android OS的GCM客戶端組件可以執行此操作。

下次嘗試將消息發送到已卸載該消息的設備上的應用程序時,GCM服務器將已經知道該消息已被卸載,並向您發送NotRegistered錯誤。

從設備中刪除應用程序后,不會調用任何生命周期方法。 如果存在,則您不需要上面引用的事件順序即可讓GCM服務器和第三方服務器檢測到該應用程序已卸載(因為您可以使用這種方法從GCM服務器,並讓第三方服務器知道該應用已從該設備上卸載)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM