每当GCMRegistrar.register(context,sender_id)时都会触发一个回调函数;它起作用了吗?

时间:2013-07-15 23:05:36

标签: android push-notification registration google-cloud-messaging

我正在尝试注册GCM。

我首先检查我的getRegistrationID是否返回null,当它发生时,我正在调用GCMRegistrar.register(context,sender_id)。

事情是,一旦注册完成,

protected void onRegistered(Context context, String registrationId)

正在进行GCMIntentService类中的caled。

由于注册过程是通过单独的asynctask(或任何其他后台进程)发生的,我知道在此之后立即调用getRegistrationID有时可能会返回null,因为注册过程仍然无法结束。

我需要尽快使用regId,并且我将使用它们作为POST参数发送到服务器。

我遇到的情况是用户可能会在注册结束前快速点击POST按钮,我会得到一个null而不是一个值。

你如何解决这个问题? (我知道一种解决方法是发出一条消息,告诉用户一段时间后再试一次)。 想法?

1 个答案:

答案 0 :(得分:1)

您可以使用新的API - GoogleCloudMessaging类的注册方法。这是推荐的实现(GCMRegistrar已弃用)。此方法是阻塞的,因此您无法在主线程中调用它。您可以在AsyncTask中调用它。

请参阅新的GCM Demo以获取代码示例。