小编Fco*_*cia的帖子

Firebase可扩展通知当应用在后台时显示图像

我正在Android中实施FCM通知,但通知如何根据应用状态(背景与前景)而有所不同?

看通知图片

我使用带有Postman的FCM API发送通知,这是通知结构:

{ "notification": {
      "title": "Notification title",
      "body": "Notification message",
      "sound": "default",
      "color": "#53c4bc",
      "click_action": "MY_BOOK",
      "icon": "ic_launcher"
   },
   "data": {
       "main_picture": "URL_OF_THE_IMAGE"  
   },
   "to" : "USER_FCM_TOKEN"
}
Run Code Online (Sandbox Code Playgroud)

要渲染的图像取自data.main_picture.

我实现了自己的功能FirebaseMessagingService,使通知在前景状态下完美显示.通知代码是下一个:

NotificationCompat.BigPictureStyle notiStyle = new NotificationCompat.BigPictureStyle();
notiStyle.setSummaryText(messageBody);
notiStyle.bigPicture(picture);

Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_launcher)
            .setLargeIcon(bigIcon)
            .setContentTitle(title)
            .setContentText(messageBody)
            .setAutoCancel(true)
            .setSound(defaultSoundUri)
            .setContentIntent(pendingIntent)
            .setStyle(notiStyle); code here

NotificationManager notificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());
Run Code Online (Sandbox Code Playgroud)

但是,在后台,甚至没有执行该服务.在AndroidManifest.xml,Firebase服务声明如下:

<service
    android:name=".MyFirebaseMessagingService">
  <intent-filter>
    <action android:name="com.google.firebase.MESSAGING_EVENT"/>
  </intent-filter>
</service>

<service …
Run Code Online (Sandbox Code Playgroud)

android background push-notification firebase-cloud-messaging

28
推荐指数
5
解决办法
5万
查看次数