Я использую AWS
ресурсы для своего проекта Android, я планирую добавить службу push-уведомлений для своего проекта с. AWS SNS
Есть несколько вопросов, которые меня сильно беспокоят. Я не нашел по ним никаких вопросов, кроме одного или двух, но с непонятными объяснениями.
1.Does AWS
поддержки FCM
? SNS
работать с GCM
. Но Google рекомендует использовать FCM вместо GCM
. AWS
Поддержки не нашел FCM
.
2. Сохраняют ли AWS
сообщения (или данные) в своих базах данных даже после отправки push-уведомлений?
3. Я попытался поместить ключ API FCM в платформу приложений SNS, почему он показывает недопустимые параметры?
Ответы:
FCM обратно совместим с GCM. Шаги по настройке FCM на AWS идентичны процедуре настройки GCM и (по крайней мере, на данный момент) FCM прозрачно работает с GCM и SNS в отношении конфигурации на стороне сервера.
Однако , если вы отправляете
data
полезные данные на устройство Android, они не будут обработаны, если вы не реализуете расширяемую клиентскую службуFirebaseMessagingService
. Генератор сообщений JSON по умолчанию в консоли AWS отправляетdata
сообщения, которые будут игнорироваться вашим приложением, если не будет реализована вышеупомянутая служба. Чтобы обойти это для первоначального тестирования, вы можете предоставить пользовательскуюnotification
полезную нагрузку, которая будет получена вашим устройством (если ваше приложение не находится на переднем плане)Есть инструкции по миграции GCM-FCM, предоставленные Google, однако изменения, которые вам необходимо внести, в основном находятся на стороне приложения.
Чтобы протестировать GCM / FCM в своем приложении с помощью SNS, необходимо выполнить следующие шаги:
FirebaseInstanceIDService
и переопределитьonTokenRefresh
метод, чтобы увидеть это в своем приложении для Android. Как только вы это сделаете , удалите и переустановите приложение, и ваш токен должен быть напечатан в консоли отладки в Android Studio при первой загрузке.Сообщение, которое генерирует SNS, будет иметь форму:
Как мы упоминали ранее,
data
полезные данные будут игнорироваться, если не была реализована служба для их получения. Мы хотели бы протестировать без написания слишком большого количества кода, поэтому вместо этого мы должны отправитьnotification
полезную нагрузку. Для этого просто измените сообщение JSON на следующее:После этого убедитесь, что ваше приложение не запущено на устройстве, и нажмите кнопку « Опубликовать сообщение» . Теперь вы должны увидеть всплывающее уведомление на вашем устройстве.
Конечно, вы можете сделать все это программно через Amazon SNS API, однако все примеры, похоже, используют
data
полезную нагрузку, поэтому вам нужно помнить об этом и генерировать полезную нагрузку, соответствующую вашему варианту использования.источник
data
messages работает нормально с использованием sns, даже если клиентское приложение не реализует FCM, а GCM. В моем приложении я не обновлялся до FCM на стороне клиента, но FCM с использованием SNS отлично работает и дляdata
сообщений. Разве это не должно работать?Теперь вы можете перейти в консоль firebase ( https://console.firebase.google.com/ ), выбрать свой проект, щелкнуть значок шестеренки и выбрать настройки проекта, затем щелкнуть вкладку облачных сообщений ...
Вы увидите устаревший ключ сервера, который является ключом API GCM, и у вас будет возможность сгенерировать новые ключи сервера, которые являются версиями FCM.
SNS примет обе версии, но их пункт меню по-прежнему относится к категории GCM.
Вот изображение для справки:
Обратите внимание, что вы можете «случайно» удалить свои ключи сервера, но ключ старого сервера удалить нельзя. Кроме того, если вы нажмете кнопку добавления ключа сервера, вы получите новый ключ сервера НИЖЕ первого, БЕЗ ПРЕДУПРЕЖДЕНИЙ! ... Хорошая работа Google;)
источник
Я попытался использовать решение с полезной нагрузкой уведомления вместо данных, но мне не приходили push-уведомления на мобильное устройство. Я нашел этот учебник https://youtu.be/iBTFLu30dSg с английскими субтитрами о том, как пошагово использовать FCM с AWS SNS, и пример того, как отправлять push-уведомления из консоли AWS и реализовать его на php с помощью aws php sdk. Это мне очень помогло.
источник
Еще одно примечание к отличному ответу Натана Данна. Как отправить данные с уведомлением из SNS в Firebase.
Нам нужно добавить данные в Json (внутри уведомления):
В вашей реализации FirebaseMessagingService (пример Xamarin)
источник
Просто дополнительное примечание к ответу Натана Данна: чтобы добавить звук, используйте следующее сообщение JSON
источник
Мне потребовалось время, чтобы понять, как отправить уведомление с нужной полезной нагрузкой (опубликовать в теме). Я положу это сюда.
источник
Amazon поддерживает FCM, поскольку весь предыдущий код был перенесен с GCM на FCM. В статье ниже подробно объясняется.
Статья опубликована Amazon
источник
Чтобы ответить на вопросы:
Подробное руководство по настройке FCM с SNS можно найти в этой статье.
источник