3

私のプロジェクトでFCMを実装しました。プッシュ通知は期待どおりに機能しており、通知が受信されるとonMessageReceivedが呼び出されます。これは、アプリケーションがフォアグラウンドにある場合に当てはまります。アプリがバックグラウンドにあるときに一方が到着したときアプリがバックグラウンドのときにFCMが重複通知を表示

しかし、システムトレイは、常にこの問題を解決する方法(例えば、通知Aを受信した場合、システムトレイディスプレイ2通知A)

重複通知を表示しますか?

EDIT:追加コード

IはFirebaseMessagingServiceクラスを拡張し、これは私がNotificationManagerを使用するプロジェクトに一部のみであるonMessageReceived方法

でこれを持っています。

また、このメソッドにログを追加しようとしました。アプリがフォアグラウンドにあるときにonMessageReceivedが呼び出されます。アプリがバックグラウンドのときに呼び出されない

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) 
{ 
    RemoteMessage.Notification notification = remoteMessage.getNotification(); 

     Intent intent = new Intent(this, MainActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, 
       PendingIntent.FLAG_ONE_SHOT); 

     String title = notification.getTitle(); 
     String message = notification.getBody(); 

     NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
       .setSmallIcon(R.mipmap.ic_launcher) 
       .setContentTitle(title) 
       .setContentText(message) 
       .setAutoCancel(true) 
       .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE) 
       .setContentIntent(pendingIntent); 


     NotificationManager notificationManager = 
       (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

     notificationManager.notify(0, notificationBuilder.build()); 
} 
+1

通知の作成と表示方法 –

+1

は、アプリがバックグラウンドシステムにある場合、デフォルトの通知形式であれば通知を自動的に生成します。 –

+0

@VivekMishraは、システムが同じ通知を2つ生成することを意味しますか?それとも2つの通知を受け取りますか?私はアプリがフォアグラウンドにあるときになぜ通知だけを受け取るのか混乱しているのですが、バックグラウンドでは突然あなたがコードを提供していないので、 – kishidp

答えて

0

私はまったく同じ「重複」問題を抱えていました。アプリがフォアグラウンドになったときに通知が届かないため、「重複」の問題が発生していないため、これは回避策にすぎません。代わりに、WakefulBroadcastReceiverを実装しました。アンドロイドを切り替えると、「false」にエクスポートされ、動作を開始しました。

AndroidManifest.xml 
    <receiver 
     android:name="PACKAGE.MyWakefulBroadcastReceiver" 
     android:exported="false"> 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
     </intent-filter> 
    </receiver> 

MyWakefulListenerService.java 
    public class MyWakefulBroadcastReceiver extends WakefulBroadcastReceiver { 

     private final String TAG = "MyWakefulListener"; 

     public void onReceive(Context context, Intent intent) { 
      sendNotification(context); 
     } 
    } 
0

同じ問題。私はこのような古いGCMへのアクセス権を要求したので、私は、マニフェストとアンからそれを削除し、私の問題が解決したアプリを再インストールして、だから... ...

<uses-permission android:name="mypackage.permission.C2D_MESSAGE" /> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 

<permission 
    android:name="mypackage.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 

をのAndroidManifest.xmlを修正しました。 handleIntent(意図)FirebaseMessagingServiceを使用し、手動でプッシュ通知を処理するには

4

。 このメソッドは、アプリケーションがフォアグラウンド、バックグラウンド、および終了状態のときに呼び出されます。重複を避けるため、super.handleIntent(インテント)に電話をかけないでください。これにより、アプリがBGまたは強制終了状態のときの自動プッシュ通知が防止されます。

これは私のために働いた。

関連する問題