2016-09-06 2 views
0

firebaseからAndroidアプリケーションにプッシュ通知を送信しています。私のアプリがバックグラウンドのfirebaseになっているときに、onMessageReceivedメソッドが呼び出されず、代わりにFirebaseがシステムトレイに通知を表示するための通知をシステムに送信します。通知はシステムトレイに表示されますが、システム設定で私のアプリケーションの通知音を許可したとしても、通知のための音はありません。通知 ため 、この私のコードは、あなたがAndroidベースのfirebaseから通知を送信する際に通知音や振動がなく、点灯しません

private void sendNotification(String msg, String title) { 
    NotificationManager mNotificationManager = (NotificationManager) 
      this.getSystemService(Context.NOTIFICATION_SERVICE); 

    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, 
      new Intent(this, MainActivity.class), 0); 
    Intent i = new Intent(this,MainActivity.class); 
    i.putExtra("",""); 

    NotificationCompat.Builder mBuilder = 
      new NotificationCompat.Builder(this) 
        .setSmallIcon(R.mipmap.ic_launcher) 
        .setContentTitle(title) 
        .setStyle(new NotificationCompat.BigTextStyle().bigText(msg)) 
        .setContentText(msg); 
    //Vibration 
    mBuilder.setVibrate(new long[] { 200, 400, 600, 800, 1000 }); 

    //LED 
    mBuilder.setLights(Color.MAGENTA, 1000, 1000); 

    //Ton 
    mBuilder.setSound(Uri.parse("android.resource://" 
      + getApplicationContext().getPackageName() + "/" + R.raw.circles_notif)); 
    mBuilder.setContentIntent(contentIntent); 
    mNotificationManager.notify(0, mBuilder.build()); 
} 
+0

あなたはAndroidManifestにバイブレーションを使用するためのAndroidの権限を定義している?: '<アンドロイド許可使用しています:名=「android.permission.VIBRATE」/>' – GeorgeLBA

+0

私がクリックしたときにはい、これは私の問題ではありませんあなたの仕事をテストするbutoneが動作していません – Mohamed

+0

NotificationCompatの 'setDefaults(DEFAULT_ALL)'を使って、ユーザーのデフォルト設定で動作するかどうかチェックしましたか?テスト用に定義した振動、光、音を除去します。これが助けてくれることを願って – GeorgeLBA

答えて

3

あなたfirebaseコンソールからの通知>新規メッセージ]> [詳細オプションに移動し、カスタムデータとして通知を送信感謝します。 Keyとして 'title'と 'body'を使用し、通知にそれらの値を表示したいときは、その値を入れてください。これはあなたのアプリがバックグラウンドであるか殺されたときにonMessageReceived()を呼び出す必要があります。

あなたがここに、独自のサーバーからの通知を送信する場合は、サンプルのJSON一部です:

{ 
    "data": { 
     "title": "notification_title", 
     "body": "notification_body" 
    }, 
    "to" : "jh578_gsh....jhHGFJ76FH" 
} 
+0

こんにちは@sudip forgroundのアプリがノーティフを受信しないようにしたいときにポッドします – Mohamed

+0

私はそれについて多くの実用経験はありませんが、このリンクをたどることがあります:http://stackoverflow.com/questions/ 5504632/how-can-i-tell-if-android-app-is-the-foregroundで実行中です。それはあなたが探しているソリューションを提供するかもしれないように見えます。 –

1

それはoverride sample of onMessageReceived()で書かれて、第二のコメント行は言う:

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 
    ... 
    Not getting messages here? See why this may be: ...goo.gl/39bRNJ 
    ... 
} 

comment-linkを見ます

解決策は、関連する質問の回答と同様:How to handle notification when app in background in Firebaseは、言うMessages with both notification and data payloadsセクションのドキュメントに記載されています:

両方通知およびデータペイロードを含むメッセージを受信

アプリケーションの動作はアプリがないかどうか、背景や前景本質的であるかどうかに依存 それは受領時に有効です。

  • 背景に、アプリケーションは、通知トレイに通知ペイロードを受信し、ユーザが通知にタップしたときにのみ、データペイロードを処理します。
  • フォアグラウンドの場合、アプリケーションは両方のペイロードを利用できるメッセージオブジェクトを受信します。
関連する問題