EDIT3を実行していない場合intent.putExtra()が動作しません。 [OK]を私は問題を発見:アプリが殺されている場合は、両方data
とnotification
はonMessageReceived
をトリガしません送信します。ターゲットデバイスがAndroidの場合はnotification
をnullに設定する必要があります。FirebaseMessagingService:アプリは
これは本当にばかげた動作です。
オリジナルのポスト:
私は成功したアプリが起動される活動にnotificationBuilder
から渡された意図からバンドルを取得することができます。
しかし、アプリを終了すると、通知は引き続き機能しますが、インテントのGetExtras()
はnullです。私FirebaseMessagingService
子クラスで
:
アプリが殺され@Override
public void onMessageReceived(RemoteMessage remoteMessage)
{
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("key_1","value");
PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
//also tried with PendingIntent.FLAG_CANCEL_CURRENT
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("title")
.setContentText("messageBody")
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());
}
、firebaseMessagingService
でもファイルを書き込むことができません。クラッシュしたり、ビルドしたり、通知を表示したりしますが、ディスクに行われたことは機能しません。
EDIT:次のように私はonMessageReceived
方法の内容を交換した:
@Override
public void onMessageReceived(RemoteMessage remoteMessage)
{
// Do nothing
}
アプリは何も実行されていないときは、expected- -asを起こるが、アプリが殺されたときに通知がwhith表示されますタイトルとしては名前アプリ、内容テキストとしてはremoteMessage.getNotification().getBody()
である。
onMessageReceived
は発砲していないようです。代わりに別の魔法の機能を...と呼ばれる
EDIT2:要求されたよう、これはサーバから送信されたものである:あなたの第二編集後
{
"data":
{
"form_id":"33882606580812",
"recipientUserId":10500
}
,
"to":"e0bU2jIVO9g:APA91bHsS-s3G1gQLcTFtRUC77pJUWcZvD7h9NfUgFLD-bFam1S0dddngVcmrQlXR5i6DfTsc69T8JbIrSuzyF1iv0c4ac1gmkwvGVMwZo_yA4KwOh82Nx-weYeL79r79si4qH3QBEgs",
"notification":
{
"body":"you have a new notification",
"badge":"1",
"sound":"default"
},
"delay_while_idle":false
}
あなたはデータや通知を送信するために使用しているあなたのFCMのJSONを共有することができますしてください? –
また、このコードをここに置いていますか? '//メッセージにデータペイロードが含まれているかどうかを確認します。 場合(remoteMessage.getData()サイズ()> 0){ Log.d(TAG、 "メッセージデータペイロード:" + remoteMessage.getData())。 //そしてあなたの他のコードすなわちインテントとすべて } ' –
は、あなたは私にあなたがこれを上のテスト携帯電話のメーカーやモデルを伝えることができます。多くの製造業者**(特に中国に拠点を置くメーカー)**は奇妙なバックグラウンドサービスを持っているため、サービスのバックグラウンドアプリなどで多くの問題を引き起こすアーキテクチャ上のアプリを抹消します。それだけでも少し問題があるかもしれません。 –