2015-07-02 61 views
0

我正在開發一個Android應用程序並使用Parse推送通知。目前我在註冊新設備時遇到問題。我使用下面的代碼在Parse服務器上的特定頻道上訂閱我的Android手機。無法訂閱從Android設備解析頻道

final String channel = "myapp_" + userId; 
ParsePush.subscribeInBackground(channel, new SaveCallback() { 
    @Override 
    public void done(ParseException e) { 
     if (e != null) { 
      e.printStackTrace(); 
      ParsePush.subscribeInBackground(channel, new SaveCallback() { 
       @Override 
       public void done(ParseException e) { 
        Log.e("Subscribe", e == null ? "Success" : "Failure"); 
       } 
      }); 
     } else { 
      Log.e("Subscribe", "Success"); 
     } 
    } 
}); 

我對這個奇怪的問題:
該設備可以註冊安裝的應用程序到手機後,解析爲第1時間(我的設備已經訂閱的頻道成功),但GCM不返回設備令牌。即使等了很長時間,但沒有什麼好結果。除非我退出並重新打開應用程序,否則GCM會返回設備令牌。我不知道他們之間的區別在哪裏:第一次使用應用程序vs重新打開應用程序。 有沒有人有這個問題?你能給我任何解決這個問題的建議嗎?

+0

爲什麼在第一次沒有保存設備令牌... – koutuk

+0

@koutuk:我以前曾經使用Parse很多次,並且自從我註冊設備幾分鐘後,他們總是從GCM獲取deviceToken 。但這一次不是,儘管一切都是一樣的。 我知道我們可以在客戶端以編程方式創建一個令牌,但這與我們在整個應用程序中的一般解決方案不一致,而且風險更大。 –

回答

0

我找到了原因:解析註冊必須在onCreate的基礎Application類的行動。然後deviceToken將在Parse服務器上正常檢索。

+0

把代碼請 –