Общее описание
Что это такое
Это бесплатная интеграция вашего приложения с Welltory, с которой ваши пользователи смогут измерять уровень стресса, энергии, продуктивности и получать подробный анализ самочувствия.
Зачем это нужно
Для любого приложения, которое хочет поддерживать своих пользователей в наилучшей форме. Например:
если вы делаете приложение для трейдеров и хотите, чтобы они могли измерить свой уровень стресса перед началом торгового дня, чтобы предсказать, как это может повлиять на принятие ими решений;
если вы делаете приложение для спорта и собираетесь отправить человека на тренировку по персонализированной программе, определите тяжесть рекомендуемой тренировки в зависимости от уровня энергии;
если у вас приложение для управления командой, следите за уровнем командного стресса, чтобы избежать профессионального выгорания и не подвергать проект риску.
Если вы не уверены, подходит ли вам программа интеграции Welltory, напишите нам.
Как это работает
После интеграции ваше приложение сможет перенаправлять пользователей в Welltory для замера самочувствия. После замера мы перенаправим пользователя и обратно к вам и отправим его результаты, которые вы сможете использовать так, как захотите.
Механизм шеринга данных и выполнения замера (DDS — direct data sharing) — это прямое взаимодействие между мобильными приложениями без необходимости интеграции SDK, API или использования сервера. Механизм DDS реализован на основе вызова universal links: передача намерений и получении результатов происходит через специальные ссылки. Подробнее об этом ниже.
Посмотреть на примере
Установите Welltory DDS Demo — оно покажет, как работает приложение-партнер вместе с Welltory, а именно:
как для пользователя будет выглядеть переход в AppStore или Google Play
сам процесс замера
запрос на шеринг
возвращение в приложение
пример представления результатов
Как заинтегрироваться
Просто оставьте заявку вот здесь и мы обязательно с вами свяжемся.
После того как мы обговорим все детали, вы сможете интегрировать замеры 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]
Где:
request_Link - ссылка запроса[FIRST_LAUNCH_LINK] (будет предоставлена после верификации) или https://welltory.com/action/dds/measurement
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.
То фактически вызов будет выглядеть так:
Требования к стороннему приложению
Для получения результата от 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¶m3=123¶m4=Hello
Запуск первого замера в 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;
}
}