android - 每当 GCMRegistrar.register(context, sender_id); 时是否会触发回调?它工作吗?

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

我正在尝试注册 GCM。

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

事情是,一旦注册完成,

protected void onRegistered(Context context, String registrationId)

正在 GCMIntentService 类中进行校准。

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

我需要尽快使用 regId 并从我的同一个 Activity 中使用它们作为 POST 参数发送到服务器。

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

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

最佳答案

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

查看新GCM Demo获取代码示例。

关于android - 每当 GCMRegistrar.register(context, sender_id); 时是否会触发回调?它工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17665381/

相关文章:

php - Facebook 注册连接

swift - (Xcode 6 Swift Language)保存用户数据(用户名、用户电子邮件、用户密码)并将其发送到数据库

registration - 我们为什么要发送确认电子邮件?

Android 应用内购买用户标识

android - 如何从 ListView 中获取值并将 JSON 数据传递给另一个 Activity

iphone - 在动画 ViewController 转换期间将 ViewController 推送到 UINavigationController

iOS:推送通知、UIApplicationStateInactive 和快速应用切换

Android数据绑定(bind)问题: Missing return statement in generated code while using with a custom view?

Android Studio 无法解析方法 requestLocationUpdates FusedLocationProviderAPI

android - 从通知导航到父 Activity