ios - 如何在 ios 应用程序中获取 sns 消息的 MessageAttributes?
问题描述
我已将 SNS 端点连接到 ios 应用程序。当我发布到 sns 端点时:
anSNS.publish(
TargetArn=userLUT['mobrien'],
Message=aMessage,
MessageAttributes={
'one': {'DataType': 'String', 'StringValue': aOne},
'two': {'DataType': 'Number', 'StringValue': aTwo}
})
我在launchOptions 中收到来自这个构造函数的消息:
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
作为 .alert 字符串。
我没有收到 launchOptions 字典中的 MessageAttributes。我如何也获得消息属性?
解决方案
想通了。您需要将消息类型切换为“json”,然后将 json 结构传递给“APNS”(或“APNS_SANDBOX”)结构的 Message 属性。
anAPNS = '{{ "aps": {{ "alert": "{}", "one": "{}", "two": "{}" }} }}'.format(aMessage, 'one', 'two')
anSNS.publish(
TargetArn=arnGoesHere,
MessageStructure='json',
Message=json.dumps({
'default': aMessage,
'APNS_SANDBOX': anAPNS,
'APNS': anAPNS
}))
MessageAttributes 不会传递给最终的 apns 消息。
推荐阅读
- android - Ble 设备无法始终与手机配对
- javascript - Javascript - 在这种情况下如何显示 obj.element 的文本/字符串
- python - OpenCV 无法正确检测眼睛
- go - 不要从模型包中导入我的自定义模型
- django - 如何在 django-rest 中按日期范围过滤?
- vba - 试图从一个类中访问字典。运行时错误 91
- javascript - 记忆游戏星级错误(未捕获的类型错误:无法读取未定义的属性“删除”)
- hyper-v - Hyper-V 内部交换机 IP 地址(和网络)不断变化
- sql - 在 SQL PostgreSQL 中按行分组列
- html - Bootstrap4 行间距