8

新しい Google クラウド メッセージングを使用しています

(GoogleCloudMessaging gcm =
           GoogleCloudMessaging.getInstance (context);)

私はこの例に従っています。これは非常に優れており、完全に機能します。

https://github.com/commonsguy/cw-omnibus/tree/master/Push/GCMClient2

この例では、GCM に登録できますが、登録を解除しようとして失敗しました。

ドキュメントでは、次の意図を使用する必要があることを示しています。

com.google.android.c2dm.intent.UNREGISTER

そして、次のように使用します。

    

 Intent unregIntent = new Intent ("com.google.android.c2dm.intent.UNREGISTER");
     unregIntent.putExtra ("app", PendingIntent.getBroadcast (this, 0, new Intent (), 0));
     StartService (unregIntent);

動作していません...

私が言ったように、登録は正常に機能しますが、登録を解除する方法がわかりません。

私は意図以上のことをしなければなりませんか?私は何を間違っていますか?

どんな助けにも感謝します

感謝と敬意

4

3 に答える 3

16

新しいクラスを使用している場合は、インテントGoogleCloudMessagingを使用する必要はありません。GoogleCloudMessaging.unregister()com.google.android.c2dm.intent.UNREGISTERを使用するだけです。

public void unregister ()

アプリケーションを登録解除します。unregister() を呼び出すと、サーバーからのメッセージが停止します。これはブロッキング呼び出しです。UI スレッドから呼び出すべきではありません。このメソッドを呼び出す必要はほとんどありません。リソースの面でコストがかかるだけでなく、不必要に変更してはならない登録 ID が無効になります。より良いアプローチは、単純にサーバーにメッセージの送信を停止させることです。アプリケーションで GCM の使用を永久に停止する場合、または登録 ID をリサイクルするやむを得ない理由がある場合にのみ、登録解除を使用してください。サーバーに接続して登録を解除できない場合は、IOException をスローします。

于 2013-07-18T14:28:11.120 に答える
1

登録解除が反映されるまでに最大 5 分かかる場合があります。

https://developer.android.com/google/gcm/adv.html#unreg-なぜ

于 2014-06-12T10:20:39.270 に答える
0

古い方法 (非推奨):

パブリック同期 void unregister()

新しい方法 (代わりに使用):

InstanceID.deleteToken();

また

InstanceID.deleteInstanceID();

アプリケーションを登録解除します。unregister() を呼び出すと、サーバーからのメッセージが停止します。これはブロッキング呼び出しです。UI スレッドから呼び出すべきではありません。このメソッドを呼び出す必要はほとんどありません。リソースの点でコストがかかるだけでなく、register() または subscribe() から返されたすべての登録 ID が無効になります。これは不必要に行うべきではありません。より良いアプローチは、単純にサーバーにメッセージの送信を停止させることです。

于 2016-05-23T09:11:54.910 に答える