我怎样才能取消注册设备使用GCM [英] How Can I Unregister Device Using GCM

查看:312
本文介绍了我怎样才能取消注册设备使用GCM的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经尝试通过GCM使用这种code到注销设备:

I've try to Unregister device by gcm using this Code :

 btn = (Button)findViewById(R.id.button1);

 btn.setOnClickListener(new View.OnClickListener() {            
    @Override
    public void onClick(View v) {
         GCMRegistrar.unregister(MainActivity.this);
    }
});

知识,我使用的onCreate()此方法code ...
但是当我尝试发送一个通知到的DeviceID 的通知到达
这意味着注销过程中没有成功。

with knowledge that i used this code in onCreate() Method ... but when i try send a notification to the DeviceID the notification Arrives that mean the Unregister process didn't success

我的的onCreate()

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    GCMRegistrar.checkDevice(this);
    GCMRegistrar.checkManifest(this);
    txt = (TextView)findViewById(R.id.txt_nn);
    final String regId = GCMRegistrar.getRegistrationId(this);
    if (regId.equals(""))
    {
      GCMRegistrar.register(this, "344XXXXXXX571");
    }
    else
    {
      Log.v("Info : ", "Already registered");
    }

     txt.setText(regId);    

     btn = (Button)findViewById(R.id.button1);

     btn.setOnClickListener(new View.OnClickListener() {            
        @Override
        public void onClick(View v) {
             GCMRegistrar.unregister(MainActivity.this);
        }
    });  
}

我的LogCat中

My LogCat

12-25 17:16:31.290: E/Trace(18754): error opening trace file: No such file or directory (2)
12-25 17:16:31.425: V/Info :(18754): Already registered
12-25 17:16:31.485: D/libEGL(18754): loaded /system/lib/egl/libEGL_mali.so
12-25 17:16:31.490: D/libEGL(18754): loaded /system/lib/egl/libGLESv1_CM_mali.so
12-25 17:16:31.495: D/libEGL(18754): loaded /system/lib/egl/libGLESv2_mali.so
12-25 17:16:31.500: D/(18754): Device driver API match
12-25 17:16:31.500: D/(18754): Device driver API version: 10
12-25 17:16:31.500: D/(18754): User space API version: 10 
12-25 17:16:31.500: D/(18754): mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Wed Sep 12 17:53:53 KST 2012 
12-25 17:16:31.540: D/OpenGLRenderer(18754): Enabling debug mode 0
12-25 17:16:43.015: D/GestureDetector(18754): [Surface Touch Event] mSweepDown False, mLRSDCnt : -1 mTouchCnt : 2 mFalseSizeCnt:0
12-25 17:16:43.020: D/GCMRegistrar(18754): resetting backoff for com.example.test09_gsm
12-25 17:16:43.020: V/GCMRegistrar(18754): Unregistering app com.example.test09_gsm
12-25 17:16:46.865: V/GCMBroadcastReceiver(18754): onReceive: com.google.android.c2dm.intent.REGISTRATION
12-25 17:16:46.865: V/GCMBroadcastReceiver(18754): GCM IntentService class: com.example.test09_gsm.GCMIntentService
12-25 17:16:46.870: V/GCMBaseIntentService(18754): Acquiring wakelock
12-25 17:16:46.895: V/GCMBaseIntentService(18754): Intent service name: GCMIntentService-IntentService-1
12-25 17:16:46.895: E/GCMRegistrar(18754): internal error: retry receiver class not set yet
12-25 17:16:46.895: V/GCMRegistrar(18754): Registering receiver
12-25 17:16:46.895: D/GCMBaseIntentService(18754): handleRegistration: registrationId = null, error = null, unregistered = com.example.test09_gsm
12-25 17:16:46.895: D/GCMRegistrar(18754): resetting backoff for com.example.test09_gsm
12-25 17:16:46.895: V/GCMRegistrar(18754): Saving regId on app version 1
12-25 17:16:46.940: D/onUnregistered(18754): APA91bFrB0pJOQqq7MxSe-so7fbqh70jLpX6bRrcRIdW6py1EuxletPfGr5ZlkytrenbdnJskdWXckjIcHWsvtKXppZ1PsMbhfkzIc9BmX26brIVDTCRSXPey7POA3UqP6EexMD4w_plFQkVy-9pacCqbBfV0k91dQ
12-25 17:16:46.940: V/GCMBaseIntentService(18754): Releasing wakelock

请你能帮我注销的GCM设备
并没有收到通知,未来

please can you help me to unregister the device on GCM and don't receive the future notification

在此先感谢

推荐答案

检查是否要注册接收器来处理您的GCM消息。检查 mHandleMessageReceiver 。的我假设你正在使用的文件中给出的相同code。

Check if you are registering receiver to handle your GCM messages. Check mHandleMessageReceiver. I am assuming that you are using the same code as given in documentation.

但是,如果你不想来处理未注册的消息
转到 GCMIntentService 类,看看onUnregistered方法。删除 displayMessage()作为我评论就行了。

But if you don't want to handle unregistered message Goto GCMIntentService class and see onUnregistered method. Remove displayMessage() as I commented the line.

 @Override
    protected void onUnregistered(Context context, String registrationId) {
        Log.i(TAG, "Device unregistered");
        //displayMessage(context, getString(R.string.gcm_unregistered));
        if (GCMRegistrar.isRegisteredOnServer(context)) {
            ServerUtilities.unregister(context, registrationId);
        } else {
            // This callback results from the call to unregister made on
            // ServerUtilities when the registration to the server failed.
            Log.i(TAG, "Ignoring unregister callback");
        }
    }

这会做你的任务。

快乐编码:)

这篇关于我怎样才能取消注册设备使用GCM的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆