我正在開發的Android應用中使用基於GCM的主題消息。 它工作正常,但我想給用戶停止接收推送消息的選項。 當然,從應用程序設置禁用通知將工作,但我想讓用戶禁用/啓用應用程序的推送消息。適用於Android的GCM - 無法退訂主題
所以我使用了以下嘗試從主題的訂閱(上按一下按鈕):
GcmPubSub pubSub = GcmPubSub.getInstance(this);
try{pubSub.unsubscribe(MyRegistrationToken,"MyTopic");}
catch(Exception e){e.printStackTrace();}
,還要確保訂閱了該主題的後臺服務將無法取消訂閱的同時運行。然而,它似乎沒有工作,因爲我仍然在取消訂閱上述代碼後收到推送消息。我是否做錯了什麼或缺少什麼?
我找到了一個解決方法(只是不顯示通知,而不退訂),但想實際取消訂閱,以便服務器停止發送推送消息到設備。
任何幫助將不勝感激!
編輯:
使用8.3.0現在,沒有任何difference.Let我張貼了我的全部代碼訂閱&退訂,如果這會幫助你一些啓發: 使用意向的服務訂閱如下:
try {
InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
GcmPubSub pubSub = GcmPubSub.getInstance(this);
pubSub.subscribe(token, "/topics/MyTopic", null);
} catch (Exception e) {
e.printStackTrace();
}
從活動退訂上的按鈕的點擊如下:
try {
InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
GcmPubSub pubSub = GcmPubSub.getInstance(this);
pubSub.unsubscribe(token, "/topics/MyTopic");
Toast.makeText(this, "Successfully unsubscribed.", Toast.LENGTH_SHORT).show();
finish();
} catch(Exception e) {
e.printStackTrace();
Toast.makeText(this, "Unable to unsubscribe..", Toast.LENGTH_SHORT).show();
finish();
}
在BU tton也退出該活動。我甚至嘗試保存註冊令牌(在共享首選項中),同時註冊並使用它來取消訂閱,以防產生新的實例ID導致問題。但是不管怎麼樣,只要按一下按鈕,它就會進入catch塊。 點擊退訂按鈕後,確保註冊意向不起作用,因此我無法看到它是如何重新註冊的。它似乎並未成功取消訂閱。
謝謝!
那怎麼Iv'e做到了: – CoolCommando
嘗試{pubSub.unsubscribe(MyRegistrationToken,「/主題/ MyTopic」);} – CoolCommando
對不起,我無法重現這個,要麼你重新訂閱該主題的地方或取消訂閱在您的設備/仿真器上無法正常工作。我只能建議您確保使用最新版本的Google Play Services play-services-gcm:8.3.0 –