アプリがバックグラウンドでプッシュを受信するたびに、そのアプリは自動的に処理されて表示されます。AndroidはダブルGCMプッシュ通知を受信して表示します
アプリがフォアグラウンドになるたびに、私のGCMMessageHandler
クラスを使用してプッシュが手動で表示されます。
はここ(onMessageReceivedは明らかに、この場合には呼び出されない)問題は、私のアプリは、背景であるときはいつでも、プッシュ通知は一度だけ二度の代わりに表示されていることであるGCMMessageHandler
@Override
public void onMessageReceived(String from, Bundle data) {
super.onMessageReceived(from, data);
MyNotification notification = new MyNotification(getApplicationContext(), data);
notification.handleNotification();
}
の抜粋です。
問題はどこにあるのかわかりましたが、修正方法はわかりません。
これは私のAndroidManifest.xmlファイルにあります、それらの宣言のいずれかから
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
、通知はもはや2回表示されます。
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.codepath.gcmquickstart" />
</intent-filter>
</receiver>
<service
android:name=".helpers.GCMMessageHandler"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
私は、私は次の行を削除する場合は気づいていませんフォアグラウンド通知はもう機能しません(onMessageReceivedはもう呼び出されません)。
受信者またはサービスから回線を削除する場合とまったく同じ動作です。
アプリをバックグラウンドにしたときに通知が一度だけ表示されるように、これを正しく行う方法を考えてください。フォアグラウンドでもonMessageReceivedが呼び出されますか?