Dav*_*han 0 android amazon-sns boto3
使用 .AWS 管理控制台发送推送消息效果很好JSON message generator。但每当我调用该publish()功能时,该消息永远不会到达手机。
发布到 iOS 就可以正常工作,如下所示:
import boto3
client = boto3.client('sns', region_name=REGION_NAME)
client.publish(TargetArn=SOME_VALID_ARN, Message='This message gets pushed to iOS')
Run Code Online (Sandbox Code Playgroud)
使用 GCM/Firebase 端点执行此操作是行不通的。我尝试了大量的json.dumps()手动引号转义组合。
我希望这个问题可以节省一些人的时间和挫败感。
实际有效的发布调用需要两个嵌套json.dumps:
client.publish(TargetArn=ARN, MessageStructure='json', Message=json.dumps({'GCM': json.dumps('This finally gets delivered to Android')}))
Run Code Online (Sandbox Code Playgroud)
首先,boto3 SNS 文档中的publish() 函数非常混乱:
如果要向所有传输协议发送相同的消息,请将消息文本作为字符串值包含在内。
错误的是,GCM(几乎所有 Android 设备都使用的传输协议)不能以这种方式工作!也许应该提到这一点。
如果要为每个传输协议发送不同的消息,请将 MessageStructure 参数的值设置为 json并使用 JSON 对象作为 Message 参数。
不可以,您不能使用 JSON 对象作为 Message 参数。参数仍然需要是字符串对象。但它需要包含可解析的 JSON。这应该重新措辞。
Message 参数的值必须:
是语法上有效的 JSON 对象;和
至少包含一个顶级 JSON 键“default”,其值为字符串。
这两点都不正确。
json.dumps()此外,没有任何地方提到您需要在 JSON 对象中使用另一个对象。一个像上面这样的简单示例将有助于在该文档中创造奇迹。
| 归档时间: |
|
| 查看次数: |
1082 次 |
| 最近记录: |