huawei-mobile-services - 当应用程序被终止或在后台时,华为 PushKit 通知不会出现

标签 huawei-mobile-services huawei-developers huawei-push-notification

我已将华为推送套件集成到我的应用程序中,当我从华为推送套件控制台触发通知时,我可以在应用程序处于后台时收到通知。但是,当我们的系统后端触发华为API推送通知时,当应用程序在后台时,它不会出现。

尽管应用程序位于前台或后台,但通知参数(例如标题等)为空,以下代码仍在执行。通知对象本身不为空。

JSON 消息的内容可以作为单个字符串从 remoteMessage.getData() 接收,但值不会映射到相应的字段。

 public class HuaweiNotificationHandler extends HmsMessageService{
    
        @Override
        public void onMessageReceived(RemoteMessage remoteMessage) {
            Log.i(TAG, "getData: " + remoteMessage.getData()
                    
            RemoteMessage.Notification notification = remoteMessage.getNotification();
            if (notification != null) {
                Log.i(TAG, "getTitle: " + notification.getTitle()
            
            }
        }
    
   }

我们的后端执行this API华为提供的数据报文发送功能。

这是我们的 JSON 格式

  {
   "collapseKey":"dummykey",
   "priority":"high",
   "delayWhileIdle":false,
   "dryRun":false,
   "sound":"",
   "contentAvailable":true,
   "data":{
      "data":{
         "type":"A",
         "id":"1111111",
         "entity":"0",
         "url":""
      },
      "restrictedPackageName":"com.aa.bb.cc" // this package name is exactly same as the huawei app package registered
   },
   "notification":{
      "title":"Notification Title",
      "icon":"ic_launcher",
      "body":"Message"
   }
}

最佳答案

更新

典型数据消息的示例代码:

{
    "validate_only": false,
    "message": {
        "data": "{'param1':'value1','param2':'value2'}",
        "token": [
            "pushtoken1",
            "pushtoken2"
        ]
    }
}

详情参见 Docs .


Push Kit支持两种类型的消息:通知消息和数据消息。

设备收到数据消息后,会将其传输到您的应用,而不是直接显示该消息。然后,您的应用程序解析该消息并触发相应的操作。 Push Kit仅起到 channel 的作用,数据消息的发送取决于应用的驻留状态。但是,即使您的应用未启动,通知消息仍然可以发送。

为了节省电量和不打扰用户,您的应用停止后将不会被 Push Kit 启动,并且不会向您的应用下发任何数据消息。在这种情况下,您可以根据您的服务决定是否使用通知消息

来自:https://stackoverflow.com/a/64100678/14006527

或者,您可以设置 High-priority data messages强制启动已停止的应用程序来接收和处理消息。

关于huawei-mobile-services - 当应用程序被终止或在后台时,华为 PushKit 通知不会出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65857917/

相关文章:

android - com.huawei.agconnect 插件未找到

android - 使用 gradle 7.0.0 与 Android 中的华为 HMS 插件冲突

android - 华为 map 没有响应 Offstage Flutter

java - 如何在 HarmonyOS 中检测自定义组件中的双击?

android - 支持华为IAP多种构建类型

android - 在华为 P30 上使用 Intent 打开 App Launch

huawei-mobile-services - HMS Ads Kit - 无法解析 com.huawei.hms :ads-lite:13. 4.29.303

react-native - Huawei Map Kit React Native 不渲染 map

notifications - 如果应用程序是从APPGALLERY安装的,HMS getToken返回null

android - com.huawei.hms :push:5. 3.0.301 中不推荐使用 "AGConnectServicesConfig"类