0

我需要在 Android 设备之间为 AWS Mobile Hub 项目发送推送通知。它只是设备到设备的消息传递,不涉及任何主题。我已经集成了 FCM 和 PinPoint

pinpointManager.getNotificationClient().registerDeviceToken(newToken)

我正在使用此代码获取 endPointID

String epID = pinpointManager.getTargetingClient().currentEndpoint().getEndpointId();

我可以使用上面的 endPointID 从 PinPoint 控制台成功地将消息推送到设备。但我想从 android 设备本身推送。但是,由于 PinPoint Android SDK 中没有任何发布 API,我已经集成了 SNS。我正在尝试使用以下代码使用从 PinPoint 收到的端点 ID 通过 SNS 发布:

PublishRequest publishRequest = new PublishRequest();
publishRequest.setTargetArn(epID);
publishRequest.setMessage("Hello from android");

AmazonSNSClient snsClient = new AmazonSNSClient(App.getCCCProvider());
snsClient.publish(publishRequest);

但收到以下异常

com.amazonaws.services.sns.model.InvalidParameterException:无效参数:TargetArn 原因:ARN 必须至少包含 6 个元素,而不是 1 个(服务:AmazonSNS;状态代码:400;错误代码:InvalidParameter;请求 ID:7ff39768-c6f9 -5a6e-8211-c5ec586276fb)

如果有帮助,我的端点 ID 是:1fa93529-a5ac-4d70-995a-be1584c68a37

你们有什么建议或解决方案吗?

4

1 回答 1

1

您正在寻找的 API 就是Pinpoint.sendMessagesAPI。

REST 文档

用于 sendMessages 的 JavaDoc

您的请求可能类似于:

amazonPinpoint.sendMessages(
        new SendMessagesRequest()
                .withApplicationId("APP_ID")
                .withMessageRequest(
                        new MessageRequest()
                                .withMessageConfiguration(
                                        new DirectMessageConfiguration()
                                                .withGCMMessage(
                                                        new GCMMessage()
                                                                .withBody("Hello from android")
                                                )
                                )
                                .addEndpointsEntry(
                                        "DESTINATION_ENDPOINT_ID",
                                        // You can provide overrides and the like here
                                        new EndpointSendConfiguration()
                                )
                )
)
于 2017-11-14T08:33:43.437 回答