0

アプリがバックグラウンドでプッシュを受信するたびに、そのアプリは自動的に処理されて表示されます。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が呼び出されますか?

答えて

0

GCMドキュメントのCanonical IDs部分に基づいて、「クライアントアプリケーションのバグが同じデバイスの複数の登録をトリガーすると、状態を調整するのが難しく、クライアントアプリケーションが重複メッセージ。 "

Canonical IDを使用する場合、このSO questionは、GCMで実装する方法を理解するのに役立ちます。

詳細については、これらのご質問が役立つかどうかをご確認ください。

関連する問題