Intereting Posts
Какой порядок вложенных макетов наиболее эффективен в Android Разработка Android: «поток, выходящий с неперехваченным исключением» Счет живого персонажа для EditText Android в приложении нескольких покупок Сменные вкладки в фрагменте меню слайдера Как сохранить и получить массив байтов (данные изображения) в базу данных SQLite и из нее? Как добавить прокрутку в представление, когда ориентация экрана изменена на альбомную? Как настроить пользовательский загрузчик в Universal Image Loader? Запуск тестов JUnit в приложении Gradle для Android Как я могу уведомить текущую активность от широковещательного приемника? WRAP_CONTENT не работает после динамического добавления просмотров Android – Как я могу просмотреть базу данных sql, созданную в моем приложении? Я запускаю его на эмуляторе Android в Eclipse Android studio – отсутствует каталог инструментов SDK " Создание целочисленного массива идентификаторов ресурсов Android progressBar не обновляет прогресс /

Зарегистрировать идентификатор устройства непосредственно с помощью Amazon SNS

Я использую веб-службу Amazon для отправки push-уведомлений непосредственно на устройство. После установки приложения я получаю идентификатор устройства, который мне нужно добавить вручную в ASA Amazon. Я хотел бы знать, есть ли в любом случае, чтобы зарегистрировать идентификатор устройства непосредственно с сервером амазонки в тот момент, когда пользователь запускает приложение.

Я прочитал это , но мне было трудно понять. Кто-нибудь имеет какой-либо предыдущий опыт в том, как это сделать?

EDIT 2 (Что я сделал до сих пор)

Я следил за инструкциями по этой ссылке

  1. Я загружаю файл snspobilepush.zip в соответствии с инструкциями и извлекаю и импортирую проект в eclipse. Я добавляю номер проекта GCM, добавляю файлы jar и запускаю приложение. Я получаю идентификатор регистрации устройства.

  2. Я открываю Amazon SNS, добавляю свой идентификатор устройства и публикую сообщение. Я получаю сообщение на своем мобильном телефоне. До сих пор отлично работает.

    МОЯ ПРОБЛЕМА

У меня было бы много потенциальных пользователей для моего приложения. Поэтому добавление каждого идентификатора устройства вручную в SNS не имеет смысла. Мне нужно, чтобы Amazon SNS напрямую регистрировал идентификатор моего устройства при запуске приложения. Есть ли у меня возможность сделать это? Я не мог найти окончательного ответа в документах.
Эта ссылка говорит мне использовать «услугу VK Token Vending». Однако я не мог найти никакого примера, как это сделать.

Solutions Collecting From Web of "Зарегистрировать идентификатор устройства непосредственно с помощью Amazon SNS"

Использование AmazonSNSClient, зарегистрированное здесь:

http://docs.aws.amazon.com/AWSAndroidSDK/latest/javadoc/

Необходимо зарегистрировать код, похожий на этот:

AWSCredentials awsCredentials = new BasicAWSCredentials("XXXXXX", XXXXXXXXXXXXXXX"); String platformApplicationArn = "arn:aws:sns:us-east-1:123456789:app/GCM/myappname"; AmazonSNSClient pushClient = new AmazonSNSClient(awsCredentials); String customPushData = "my custom data"; CreatePlatformEndpointRequest platformEndpointRequest = new CreatePlatformEndpointRequest(); platformEndpointRequest.setCustomUserData(customPushData); platformEndpointRequest.setToken(pushNotificationRegId); platformEndpointRequest.setPlatformApplicationArn(platformApplicationArn); CreatePlatformEndpointResult result = pushClient.createPlatformEndpoint(platformEndpointRequest); Log.w(TAG, "Amazon Push reg result: " + result); 

Мне не нравилось мое ARN, но это была глупая опечатка, которую указал Рейд и теперь зафиксирован выше.

Доступен Android AWS SDK. Проверьте ссылку на документацию: http://docs.aws.amazon.com/AWSAndroidSDK/latest/javadoc/

Кроме того, имеется дополнительная информация: http://aws.amazon.com/sdkforandroid/

Это работает для Firebase и Cognito. AsyncTask необходим, чтобы избежать работы в основном потоке.

 private class RegisterIdForAWS extends AsyncTask<String, Void, Void> { private Exception exception; protected Void doInBackground(String... urls) { try { String pushNotificationRegId = FirebaseInstanceId.getInstance().getToken(); if (pushNotificationRegId != null) { CognitoCachingCredentialsProvider provider = new CognitoCachingCredentialsProvider( getApplicationContext(), "us-west-2:aaaaaaaaa-1234-1234-1234-0bbbbbbbbbbbb", Regions.US_WEST_2); String platformApplicationArn = "arn:aws:sns:us-west-2:123456789:app/GCM/appname"; AmazonSNSClient pushClient = new AmazonSNSClient(provider); pushClient.setRegion(Region.getRegion(Regions.US_WEST_2)); String customPushData = ""; CreatePlatformEndpointRequest platformEndpointRequest = new CreatePlatformEndpointRequest(); platformEndpointRequest.setCustomUserData(customPushData); platformEndpointRequest.setToken(pushNotificationRegId); platformEndpointRequest.setPlatformApplicationArn(platformApplicationArn); CreatePlatformEndpointResult result = pushClient.createPlatformEndpoint(platformEndpointRequest); Log.w(TAG, "Amazon Push reg result: " + result); } } catch (Exception e) { this.exception = e; } return null; } protected void onPostExecute(String text) { Log.w(TAG, "Amazon Push reg Finished"); } }