android - 注册 - 从 Android GCM 中注销设备

标签 android google-cloud-messaging

我正在尝试向我的应用程序添加推送通知功能,但我遇到了奇怪的问题。

在我的第一次尝试中,我获得了设备的 regId;但在该设备试图从 GCM 自行取消注册之后;实际上它成功了,因为我丢失了 regId 但不是我无法再次获得它。

在 LogCat 中我看到了这些行。

07-12 08:40:25.615: V/GCMRegistrar(10648): Registering receiver
07-12 08:40:25.620: D/GCMRegistrar(10648): resetting backoff for PACKAGENAME
07-12 08:40:25.635: V/GCMRegistrar(10648): Unregistering app PACKAGENAME
07-12 08:40:28.570: D/GCMRegistrar(10648): resetting backoff for PACKAGENAME
07-12 08:40:28.570: V/GCMRegistrar(10648): Unregistering app PACKAGENAME
07-12 08:40:29.125: D/GCMRegistrar(10648): resetting backoff for PACKAGENAME
07-12 08:40:29.130: V/GCMRegistrar(10648): Unregistering app PACKAGENAME
07-12 08:40:39.655: D/GCMRegistrar(10648): resetting backoff for PACKAGENAME
07-12 08:40:39.660: V/GCMRegistrar(10648): Unregistering app PACKAGENAME
07-12 08:40:40.605: D/GCMRegistrar(10648): resetting backoff for PACKAGENAME
07-12 08:40:40.605: V/GCMRegistrar(10648): Unregistering app PACKAGENAME
07-12 08:40:41.350: D/GCMRegistrar(10648): resetting backoff for PACKAGENAME
07-12 08:40:41.350: V/GCMRegistrar(10648): Unregistering app PACKAGENAME
07-12 08:40:43.255: D/GCMRegistrar(10648): resetting backoff for PACKAGENAME
07-12 08:40:43.255: V/GCMRegistrar(10648): Unregistering app PACKAGENAME

我试图在我的应用程序中实现 GCM 演示应用程序的代码,所以这里是代码。

GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);

registerReceiver(mHandleMessageReceiver, new IntentFilter(DISPLAY_MESSAGE_ACTION));
final String regId = GCMRegistrar.getRegistrationId(this);

if (regId.equals("")) {
    // Automatically registers application on
    // startup.
    GCMRegistrar.register(this, SENDER_ID);
} else {
    Log.v(TAG, "Already registered");
    // Device is already registered on GCM, needs to
    // check if it is
    // registered on our server as well.
    if (!GCMRegistrar.isRegisteredOnServer(this)) {
        // Try to register again, but not in the UI
        // thread.
        // It's also necessary to cancel the thread
        // onDestroy(),
        // hence the use of AsyncTask instead of a
        // raw thread.
        final Context context = this;
        mRegisterTask = new AsyncTask<Void, Void, Void>() {
            mRegisterTask.execute(null, null, null);
        }
    }
}

最佳答案

我发现了我的问题,这都是我的错和愚蠢。

我被添加了 GCMRegistrar.unregister () 代码到 Evaluations;所以调试的每一步都会导致重新评估此代码并调用注销。

我不想删除它,可能有像我这样的人;)

关于android - 注册 - 从 Android GCM 中注销设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11445687/

相关文章:

Android webView : check internet connectivity, 持续,直到加载 HTML

java - 如何正确更新 firebase-realtime-database 中的对象?

java - 计算 SHA-256 哈希时前导零

android - 卸载应用程序时 GCM 未注销设备

php - Chrome 错误 500 的谷歌云消息传递

android - 导入现有的 Android 项目,eclipse 弹出错误消息

android - 功能挂起UI

Android - 解析与 .getInstallationId() 中的 deviceToken 不同的 deviceToken;

ios - 没有收到推送通知(并且没有故障排除想法)

android - 如何将 GCM 注册 ID 唯一存储到 MySQL 中