使用 AWS Amplify iOS 接收消息以便正确触发 onNotification 事件的 APNS 消息结构是啥?

Posted

技术标签:

【中文标题】使用 AWS Amplify iOS 接收消息以便正确触发 onNotification 事件的 APNS 消息结构是啥?【英文标题】:What is the APNS message structure to receive message with AWS Amplify iOS so the onNotification event is properly triggered?使用 AWS Amplify iOS 接收消息以便正确触发 onNotification 事件的 APNS 消息结构是什么? 【发布时间】:2020-10-28 15:22:07 【问题描述】:

我像这样从@aws-amplify/pushnotification 设置 PushNotification.onNotification:

      if (notification.foreground) 
        console.log('notification received in foreground ', notification);
       else 
        console.log('notification received in background ', notification);
      

      if (PushNotificationios !== undefined) 
        notification.finish(PushNotificationIOS.FetchResult.NoData);
      
    );

android 上运行良好。在 iOS 上,我无法触发 onNotification/onNotificationOpened 事件,尽管我收到了通知。当我通过 Pinpoint -> Test Messaging 发送“标准消息”时有一种特殊情况,它实际上触发了该功能,当我记录通知时,它看起来像这样

'notification received in background ', 
 _data: 
 remote: true,
notificationId: '45BAA2A6-8676-402E-8E6B-03A69173AC8C' ,
_remoteNotificationCompleteCallbackCalled: false,
_isRemote: true,
_notificationId: '45BAA2A6-8676-402E-8E6B-03A69173AC8C',
_alert:  title: ' test', body: 'qwerty' ,
_sound: undefined,
_badgeCount: undefined,
_category: undefined,
_contentAvailable: 1,
_threadID: undefined 

(在前台收到通知,但消息不包含该信息,因此它作为后台打印。使用 Pintpoint -> 测试消息 -> 标准消息时,前台/后台都会触发事件)。 Pinpoint Raw 消息也不起作用。 SNS 相同/自定义负载不起作用。

我根据以下内容扩充了 AppDelegate https://github.com/react-native-push-notification-ios/push-notification-ios#augment-appdelegate

有人知道放大是否需要某个有效载荷来触发事件吗?或者是否有其他原因可能导致这种情况..?

目前测试的结构:

SNS 自定义结构

  "APNS_SANDBOX": "\"aps\":\"alert\":\"Sample message for iOS development endpoints\""

查明原始消息


    "APNSMessage": 
        "aps": 
            "alert": ""
        
    ,
    "GCMMessage": 
        "data": 
            "message": ""
        
    ,
    "ADMMessage": 
        "data" : 
            "message": ""
        
    ,
    "BaiduMessage": 
        "title":"",
        "description": ""
    

【问题讨论】:

【参考方案1】:

解决方案是添加内容可用和附加数据,以访问放大 PushNotification 在 iOS 中的标题、正文和数据。


  aps: 
    alert: 
      title: "title",
      body: "message"
    ,
    "content-available": "1",
    key1: "value",
    key2: "value",
  ,

字符串化

"\"aps\":\"alert\":\"title\":\"title\",\"body\":\"message\",\"content-available\":\"1\",\"key1\":\"value\",\"key2\":\"value\""

【讨论】:

以上是关于使用 AWS Amplify iOS 接收消息以便正确触发 onNotification 事件的 APNS 消息结构是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Amplify 将现有 AWS Cognito 用户池集成到 iOS 项目中

AWS Amplify AppSync 订阅无法正常工作

Flutter 与 AWS 的集成(有和没有 Amplify)

AWS Amplify Swift API 登录 iOS 移动应用程序

AWS Amplify iOS:查找用户是不是登录的最可靠方法是啥

如何使用 Amplify 框架从 AWS 中的 API 获取 http 状态和详细响应?