1

我正在尝试注册 GCM。

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

问题是,一旦注册完成,

protected void onRegistered(Context context, String registrationId)

正在 GCMIntentService 类中调用。

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

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

我陷入了这样一种情况,即用户可能会在注册结束之前快速单击 POST 按钮,我将得到一个 null 而不是一个值。

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

4

1 回答 1

1

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

有关代码示例,请参阅新的GCM 演示

于 2013-07-16T00:43:38.213 回答