Используем Branch.io в своих приложениях

Введение

 

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

Таким образом, использование реферального маркетинга может быть крайне полезно потому, что человек с большей вероятностью будет прислушиваться к мнению своих друзей, родных или близких, чем к объявлениям в рекламе. Например, пользователь, который скачал приложение и остался им доволен, сможет не только посоветовать приложение другим людям, но и дать так называемую реферальную ссылку, по которой будущие пользователи смогут напрямую перейти в магазин и установить приложение себе на устройство. Это придаёт продвижению некоторую «вирусность», что в данном случае пойдёт только на пользу.

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

Начало работы в Branch

Перед тем, как приступить к добавлению нужных инструментов в приложение, нужно зарегистрировать аккаунт и приложение в Branch. Для данной статьи мы будем добавлять реферальные ссылки в одно из наших приложений, русско-бурятский словарь Бурдик.

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

Имя можно выбрать любое, главное, чтобы оно было информативным и понятным. Например, напишем burdic.app.link.

После этого нужно указать, есть ли у вашей компании сайт, а также выбрать, на каких платформах работает ваше приложение (iOS\Android) и дать ссылки на приложение в магазине.

Если у вас нет приложения на iOS, вы можете просто нажать No и пропустить этот шаг. Для Android же вам понадобится ввести название пакета, как оно указано в магазине, после чего приложение будет найдено.

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

Далее будет предложено добавить какую-либо информацию о приложении, а также указать схему URI, с помощью которой Branch будет открывать приложение. Её можно задать в формате вашеприложение://

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

На этом настройка на сайте завершена, и можно перейти к добавлению Branch в наше приложение. Если вы пропустили шаг с инструкциями и хотите их прочитать, вы можете на панели управления в меню нажать Set Up SDK.

Настройка Branch в приложении

Для начала вам нужно добавить библиотеку в зависимости проекта. Для этого откройте build.gradle модуля приложения и в блоке dependencies добавьте следующую строку.

dependencies {
  compile 'io.branch.sdk.android:library:2.+'
}

Важно учесть, что для работы библиотеки требуется минимальная версия SDK проекта 15. Если у вас указана версия ниже, вы должны либо повысить версию, либо добавить в проект библиотеку с версией не 2.+, а 1.14.5, однако функционал этой версии меньше, чем в актуальной.

Затем нужно в манифест приложения добавить необходимые теги. Откройте файл AndroidManifest.xml и добавьте в тег активности, на которой вы хотите запустить Branch, следующий код.

<intent-filter>
  <data
      android:host="open"
      android:scheme="burdic"/>
  <action android:name="android.intent.action.VIEW"/>

  <category android:name="android.intent.category.DEFAULT"/>
  <category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>

Вот этот код нужно добавить в конец тега <application>.

<!-- Branch init -->
<meta-data
    android:name="io.branch.sdk.BranchKey"
    android:value="key_live_aayHr0iTQ8yDY3nT1SIfwbloDtjBsm4n"/>
<meta-data
    android:name="io.branch.sdk.BranchKey.test"
    android:value="key_test_ibrNsXcPO1uv3ZdH3TQgHbkeAzpyvmXz"/>

<!-- Branch testing (TestMode "true" to simulate fresh installs on dev environment) -->
<meta-data
    android:name="io.branch.sdk.TestMode"
    android:value="false"/>

<!-- Branch install referrer tracking -->
<receiver
    android:name="io.branch.referral.InstallListener"
    android:exported="true">
  <intent-filter>
    <action android:name="com.android.vending.INSTALL_REFERRER"/>
  </intent-filter>
</receiver>

Теперь нам нужно добавить в класс, наследующий от Application. Если у вас его нет, его можно легко создать, для этого в манифесте у тега <application> добавьте атрибут android:name=»Имя класса». Поставьте курсор на имени класса и нажмите Alt + Enter, выберите Create class и Android Studio сама всё сделает.

В классе Application в метод onCreate() добавьте следующую строку.

Branch.getAutoInstance(this);

Затем в классе активности, для которой мы подключали в манифесте Branch, нужно добавить в метод onStart() следующий код, отвечающий за инициализацию библиотеки.

branch = Branch.getInstance();
branch.initSession(new Branch.BranchReferralInitListener() {
  @Override public void onInitFinished(JSONObject referringParams, BranchError error) {
    if (error == null) {
      // выполняем нужные операции
    } else {
      // обрабатываем ошибку
    }
  }
}, this.getIntent().getData(), this);

Кроме того, в классе активности нужно будет переопределить метод onNewIntent().

@Override public void onNewIntent(Intent intent) {
  this.setIntent(intent);
}

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

Подключение реферальных ссылок

Сейчас в приложении есть кнопка «Поделиться», с помощью которой можно отправить простое сообщение кому-либо. Изменить принцип её работы, добавив в неё создание и отправку реферальной ссылки.

При нажатии на «Поделиться», пользователь увидит диалоговое окно с просьбой ввести своё имя.

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

AlertDialog.Builder builder = new AlertDialog.Builder(this);
  LayoutInflater layoutInflater = LayoutInflater.from(this);
  View view = layoutInflater.inflate(R.layout.dialog_referral, null);
  builder.setView(view);
  final EditText editText = view.findViewById(R.id.et_name);
  builder.setTitle(R.string.dialog_share);
  builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
    @Override public void onClick(DialogInterface dialogInterface, int i) {
      dialogInterface.dismiss();
    }
  });
  builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
    @Override public void onClick(DialogInterface dialogInterface, int i) {
      if (!editText.getText().toString().isEmpty()) {
        genLink(editText.getText().toString());
      } else {
        Toast.makeText(MainActivity.this, R.string.error_referral_name, Toast.LENGTH_LONG).show();
      }
    }
  });
  builder.show();
}

Если поле заполнено и нажата кнопка ОК, запустится метод genLink(), создающий реферальную ссылку. Код метода представлен ниже.

private void genLink(@NonNull String name) {
  BranchUniversalObject branchUniversalObject =
      new BranchUniversalObject().setCanonicalIdentifier("item/12345")
          .setTitle(getString(R.string.app_name))
          .setContentDescription(getString(R.string.app_description))
          .setContentImageUrl(
              "https://lh4.ggpht.com/Zkxyl6niWgFzgiFHSEE1RS-3zGAbkC2FpEDk47d-yxq8Jtt9qu62Z8DZGhOXN2BvYg=w300-rw")
          .setContentIndexingMode(BranchUniversalObject.CONTENT_INDEX_MODE.PUBLIC)
          .setContentMetadata(new ContentMetadata().addCustomMetadata("referredBy", name));

  LinkProperties linkProperties = new LinkProperties().setChannel("facebook")
      .setFeature("sharing")
      .addControlParameter("$desktop_url",
          "https://play.google.com/store/apps/details?id=com.rusdelphi.burdic_lite")
      .addControlParameter("$android_url",
          "https://play.google.com/store/apps/details?id=com.rusdelphi.burdic_lite");

  ShareSheetStyle shareSheetStyle =
      new ShareSheetStyle(MainActivity.this, getString(R.string.share_title),
          getString(R.string.share_message)).setCopyUrlStyle(
          getResources().getDrawable(android.R.drawable.ic_menu_send), getString(R.string.copy),
          getString(R.string.added_to_clipboard))
          .setMoreOptionStyle(getResources().getDrawable(android.R.drawable.ic_menu_search),
              getString(R.string.show_more))
          .addPreferredSharingOption(SharingHelper.SHARE_WITH.FACEBOOK)
          .addPreferredSharingOption(SharingHelper.SHARE_WITH.EMAIL)
          .setAsFullWidthStyle(true)
          .setSharingTitle(getString(R.string.share_to));

  branchUniversalObject.showShareSheet(this, linkProperties, shareSheetStyle,
      new Branch.BranchLinkShareListener() {
        @Override public void onShareLinkDialogLaunched() {
        }

        @Override public void onShareLinkDialogDismissed() {
        }

        @Override public void onLinkShareResponse(String sharedLink, String sharedChannel,
            BranchError error) {
        }

        @Override public void onChannelSelected(String channelName) {
        }
      }, new Branch.IChannelProperties() {
        @Override public String getSharingTitleForChannel(String channel) {
          return channel.contains("Messaging") ? "title for SMS"
              : channel.contains("Slack") ? "title for slack"
                  : channel.contains("Gmail") ? "title for gmail" : null;
        }

        @Override public String getSharingMessageForChannel(String channel) {
          return channel.contains("Messaging") ? "message for SMS"
              : channel.contains("Slack") ? "message for slack"
                  : channel.contains("Gmail") ? "message for gmail" : null;
        }
      });
}

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

Например, можно отправить SMS-сообщение с реферальной ссылкой.

Перейдя по ней, пользователь попадёт в Google Play и, установив и запустив приложение, увидит имя человека, который поделился ссылкой. Все эти операции (создание ссылки, клики по ней) отслеживаются также на вкладке Liveview панели управления.

Отправка событий в Branch

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

handler.removeCallbacks(runnable);
runnable = new Runnable() {
  @Override public void run() {
    mAdapter.filter(query);
    JSONObject params = new JSONObject();
    try {
      params.put("word", query);
    } catch (JSONException e) {
      e.printStackTrace();
    }
    branch.userCompletedAction("search", params);
  }
};
handler.postDelayed(runnable, 500);

Метод userCompletedAction() посылает событие «search» с параметрами params, которые представляют из себя обычную JSON-строку. На панели управления она отобразится в следующем виде.

Нашли ошибку в тексте?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *