К основному содержимому
Программа интеграции Welltory
Mark avatar
Автор: Mark
Обновлено более 2 лет/г. назад

Общее описание

Что это такое

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

Зачем это нужно

Для любого приложения, которое хочет поддерживать своих пользователей в наилучшей форме. Например:

  • если вы делаете приложение для трейдеров и хотите, чтобы они могли измерить свой уровень стресса перед началом торгового дня, чтобы предсказать, как это может повлиять на принятие ими решений;

  • если вы делаете приложение для спорта и собираетесь отправить человека на тренировку по персонализированной программе, определите тяжесть рекомендуемой тренировки в зависимости от уровня энергии;

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

Если вы не уверены, подходит ли вам программа интеграции Welltory, напишите нам.

Как это работает

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

Механизм шеринга данных и выполнения замера (DDS — direct data sharing) — это прямое взаимодействие между мобильными приложениями без необходимости интеграции SDK, API или использования сервера. Механизм DDS реализован на основе вызова universal links: передача намерений и получении результатов происходит через специальные ссылки. Подробнее об этом ниже.

Посмотреть на примере

Установите Welltory DDS Demo — оно покажет, как работает приложение-партнер вместе с Welltory, а именно:

  • как для пользователя будет выглядеть переход в AppStore или Google Play

  • сам процесс замера

  • запрос на шеринг

  • возвращение в приложение

  • пример представления результатов

Там же можно посмотреть исходники с кодом интеграции для iOS и Android

Как заинтегрироваться

Просто оставьте заявку вот здесь и мы обязательно с вами свяжемся.

После того как мы обговорим все детали, вы сможете интегрировать замеры Welltory в свое приложение.

Это бесплатно.

Техническая информация

Пошаговый сценарий

1. Ваше приложение запрашивает у Welltory замер стресса и ожидает в ответ результат замера.
2. Welltory получает запрос

3. Пользователь переходит в Welltory и начинает замер
4. Welltory выполняет замер и рассчитывает результат

5. Welltory получает разрешение пользователя, чтобы поделиться (шеринг) результатом замера с вашим приложением

6. Welltory передает (шерит) результат замера вашему приложению и вызывает его

Техническое описание интеграции

iOS

Запрос замера выполняется через вызов universal link партнерским приложением.

Запрос замера

Flow работы universal link меняется в зависимости от того, установлено или нет приложение Welltory у конечного пользователя. При этом меняется только ход обработки вызова universal link, но никак не меняется поведение партнерского приложения.

Сценарий запуска universal link при первом замере в Welltory:

  • Вызывается universal link

  • Система открывает universal link в браузере

  • Сервер Welltory перенаправляет пользователя в AppStore

  • Пользователь устанавливает приложение Welltory

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

Сценарий запуска universal link при втором и последующих замерах в Welltory:

  • Вызывается universal link 

  • Universal link перехватывается приложением Welltory, тем самым система запускает приложение

  • Выполняются действия и расчеты внутри приложения

Замер считается вторым и далее, если до этого был выполнен запрос и получен результат замера от Welltory. Важно: Universal link меняется в зависимости от того, выполняется замер впервые или нет.

Входные параметры

Что в одном, что в другом случае параметры одинаковые:

Universal link имеет следующий вид: [request_Link]?source=[Your App]&callback=[Encoded_Callback_URL]

Где:

  • source - название партнерского приложения

  • callback - universal link партнерского приложения. Передается в виде закодированной ссылки. Ссылка может содержать GET параметры. Важно: мы НЕ сохраняем параметры в базу данных Ссылка будет вызвана для передачи результата и контроля обратно партнерскому приложению. Welltory самостоятельно добавит к callback url параметры с результатами выполнения замера.

Запуск первого замера в Welltory

Ссылка для первого замера, когда неизвестно, есть ли у пользователя приложение Welltory:

  • [FIRST_LAUNCH_LINK]

Пример запроса:

  • Без параметров [FIRST_LAUNCH_LINK]?source=YourApp&callback=https%3A%2F%2Fwww.yourapp.com%2Fdds%2F

  • С параметрами [FIRST_LAUNCH_LINK]?source=YourApp&callback=https%3A%2F%2Fwww.yourapp.com%2Fdds%2F%3Fparam_1%3D123 

Запуск второго и далее замера в Welltory

Ссылка для каждого второго и далее замера, когда известно, что приложение есть:

Пример запроса:

Результат выполнения

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

Цвет:

  • green = отлично

  • yellow = нормально

  • red = плохо

Цветовые трактовки замера не передаются, если замер низкого качества, либо если результат неоднозначен. Величина самого параметра в таком случае принимает значение 0. 

Для передачи результатов обратно в партнерское приложение и вызов партнерского приложения на iOS используется universal link. 

При запросе DDS партнерское приложение обязано передать параметр callback, в котором указывается callback universal link.

Именно этот callback universal link вызывается после замера и выполнения расчетов. Перед вызовом callback universal link к нему добавляются параметры-результаты выполнения DDS. 

Таким образом, если исходный callback universal link имел вид: 

То фактически вызов будет выглядеть так: 

Требования к стороннему приложению

Для получения результата от Welltory в iOS приложение - приложение должно поддерживать universal link.

Android

Запрос замера выполняется через отправку URI интента.

Важно: Ссылка интента меняется в зависимости от того, установлено или нет приложение Welltory. 

Входные параметры

Что в одном, что в другом случае параметры одинаковые:

source=<Название приложения>&callback=<packageName>/<activityName>&<params>

  • source - название, которое будет показано в интерфейсе Welltory

  • callback - в какое приложение и activity передать данныеВажно: У activity должно быть прописано android:exported=”true”

  • <params> - [опционально] параметры, которые пробросить в результат замераВажно: мы НЕ сохраняем параметры в базу данных

Например: Например: source=YourApp&callback=com.package.name/com.package.name.activity&param3=123&param4=Hello

Запуск первого замера в Welltory

Ссылка для первого замера, когда неизвестно есть ли у пользователя приложение Welltory: 

Например,

Запуск второго и далее замера в Welltory

Ссылка для каждого второго и далее замера, когда известно, что приложение есть: welltory://branch/Measurement/Start/<utf_8_encoded_params>,

где utf_8_encoded_params - это параметры, закодированные через URLEncoder.encode(params, "UTF-8").

Например: welltory://branch/Measurement/Start/source%3DYourApp%26callback%3Dcom.welltory.dds.android%2Fcom.welltory.dds.android.MainActivity%26param1%3Dtest_param1

Важно: Стартовать Intent с флагами FLAG_ACTIVITY_NEW_TASK и FLAG_ACTIVITY_CLEAR_TOP, иначе возможна ситуация, когда будет существовать 2 инстанса активити партнерского приложения.

Example

String callBackActivity = String.format(Locale.getDefault(), "%s/%s",
 
       activity.getPackageName(), activity.getClass().getName());
 
String params = String.format(Locale.getDefault(),
 
       "source=%s&callback=%s¶m1=test_param1", "YourApp", callBackActivity);
 
Intent intent = null;
 
try {
 
   String encodedParams = URLEncoder.encode(params, "UTF-8");
 
   intent = new Intent(Intent.ACTION_VIEW, Uri.parse("welltory://branch/Measurement/Start/" + encodedParams));
 
   if (intent.resolveActivity(activity.getPackageManager()) == null) {
 
       intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=com.welltory.client.android&referrer=" + encodedParams));
 
   }
 
} catch (UnsupportedEncodingException e) {
 
   e.printStackTrace();
 
}
 
if (intent != null) {
 
   intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
 
   activity.startActivity(intent);
 
}

Результат выполнения

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

Цвет:

  • green = отлично

  • yellow = нормально

  • red = плохо

Цветовые трактовки замера не передаются, если замер низкого качества, либо если результат неоднозначен. Величина самого параметра в таком случае принимает значение 0.

После вызова startActivtiy партнерское приложение должно ожидать результата в onNewIntent либо в onCreate (если андроид убьет Activity приложения).

Результаты выполнения можно будет достать из Intent через Intent.getFloatExtra

Example

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
resultView.setText(parseIntent(intent));
}
 
private String parseIntent(Intent data) {
if (data != null && data.hasExtra("stress")) {
    return String.format(Locale.getDefault(), "productivity=%s\nrmssd=%s\nenergy=%s\npower=%s\nstress=%s\nsdnn=%s",
            data.getFloatExtra("productivity", -1),
            data.getFloatExtra("rmssd", -1),
            data.getFloatExtra("energy", -1),
            data.getFloatExtra("power", -1),
            data.getFloatExtra("stress", -1),
            data.getFloatExtra("sdnn", -1));
} else {
    return null;
}
}
Нашли ответ на свой вопрос?