我怎样才能取消注册设备使用GCM [英] How Can I Unregister Device Using 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屋!