Статьи

Firebase для Android: уведомления и приглашения приложений

В то время как создание вашего приложения для обеспечения отличного опыта невероятно важно, взаимодействие с новыми и существующими пользователями еще более важно для долгосрочного успеха вашего приложения. В этом руководстве вы узнаете, как использовать Firebase для включения Google Cloud Messaging и отправки уведомлений в ваше приложение, а также как разрешить пользователям делиться вашим приложением со своими контактами, которые используют устройства Android или iOS.

В этом руководстве предполагается, что вы уже настроили проект для Firebase и имеете доступ к консоли Firebase . Чтобы узнать, как начать работу с Firebase для Android, ознакомьтесь с одним из других наших руководств:

  • Начните с Firebase для Android

  • Как создать приложение для Android-чата с помощью Firebase

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

Отображать уведомления, когда ваше приложение находится в фоновом режиме, невероятно легко, так как оно обрабатывается автоматически библиотекой Firebase Messaging. В вашем приложении вам нужно будет включить библиотеку со следующей строкой в dependencies узел вашего файла build.gradle , а затем установите приложение на устройстве.

1
compile ‘com.google.firebase:firebase-messaging:9.8.0’

Далее вам нужно зайти в консоль Firebase и выбрать раздел « Уведомления » на левой навигационной панели.

Переход к уведомлениям в Firebase

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

Запрос перед отправкой вашего первого уведомления Firebase

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

Уведомление о фоновом приложении

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

Следует отметить, что уведомления не будут отображаться для пользователя, если они уже есть в вашем приложении. Чтобы получать уведомления в этой ситуации, вам нужно будет внедрить Service который расширяет FirebaseMessagingService .

1
2
3
4
5
6
public class NotificationService extends FirebaseMessagingService {
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
    }
}

Вам также необходимо включить эту Service в файл AndroidManifest.xml .

1
2
3
4
5
6
<service
    android:name=».NotificationService»>
    <intent-filter>
        <action android:name=»com.google.firebase.MESSAGING_EVENT»/>
    </intent-filter>
</service>

Теперь, когда у вас есть общая структура, пришло время onMessageReceived в вашем классе FirebaseMessagingService . Основная цель этого метода — взять данные, отправленные с объектом RemoteMessage и создать Notification на основе того, что вы получите.

Существует много информации, которую можно передать с помощью RemoteMessage . Однако большинство параметров доступны только в том случае, если вы используете внутренний интерфейс Firebase, а не консоль. С консоли Firebase вы можете установить заголовок, текст сообщения и пользовательские пары ключ / значение.

Регистрация всех доступных данных из RemoteMessage может быть выполнена следующим образом:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
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() );

Который, в свою очередь, выдаст следующие сообщения журнала.

01
02
03
04
05
06
07
08
09
10
11
12
13
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

Как только вы узнаете, какая информация доступна и как вы хотите с ней обращаться, вы можете создавать и отображать уведомления для своих пользователей.

1
2
3
4
5
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, вы можете добавить в приложение виджет «Приглашения в приложение», который позволит вашим пользователям делиться вашим приложением по электронной почте или SMS с другими пользователями Android или iOS.

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

1
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 чтобы получать уведомления, когда пользователь вернулся от приглашения других.

1
2
3
4
5
6
7
8
9
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 и выполнить настраиваемое действие, например, представление экрана приветствия, для вашего нового пользователя.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
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 +.

  • Начало работы Создание приложения для проектирования материалов

  • Android From Scratch: отчеты о сбоях Firebase

  • Firebase для Android: Хранение файлов

  • Перенос приложения Android на дизайн материалов