Russian (Pусский) translation by Masha Kolesnikova (you can also view the original English article)
В то время как создание приятного пользовательского опыта невероятно важно, привлечение новых и существующих пользователей еще более важно для долгосрочного успеха вашего приложения. В этом уроке вы узнаете, как использовать Firebase для включения облачных сообщений Google и отправки уведомлений в ваше приложение, а также как разрешить пользователям делиться своим приложением с их контактами, использующими устройства Android или iOS.
В этом учебнике предполагается, что вы уже создали проект для Firebase и имеете доступ к Firebase Console. Чтобы узнать, как начать работу с Firebase для Android, ознакомьтесь с одной из наших статей:
Начинаем работу с Firebase для Android
Как создать приложение-чат для Android с использованием Firebase
Firebase Notifications
Уведомления - один из самых простых способов сообщить своим пользователям о новых событиях или функциях в вашем приложении и заставить их снова открыть приложение. Используя Firebase, вы можете отправлять уведомления всем пользователям или сегментам вашей пользовательской базы, позволяя настраивать то, что получают ваши пользователи, и поднять их интерес.
Уведомления, когда ваше приложение находится в фоновом режиме
Отображение уведомлений, когда ваше приложение находится в фоновом режиме, невероятно просто, поскольку оно автоматически обрабатывается библиотекой сообщений Firebase. В вашем приложении вам нужно будет включить библиотеку со следующей строкой в node dependencies
вашего файла build.gradle и затем установить приложение на устройство.
compile 'com.google.firebase:firebase-messaging:9.8.0'
Затем вам нужно зайти в консоль Firebase и выбрать раздел «Notifications» на левой панели меню.

После того, как вы зайдете в нужный раздел, вы увидите экран, предлагающий отправить ваше первое сообщение.

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

После того, как вы отправили сообщение, на устройствах вашего пользователя должно появиться уведомление.
Уведомления в Foreground
Одно замечание - уведомления не будут отображаться для пользователя, если они уже находятся в вашем приложении. Чтобы получать уведомления в этой ситуации, вам нужно будет внедрить Service
, который расширяет FirebaseMessagingService
.
public class NotificationService extends FirebaseMessagingService { @Override public void onMessageReceived(RemoteMessage remoteMessage) { super.onMessageReceived(remoteMessage); } }
Вам также потребуется включить этот Service
в ваш файл AndroidManifest.xml.
<service android:name=".NotificationService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> </service>
Теперь, когда у вас есть общая структура, пришло время реализовать функцию onMessageReceived
в вашем классе FirebaseMessagingService
. Основная цель этого метода - передать данные, отправленные с помощью объекта RemoteMessage
, и создать Notification
, основанное на том, что вы получаете.
Существует много разной информации, которую можно передать с помощью RemoteMessage
. Однако большинство опций доступны только в том случае, если вы используете API-интерфейс Firebase, а не консоль. С консоли Firebase вы можете установить заголовок, тело сообщения и собственные пары ключ/значение.
Регистрация всех доступных данных из RemoteMessage
может быть выполнена следующим образом:
for (Map.Entry<String, String> entry : remoteMessage.getData().entrySet()) { Log.e("Test", "Key = " + entry.getKey() + ", Value = " + entry.getValue() ); } Log.e("TutsPlus", "collapsekey: " + remoteMessage.getCollapseKey()); Log.e("TutsPlus", "from: " + remoteMessage.getFrom() ); Log.e("TutsPlus", "message id: " + remoteMessage.getMessageId() ); Log.e("TutsPlus", "message type:: " + remoteMessage.getMessageType() ); Log.e("TutsPlus", "to: " + remoteMessage.getTo() ); Log.e("TutsPlus", "send time: " + remoteMessage.getSentTime() ); Log.e("TutsPlus", "ttl: " + remoteMessage.getTtl() ); Log.e("TutsPlus", "title: " + remoteMessage.getNotification().getTitle() ); Log.e("TutsPlus", "body: " + remoteMessage.getNotification().getBody() ); Log.e("TutsPlus", "click action: " + remoteMessage.getNotification().getClickAction() ); Log.e("TutsPlus", "color: " + remoteMessage.getNotification().getColor() ); Log.e("TutsPlus", "icon: " + remoteMessage.getNotification().getIcon() );
Что, в свою очередь, приведет к следующим логам.
E/TutsPlus: Key = custom_data_key, Value = some_value E/TutsPlus: collapsekey: com.tutsplus.tutsplusfirebasenotification E/TutsPlus: from: 1044252370931 E/TutsPlus: message id: 0:1478812920837872%ba5f8433ba5f8433 E/TutsPlus: message type:: null E/TutsPlus: to: null E/TutsPlus: send time: 1478812919847 E/TutsPlus: ttl: 0 E/TutsPlus: title: Custom title E/TutsPlus: body: Message Text E/TutsPlus: click action: null E/TutsPlus: color: null E/TutsPlus: icon: null
Как только вы узнаете, какая информация доступна, и как вы хотите ее обрабатывать, вы можете создавать и отображать уведомление для своих пользователей.
NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setContentTitle(remoteMessage.getNotification().getTitle()); builder.setSmallIcon(R.mipmap.ic_launcher); builder.setContentText(remoteMessage.getNotification().getBody()); NotificationManagerCompat.from(this).notify(0, builder.build());
Вот и все! Теперь вы можете настроить приложение Android для отправки и получения уведомлений с консоли Firebase.

Инвайты
Получение новых пользователей в вашем приложении может быть сложной задачей, но из уст в уста - это отличный способ привлечь новых пользователей. Используя Firebase, вы можете добавить виджет App Invites в свое приложение, который позволит вашим пользователям совместно использовать ваше приложение по электронной почте или SMS другим пользователям Android или iOS.
Запуск инвайта
Прежде чем вы сможете начать использовать эту функцию, вам нужно будет импортировать пакет в свой проект, добавив следующую строку в node dependencies
вашего файла build.gradle.
compile 'com.google.firebase:firebase-invites:9.8.0'
После того, как вы синхронизировали свой проект, вы сможете создать новый Intent
, используя класс AppInviteInvitation.IntentBuilder,
который запустит экран, который позволяет пользователям выбирать контакты для приглашения в приложение. Этот конструктор предоставляет различные параметры настройки экрана приглашения:
-
setMessage
: установит сообщение, которое пользователи увидят и смогут отправлять контактам по текстовому сообщению или электронной почте. Оно может быть не более 100 символов. -
setCustomImage
: Используя этот метод, вы можете предоставить URI собственного изображения, которое появится на экране приглашения и электронного письма. -
setCallToActionText
: этот метод устанавливает текст для кнопки установки в письмах. Его ограничение составляет 32 символа. -
setDeepLink
: Позволяет предоставить метаданные для вашего приглашения, которые могут быть получены при установке для принятия конкретных действий для вашего нового приглашенного пользователя. -
setEmailHtmlContent
: Позволяет переопределитьsetMessage
,setCustomImage
иsetCallToActionText
для создания настраиваемого электронного письма в формате HTML для отправки потенциальным новым пользователям. -
setEmailSubject
: требуется, если используетсяsetEmailHtmlContent
. Как следует из названия, это задает тему для вашего кастомного электронного письма. -
setOtherPlatformsTargetApplication
: один из наиболее интересных вариантов, этот метод позволит вам связать идентификатор клиентского приложения Firebase для версии вашего приложения iOS, позволяя пользователям iOS устанавливать правильную версию, если она доступна пользователю Android.
После того, как вы создали свой Intent
, вы можете запустить его с помощью startActivityForResult
, чтобы получать уведомления, когда пользователь вернулся из приглашения.
Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.string.invitation_title)) .setMessage(getString(R.string.invitation_message)) .setCustomImage(Uri.parse(getString(R.string.invitation_custom_image))) .setCallToActionText(getString(R.string.invitation_cta)) .setDeepLink(Uri.parse("/link")) .setOtherPlatformsTargetApplication( AppInviteInvitation.IntentBuilder.PlatformMode.PROJECT_PLATFORM_IOS, getString(R.string.ios_app_client_id)) .build();

Прием приглашений
Теперь, когда вы можете приглашать других пользователей в ваше приложение, давайте немного сосредоточимся на дип-линках. Когда вы создаете свой Intent
, вы можете добавить URI
в качестве дип-линка. Когда пользователь получает ваше приглашение на Android, вы можете использовать сервисы Google Play и API AppInvite для перехвата этого URI
и выполнения кастомных действий, таких как представление экрана приветствия для вашего нового пользователя.
boolean autodeeplink = true; mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(AppInvite.API) .enableAutoManage(this, this) .build(); AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autodeeplink) .setResultCallback( new ResultCallback<AppInviteInvitationResult>() { @Override public void onResult(AppInviteInvitationResult result) { if (result.getStatus().isSuccess()) { //Get intent information Intent intent = result.getInvitationIntent(); String deepLink = AppInviteReferral.getDeepLink(intent); String invitationId = AppInviteReferral.getInvitationId(intent); } } } );
Вы заметите, что мы создали boolean
с именем autodeeplink
. Если для этого параметра установлено значение true
, система Android автоматически обработает полученный URI
через фильтры в вашем файле AndroidManifest.xml. Если для него установлено значение false
, вы можете использовать API AppInvite для извлечения информации из приглашения и выполнения кастомных действий.
Вывод
В этом уроке вы узнали, как реализовать уведомления Firebase в своих приложениях Android и как разрешить пользователям легко делиться своим приложением со своими контактами. Понимание того, что доступно в Firebase и как реализовать общие функции, поможет вам быстро создавать приложения, которые будут нравится вашим пользователям.
Чтобы узнать больше о разработке Firebase или Android в целом, ознакомьтесь с некоторыми нашими другими курсами и учебниками здесь, в Envato Tuts +.
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Update me weeklyEnvato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!
Translate this post