当前位置: 首页 > 知识库问答 >
问题:

Android Firebase:华为p8推送通知app在后台时系统不显示?

韩玉石
2023-03-14

根据Firebase文档:

我的问题是,当应用程序在后台时,通知系统不显示通知。

我没有使用Firebase控制台,因为我无法将数据添加到通知负载中。所以我使用了RESTful客户机API,但还是同样的问题。

请求:

URL:https://fcm.googleapis.com/fcm/send
Method type: POST
Content-Type: application/json
Authorization : key=AAAAFi0N5KM....
Body:

    {
     "priority" : "high",
     "notification" : {
         "body" : "This week’s edition is now available.",
         "title" : "NewsMagazine.com",
         "icon" : "new",
         "click_action": "OPEN_ACTIVITY_1" ,
         "sound" : "mySound"

     },
     "data": {
         "title": "title " ,
         "body": "any vaslue " 
     },
     "registration_ids": ["fVNdKJsWtNQ:APA91bEJ...."]
}
{
 "multicast_id": 6105324374411246344,
 "success": 1,
 "failure": 0,
 "canonical_ids": 0,
 "results": [
   {
    "message_id": "0:1486655756341577%dc81f05ff9fd7ecd"
   }
  ]
 }
public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);
    sendNotification(remoteMessage.getData().get("title"),remoteMessage.getData().get("body"));
}

private void sendNotification(String messageTitle,String messageBody) {
    Intent intent = new Intent(this, SplashActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(this,0 /* request code */, intent,PendingIntent.FLAG_UPDATE_CURRENT);

    long[] pattern = {500,500,500,500,500};

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

    NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.roshetta_logo_home)
            .setContentTitle(messageTitle)
            .setContentText(messageBody)
            .setAutoCancel(true)
            .setVibrate(pattern)
            .setLights(Color.BLUE,1,1)
            .setSound(defaultSoundUri)
            .setContentIntent(pendingIntent);

    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}
  <service android:name=".Util.PushNotification.MyFirebaseMessagingService"
         >
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
    </service>
    <service android:name=".Util.PushNotification.MyFirebaseIDService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
        </intent-filter>
    </service>

共有1个答案

苏波涛
2023-03-14

每次我们在华为手机上遇到问题,都是因为该应用程序不是“受保护的应用程序”。

  1. 转到设置
  2. 向下滚动并点击“高级设置”
  3. 点击电池管理器
  4. 查找受保护的应用程序并选择它
  5. 查找您的应用程序,并将其设置为受保护
 类似资料:
  • 我想为一个聊天应用程序实现FCM推送通知服务,我遵循Firebase文档中的步骤,当通知从Firebase控制台发送到我的设备时,我会得到通知。当我尝试使用http post to https://FCM.googleapis.com/FCM/send通过FCM将通知通过服务器端发送到设备时: 当应用程序处于活动状态并且我正在将此通知发送到我的设备时,Im在我的控制台日志中收到以下消息,所以我认为

  • 我已使用zo0r/React本机推送通知在我的React本机应用程序上设置推送通知。它可以在Android系统上运行,当应用程序处于后台模式时,也可以在iOS上运行。 但是,当应用程序在iOS的前台模式下时,不会显示通知。我知道我必须在前台模式下处理通知,但我希望它们的显示方式与在后台模式下的显示方式完全相同。 所以我做了以下几件事: 但是什么都没发生,通知还是没有显示,我到底错过了什么?

  • 我有两个装置。一个是运行API26,另一个是API21。我正在使用Googles firebase进行通知。API26设备不会收到推送通知,除非我先打开应用程序。然后它接收一切都很好。我不需要首先打开应用程序来接收API27设备上的推送通知。有什么想法,如何总是收到推送,即使没有打开应用程序?我希望通知到达用户只需打开他们的电话。

  • index.js中的代码 bgmessaging.js中的代码负责应用程序在后台时的推送 为了在应用程序处于前台时带来图像,我使用了下面的代码:-

  • 当应用程序在后台时,如何更新包含数据负载的Firebase推送通知?有没有办法在通知中指定通知id给Firebase API? 完整的项目在github https://github.com/akshatashan/FireBaseCloudMessagingDemo中

  • 我的应用程序有推送通知(FCM)。当应用程序在前台运行时,我可以在onMessageReceived()函数中获取数据负载。当应用程序在后台运行或应用程序完全关闭时,不会调用onMessageReceived()函数。我的问题是,当app在后台或关闭时,是否可能获得数据有效载荷? 提前道谢!