Intereting Posts
Robolectric с использованием фрагментов и ActionBarCompat NullPointerException Как вывести LogCat на консоль? Android – ActivityOptionsCompat – Пользовательский развернуть анимацию Как ограничить высоту раскрывающегося списка Spinner в Android Существует ли приемлемый кросс-платформенный метод для отображения цифровой клавиатуры в стандартных веб-формах на сенсорном устройстве? Gradle: FAILURE: не удалось определить, какие задачи выполнить Выбор намерений для Android Android onCreate onResume Запретить пользователю вставлять больше символов после ограничения размера в поле EditText Имя GoogleAccountCredential равно null, несмотря на вызов setSelectedAccountName (Android 6.0) Читать все SMS от конкретного отправителя Android Camera setJpegКачество игнорируется Обфускация частных полей с помощью ProGuard Элемент меню Android с обоими значками и текстом вместе, когда showAsAction никогда Как я могу уведомить текущую активность от широковещательного приемника?

Зарегистрировать идентификатор устройства непосредственно с помощью 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"); } }