2015-07-02 46 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

把代码请 –