我正在尝试注册GCM。
我首先检查我的getRegistrationID是否返回null,当它发生时,我正在调用GCMRegistrar.register(context,sender_id)。
事情是,一旦注册完成,
protected void onRegistered(Context context, String registrationId)
正在进行GCMIntentService类中的caled。
由于注册过程是通过单独的asynctask(或任何其他后台进程)发生的,我知道在此之后立即调用getRegistrationID有时可能会返回null,因为注册过程仍然无法结束。
我需要尽快使用regId,并且我将使用它们作为POST参数发送到服务器。
我遇到的情况是用户可能会在注册结束前快速点击POST按钮,我会得到一个null而不是一个值。
你如何解决这个问题? (我知道一种解决方法是发出一条消息,告诉用户一段时间后再试一次)。 想法?
答案 0 :(得分:1)
您可以使用新的API - GoogleCloudMessaging类的注册方法。这是推荐的实现(GCMRegistrar已弃用)。此方法是阻塞的,因此您无法在主线程中调用它。您可以在AsyncTask中调用它。
请参阅新的GCM Demo以获取代码示例。