1

AndroidアプリでFCMを実装しようとしています。少数の電話機では、アプリがフォアグラウンド/バックグラウンド/殺されたときに通知が受信されます。しかし、一部の携帯電話では、アプリがフォアグラウンド/バックグラウンドにあるときにのみ受信されます。アプリが殺されると、onMessageReceivedとランチャーgetExtraも呼び出されません。私は、APIからのデータと通知オブジェクトの両方を使用しています。アプリが強制終了されたときにFirebase通知が一部の携帯電話に表示されない

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 
Log.e("Here", "here"); 
if (remoteMessage.getData().size() > 0) { 
    Log.e(TAG, "Data Payload: " + remoteMessage.getData().toString()); 
    try { 
    JSONObject json = new JSONObject(remoteMessage.getData()); 
    sendPushNotification(json); 
    } catch (Exception e) { 
    Log.e(TAG, "Exception: " + e.getMessage()); 
    } 
} 
if (remoteMessage.getNotification() != null) { 
    Log.e(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); 
} 
} 
+0

、あなたがこのリンクを参照することができ –

+0

モバイル設定を共有し、それはあなたを助けるhttps://stackoverflow.com/questions/37711082/how-to-handle-notification-when -app-in-in-firebase – Raja

+0

@Raja私はすでにこれを試しましたが、うまくいきません。 –

答えて

0

私は通知と同じ問題にぶつかったと研究の後、我々は問題は、デバイス固有の、異なるデバイスだけではないの通知が、他のの異なる取り扱いを持っていますを製造していることを発見 - は、ここに私のAndroidのコードですVPNなどのサービスもあります。

  • 残念ながらそのデバイスによるデザインでも、それらのサービスを殺すのAppキリング

を製造、あなたのアプリがデバイスのリストでは動作しませんので、エンドユーザーを教育する必要があります、いつものように肯定的な結果を返す1つのデバイスサムスンのデバイスです。

乾杯。

+0

これを回避する方法が必要です。同じデバイスが、アプリが殺されても、InShortsからの通知を受け取るからです。 –

+0

あなたの質問と説明に基づいて、こんにちは、 "いくつかの携帯電話では、アプリがフォアグラウンド/バックグラウンド/殺されているときに通知が受信されますが、一部の電話機では、アプリケーションがフォアグラウンド/バックグラウンドにあるときにのみ受信されます。それは特定のデバイスが私の答えに説明されているようにプッシュ通知をブロックすることを意味するだろう...もしあなたがアプリを殺している間、または数秒後に通知を受信したばかりのプロセスを意味するアプリを殺している間、すべてのプロセスまたはサービスが即座にシャットダウンすることを意味します。あなたが私の答えが役に立ったら、投票してください。 –

+0

InShortsというアプリがあります。アプリが強制終了された場合でも通知を送信できます。 –

0

私も同様の問題に遭遇しました。いくつかの筋によると、これは火災の問題であると言われていますが、AndroidのネイティブROMを使用していないメーカーの方が多くなります。

簡単な言葉では、One Plus、MI、Oppo、Vivoなどのようなメーカーは、カスタマイズされたROMを使用します(在庫Androidの動作を書き換えます)。アプリがユーザーによって殺されると、すべてのサービスも殺され、通知もなくなります。これを解決する1つの方法は、ユーザーに設定を変更させることです。

オリジナル記事はhereです。

0

次のJavaファイルを作成します

にマニフェストファイルに
<receiver 
      android:name=".OnBootBroadcastReceiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED"/> 
      </intent-filter> 
</receiver> 

をBootBroadcastReceiverを追加します。 FirebaseMessagingReceiveService を呼び出してください。通知を受け取っていないその電話で

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 

public class OnBootBroadcastReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Intent i = new Intent("com.demo.FirebaseMessagingReceiveService"); 
     i.setClass(context, FirebaseMessagingReceiveService.class); 
     context.startService(i); 
    } 
} 
関連する問題