我正在尝试使用AWS SNS来推送我的应用程序的通知。我已经使用用户信息和注册ID成功设置了各个endpointARN的注册。
我可以通过控制台发送单独的消息很好,但是我似乎不知道如何以编程方式发送它(JAVA)
控制台方式:(工作)
http://docs.aws.amazon.com/sns/latest/dg/mobile-push-send-directmobile.html
通过JAVA尝试的方式:
private void publishToSNSEndpoint(String username) {
// Find an entry of a users SNS registration and Endpoint ARN
SNSPush pushConfig = snsPushService.findByUsername(username);
//Get ARN to String
String endpointARN = pushConfig.getSNSEnpointARN();
//Generate SNS Push to user
String message = "{\"title\":\"Test_Title\",\"description\":\"Test_Description\"}";
PublishRequest publishRequest = new PublishRequest();
publishRequest.setMessage(message);
publishRequest.setTargetArn(endpointARN);
PublishResult publish = client.publish(publishRequest);
//print MessageId of message published to SNS topic
System.out.println("MessageId - " + publish.getMessageId());
}
这当前会产生以下错误:
使用终端节点ARN(确认有效) 参数无效:目标Arn 原因:未找到指定目标arn的终端节点(服务:亚马逊网络;状态代码:400;错误代码: 无效参数;
使用SNS应用程序ARN(三重检查这是有效的)
参数无效: 目标Arn 原因: arn:aws:sns:ap-东南-XXXXXX-xxxx 无效发布到 (服务: 亚马逊网络;状态代码:400;错误代码: 无效参数;
这里有一些文档。但它看起来很旧,不再起作用了。
我的问题是:如何使用Java和AWS SDK以编程方式向AWS SNS中的单个endpoint发送推送通知。
如果您正在使用CLI并面临此错误,请确保您的区域和消息是正确的。
aws sns publish \
--target-arn "arn:aws:sns:us-east-1:xxxxxxxxx:endpoint/GCM/my_sns_application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
--message-structure "json" \
--message '{"GCM":"{\"notification\":{\"title\":\"test push\",\"body\":\"test body\"}}"}' \
--region us-east-1
您还需要设置您的地区。请注意,如果您使用其他AWS服务,它们可能会有不同的地区。因此,我建议您为您的SNS指定地区,即使您拥有全球范围的SNS。
例如,我的EC2实例区域与我的SNS区域不同,我正在根据我对EC2的配置推送通知。
我只是为任何遇到同样问题的人制定的。
消息格式是一场噩梦,每个平台都不一样。
我不得不加上这个。
publishRequest.setMessageStructure("json");
这是针对GCM-Android的
String gcmMessage = "{ \"GCM\": \"{ \\\"data\\\": { \\\"message\\\": \\\"Hi, AWS. Sort out your JSON parsing.\\\" } }\" }";
我正在尝试为我的核心项目设置CI,并将其包装到我们的feed。我在这里学习了软件包管理的禅宗教程 有点过时,但我相信我已经成功地翻译了这些变化。 My Build似乎工作正常,它构建并将打包成几个包。 这个版本似乎也可以工作,但是< code>Nuget Feed没有用最新的包更新。 我的发布任务只是一个任务,如下图所示。日志显示它找到并下载了这些包,但在实际推送到时没有显示任何成功。 这是一个日
我试图通过在线文档将stripe应用程序实现到iOS应用程序中。到目前为止一切都很好,现在把paymentView推到我的导航控制器堆栈上,我得到了一个完全破碎的屏幕。虽然stripe视图有问题,但是当我没有登录(见下面的代码-没有给出标识)并且登录屏幕被推送时,它也是完全黑色的。这个视图不会有问题,因为如果我在这个视图之前从另一个视图推送登录视图,它的加载就可以了。 那么,为什么通过下面的buy
我生成了一个没有密码的SSH密钥对,并将公钥添加到GitHub。 连接 成功,但当我重命名密钥时,它失败了。 但是当我想推送我的更改时,它仍然会询问我的用户名和密码组合。 有没有办法在没有密码的情况下推送?
问题内容: 我一直在尝试纠正此错误已有大约一个小时,而我的解决方案已用完,所以请帮助我。 heroku创建 运行正常没有问题 git push heroku主 需求文件: proc文件 网络:python manage.py runserver 0.0.0.0:$PORT –noreload Heroku日志: 问题答案: 我能够通过以下方式运行它: 克隆你的git仓库 从您的删除 我假设您没有,
一、基础配置 第一步:创建个推账号 如没有个推账号,需要创建个推推送账号及应用,获得AppID、AppKey和Master Secret 参数。如下图所示: 第二步:在智能触达中配置个推账号 在诸葛「智能触达→设置→触达渠道→推送消息」中,找到「个推推送」,填入上一步中得到的AppKey和Master Secret参数并完成开通。 第三步:确认SDK中添加推送逻辑代码 按照个推最新的开发文档集成时
我花了很多时间来解决我的这个问题,阅读文档多次,谷歌在这里和那里:SO,Laracast,Larachat等,但仍然无法让Laravel回声订阅推动者存在频道,它没有显示任何错误在控制台选项卡 公共和私人频道工作正常,用户可以订阅,用户可以监听/触发事件 注意:在创建这篇文章之前,我有一些与我的当前问题相关的搜索问题,它们都没有答案 一些和我类似的问题: https://laravelquesti