2015-11-10 64 views
2

我在我的應用上實施GCM服務,但我有一些疑惑。當用戶第一次安裝並打開我的應用程序時,它會給他一個令牌來接收通知,並將其保存在我的網站的數據庫中。當用戶決定卸載我的應用程序時,我認爲該令牌不再有用,所以我想知道是否可以知道已過期的令牌並將其從數據庫中刪除。gcm的過期令牌

回答

1

當您的應用服務器向GCM服務器發送消息時,嘗試聯繫您的應用已被卸載的客戶端,它(GCM服務器)應返回NotRegistered Error。所以應用服務器應該從數據庫中刪除令牌。

通常(它實際上取決於客戶端平臺)when the app is unistalled, what happens is

  1. 最終用戶卸載客戶端應用程序。
  2. 應用程序服務器向GCM連接服務器發送消息。
  3. GCM連接服務器將消息發送到設備上的GCM客戶端。
  4. 設備上的GCM客戶端收到消息並檢測到客戶端應用程序已被卸載;檢測細節取決於運行客戶端應用程序的平臺 。
  5. 設備上的GCM客戶端通知GCM連接服務器客戶端應用程序已被卸載。
  6. GCM連接服務器將註冊標記標記爲刪除。
  7. 應用服務器向GCM發送消息。
  8. GCM嚮應用服務器返回NotRegistered錯誤消息。
  9. 應用服務器應刪除註冊令牌。

這意味着,如果沒有人試圖將消息發送到您的客戶端(誰unistalled的應用程序中的一個),你應該永遠無法理解,如果仍然使用令牌。

如果你對於刪除所有未使用的令牌非常重要,恕我直言,你可以解決這個問題,創建一個從你的應用服務器觸發(例如每月一次)的測試消息:這應該引導你到第2點。