AWS PinPoint - отправка push-уведомлений С устройства Android

Мне нужно отправлять push-уведомления между устройствами Android для проекта AWS Mobile Hub. Это только обмен сообщениями с устройства на устройство, темы не затрагиваются. Я уже интегрировал FCM и PinPoint

pinpointManager.getNotificationClient().registerDeviceToken(newToken)

Я получаю endPointID с помощью этого кода

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

Я могу успешно отправлять сообщения на устройство из консоли PinPoint, используя указанный выше endPointID. Но я хочу нажать с самого андроид устройства. Однако, поскольку в PinPoint Android SDK нет API публикации, я интегрировал SNS. Я пытаюсь опубликовать в SNS, используя идентификатор конечной точки, полученный от PinPoint, используя этот код:

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; идентификатор запроса: 7ff39768-c6f9 -5a6e-8211-c5ec586276fb)

Если это поможет, мой идентификатор конечной точки: 1fa93529-a5ac-4d70-995a-be1584c68a37

Какие-нибудь советы или решения от вас, ребята?


person desidigitalnomad    schedule 14.11.2017    source источник


Ответы (1)


API, который вам нужен, - это Pinpoint.sendMessages API.

Документация REST

JavaDoc для sendMessages

Ваш запрос, вероятно, будет выглядеть примерно так:

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()
                                )
                )
)
person Cheruvian    schedule 14.11.2017
comment
Спасибо чувак! Я подскочил от волнения, когда увидел этот ответ, но, к сожалению, API недоступен в Android SDK :(. Отредактировал свой вопрос, чтобы сделать его более понятным. Есть ли что-то подобное в Android SDK? - person desidigitalnomad; 14.11.2017
comment
Вы правы, к сожалению, не похоже, что они включили его в урезанную версию Pinpoint SDK. Можете ли вы просто импортировать полный SDK, как вы это сделали с SNS SDK? - person Cheruvian; 20.11.2017