2017-02-28 5 views
0

Firebase通知を使用し、FirebaseMessagingServiceを拡張するクラスを作成しました。このクラスでは、メッセージ本体を取得し、ペイロードに従って通知を表示するメソッドを作成しました。Firebaseサービスがバックグラウンドで実行中に新しい通知を作成できません

私の問題は、この通知は自分のアプリケーションが動作している場合にのみ機能しますが、オフの場合は作成したカスタマイズされたものではなくFirebaseのデフォルトの通知を受け取ります。

私のサービスクラスは次のとおりです。

public class FirebaseNotifications extends FirebaseMessagingService { 

String lastChange = ""; 
String currentChange = ""; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    Log.i("firebase", "it started"); 
    SharedPreferences settings = getSharedPreferences(PREFS, 0); 
    lastChange = settings.getString("lastFbInput", ""); 
    Log.i("lastChange", lastChange); 
} 

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 
    super.onMessageReceived(remoteMessage); 

    currentChange = remoteMessage.getNotification().getBody(); 
    Log.i("from: ", remoteMessage.getFrom() + ""); 
    if(remoteMessage.getData().size()>0) 
     Log.i("payload: ", remoteMessage.getData().toString()); 

    if(remoteMessage.getNotification() != null) 
     Log.i("message body: ", remoteMessage.getNotification().getBody()); 

    if(!lastChange.equals("")) { 
     Log.i("equals", "1"); 
     if (!lastChange.equals(currentChange)) { 
      showNotification(remoteMessage.getNotification().getBody()); 
      Log.i("equals", "2"); 
     } 
    } 
    else 
    { 
     showNotification(remoteMessage.getNotification().getBody()); 
     Log.i("equals", "3"); 
    } 

} 

私の問題は、サービスだけでも、showNotification方法を実行していないということです。誰かがそれに対する解決策を提案できますか?

答えて

1

これは、の予想される動作です。あなたのアプリがバックグラウンドになると、通知はAndroidによって自動的に処理されます。 docsから:

onMessageReceivedは、次の例外を除いて、ほとんどのメッセージタイプのために提供されています。あなたのアプリがバックグラウンドにあるとき

  • 通知が配信しました。この場合、通知はデバイスのシステムトレイに配信されます。ユーザーが通知をタップすると、デフォルトでアプリランチャーが開きます。
  • 通知とデータペイロードの両方を持つメッセージ(バックグラウンドとフォアグラウンドの両方)。この場合、通知はデバイスのシステムトレイに配信され、データペイロードはランチャーアクティビティの意図の余分に配信されます。

あなたはおそらくあなたのペイロードに両方notificationdataを持っています。あなたのアプリが(onMessageReceived()の)通知を処理するようにするには、data - メッセージペイロードのみを使用する必要があります。詳細はMessage Typesのドキュメントをご覧ください。

関連する問題