Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Возможности Firebase, о которых вы скорее всего...

Возможности Firebase, о которых вы скорее всего еще не знали

Про Firebase рассказано уже очень много, мы все слышали и использовали FCM, Realtime database и другие возможности. Но у Firebase есть и менее популярные средства, в частности для популяризации и развития ваших приложений

Artur Vasilov

January 28, 2017
Tweet

More Decks by Artur Vasilov

Other Decks in Programming

Transcript

  1. Я сделал приложение Идея, аналитика, дизайн, разработка, тестирование (повторяй 10

    раз), продакшен • Где мои 5 звезд (кроме друзей)? • Где мои 1млн пользователей? • В конце концов, где мои деньги?
  2. Шаринг контента в приложении • Написать текст для шаринга •

    Отправить письмо • Получить письмо • Найти и установить приложение • Найти нужный (отправленный) контент в приложении Отправитель Получатель
  3. Зачем Firebase? • Проще • Более user-friendly • Функциональность, которую

    вы не сможете сделать без проприетарного API Google Play Services
  4. Firebase App Invites • Работает с помощью Deep Links •

    Легко и красиво • Отправка SMS или через почту
  5. Отправляем инвайт public void sendInvite(@NonNull String eventName, @NonNull String imageLink,

    @NonNull String deepLink) { Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.string. invitation_title)) .setMessage(getString(R.string. invitation_message_format, eventName)) .setDeepLink(Uri.parse(deepLink)) .setCustomImage(Uri. parse(imageLink)) .build(); startActivityForResult(intent, APP_INVITE_REQUEST_CODE); }
  6. Регистрируем Deep Link • Вручную через консоль • С помощью

    REST API • Совсем вручную (много параметров) https://app_code.app.goo.gl/?link=your_deep_link&apn=package_name[&amv=mi nimum_version][&al=android_link][&afl=fallback_link]
  7. Получаем Deep Link AppInvite.AppInviteApi.getInvitation( mGoogleApiClient, this, false) .setResultCallback( result ->

    { if (result.getStatus().isSuccess()) { Intent intent = result.getInvitationIntent(); String deepLink = AppInviteReferral. getDeepLink(intent); //deepLink = http://gdgkazan.ru/events/8 //TODO : handle deep link } });
  8. Проблема • Среднее число приложение на устройстве? • Сколько не

    используется? • Сколько из оставшихся открывались только 1 раз?
  9. Проблема • Среднее число приложение на устройстве? (36) • Сколько

    не используется? (¾) • Сколько из оставшихся открывались только 1 раз? (⅓) А где ваше приложение?
  10. Решение • Пуш-уведомления / акции и прочее Заманиваем пользователя в

    наше приложение через другие источники: • Реклама в соц. сетях и на специальных платформах • Шаринг в приложениях • App Invites • App Indexing
  11. Firebase App Indexing • Соединяет ваш сайт с приложением (считается,

    что приложение способно обеспечить лучший User Experience) при выдаче поисковых результатов • Возможность поиска по локальному контенту приложения
  12. Поиск контента • Общедоступный контент (контент сайта). Google связывает страницы

    сайтов со страницами приложений. • Личный контент (данные из установленного приложения). Позволяет искать информацию в приложении Google. • Аналогично работает через Deep Links.
  13. Добавляем контент List<Indexable> indexableNotes = new ArrayList<>(); for (Question question

    : questions) { Indexable noteToIndex = Indexables. noteDigitalDocumentBuilder() .setName(question.getTitle()) .setDescription(question.getLink()) .setAuthor(Indexables. personBuilder() .setImage(question.getOwner().getProfileImage()) .setName(question.getOwner().getName())) .setUrl(BuildConfig. QUESTIONS_ENDPOINT + question.getQuestionId()) .build(); indexableNotes.add(noteToIndex); }
  14. Добавляем контент if (indexableNotes.size() > 0) { Indexable[] notesArr =

    new Indexable[indexableNotes.size()]; notesArr = indexableNotes.toArray(notesArr); FirebaseAppIndex.getInstance().update(notesArr); } //... FirebaseAppIndex.getInstance().remove(); FirebaseAppIndex.getInstance().removeAll();
  15. Обрабатываем пришедшую ссылку <activity android:name=".activity.QuestionActivity"> <intent-filter android:label="@string/app_name"> <action android:name="android.intent.action.VIEW"/> <category

    android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:host="stackoverflow.com" android:pathPrefix="/questions" android:scheme="http"/> </intent-filter> </activity>
  16. Полезные ссылки • App Invites ◦ docs https://firebase.google.com/docs/invites/ ◦ best

    practices https://firebase.google.com/docs/invites/best-practices ◦ sample https://github.com/ArturVasilov/GDGKazan • App Indexing ◦ docs https://firebase.google.com/docs/app-indexing/ ◦ sample https://github.com/ArturVasilov/StackDroid