プッシュ通知を受信するために、GCM を Android アプリと統合しています。すべて正常に動作し、通知を受け取ることができます。問題は、アプリが実行されていないときでもこれらの通知を受信することですが、アプリが実行されているときにのみ受信する必要があります。
だから私は、ブロードキャストレシーバーをプログラムでアプリケーションに登録し、登録を解除すればonDestroy()
うまくいくと思いました。
ただし、これは機能しません。登録 ID を取得しようとすると、SERVICE_NOT_AVAILABLE が返されます。
これは動作するマニフェストで宣言されたブロードキャスト レシーバーですが、常に通知を受け取ります。
<receiver android:name=".service.MyBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<category android:name="com.testgcm"/>
</intent-filter>
</receiver>
そして、これは私がプログラムで作成する方法ですが、上記のエラーを受け取ります:
receiver = new MyBroadcastReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("com.google.android.c2dm.intent.RECEIVE");
filter.addCategory("com.testgcm");
registerReceiver(receiver, filter, "com.google.android.c2dm.permission.SEND", null);
私が間違っていることを教えてください。または、アプリが実行されているときにのみ通知を受け取るようにするためのより良い方法はありますか?