我刚开始用AWS服务编程,所以一些基本的事情对我来说是相当困难的。最近,我被要求开发一个应用程序,它使用Amazon定位发送推送通知,作为考虑未来实现的一个测试。
正如您在这里发布的另一个问题(当应用程序处于后台时,Amazon定位和Ionic推送通知不起作用)中所看到的,当我的应用程序在后台运行时,我在向用户发送推送通知时遇到了困难。该应用程序是通过跟踪这些步骤使用Ionic开发的。
当我几乎放弃的时候,我决定尝试通过Firebase直接发送推送,最终成功了。一些研究将我带到这个问题,其中另一个用户将问题描述为只发生在AWS控制台上,因此解决方案是使用CLI。在搜索了一下之后,我找到了本教程介绍如何使用CLI向用户发送精确的消息。,这似乎是我想要的。将它与这个关于phonegap插件的文档相结合,我能够生成一个我认为可能是解决方案的JSON:
{
"ApplicationId":"io.ionic.starter",
"MessageRequest":{
"Addresses": {
"": {
"BodyOverride": "",
"ChannelType": "GCM",
"Context": {
"": ""
},
"RawContent": "",
"Substitutions": {},
"TitleOverride": ""
}
},
"Context": {
"": ""
},
"Endpoints": {"us-east-1": {
"BodyOverride": "",
"Context": {},
"RawContent": "",
"Substitutions": {},
"TitleOverride": ""
}
},
"MessageConfiguration": {
"GCMMessage": {
"Action": "OPEN_APP",
"Body": "string",
"CollapseKey": "",
"Data": {
"": ""
},
"IconReference": "",
"ImageIconUrl": "",
"ImageUrl": "",
"Priority": "High",
"RawContent": "{\"data\":{\"title\":\"sometitle\",\"body\":\"somebody\",\"url\":\"insertyourlinkhere.com\"}}",
"RestrictedPackageName": "",
"SilentPush": false,
"SmallImageIconUrl": "",
"Sound": "string",
"Substitutions": {},
"TimeToLive": 123,
"Title": "",
"Url": ""
}
}
}
}但是当我用aws pinpoint send-messages --color on --region us-east-1 --cli-input-json file://test.json在cmd中执行它时,我得到了响应An error occurred (NotFoundException) when calling the SendMessages operation: Resource not found。
我相信我没有正确地编写JSON文件,因为这是我第一次这样做。所以,如果你们中的任何人知道我做错了什么,不管我误解了哪一步,我都会感谢你们的帮助!
发布于 2018-07-17 17:06:15
消息请求中的“终结点”字段处理端点id (与终端用户设备相关联的标识符,同时注册为定位而不是区域)。
如果您还没有注册任何带有Pinpoint的端点,则可以使用"Addresses“字段。在Amazon中注册GCM通道之后,您可以从设备中获取GCM设备令牌,并在这里指定它。
下面是使用发送直接消息的示例:该示例处理发送SMS消息。您应该首先注册一个SMS通道,并创建一个端点id为“test- endpoint 1”的端点。否则,您可以使用"Addresses“字段而不是”Endpoint“字段。
aws pinpoint send-messages --application-id $APP_ID --message-request '{"MessageConfiguration": {"SMSMessage":{"Body":"hi hello"}},"Endpoints": {"test-endpoint1": {}}}还注意到:ApplicationId是由Pinpoint生成的。当您访问Pinpoint控制台并选择应用程序时,URL将是格式的
https://console.aws.amazon.com/pinpoint/home/?region=us-east-1#/apps/someverybigstringhere/这里"someverybigstringhere“是ApplicationId,而不是您为项目指定的名称。
https://stackoverflow.com/questions/51199530
复制相似问题