首页 > 解决方案 > 如何在 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。我如何也获得消息属性?

标签: iosamazon-web-servicespushamazon-ses

解决方案


想通了。您需要将消息类型切换为“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 消息。


推荐阅读