Рост
Диплинки
Диплинк открывает определённый экран внутри установленного приложения, например челлендж, реферальное приглашение или страницу товара. Если приложение не установлено, посетитель попадает в магазин, как и с умной ссылкой. Диплинки доступны на планах Pro, Studio и Пожизненный. Для Universal Links и Android App Links также нужен собственный домен, который входит в Studio.
Как работает диплинк
Добавьте к умной ссылке /open/ и путь внутри приложения. Строка запроса тоже передаётся:
https://mapps.one/habitly/open/challenges/30-days?ref=newsletter
| Посетитель | Что происходит |
|---|---|
| iPhone или iPad, если задана URL-схема iOS | Короткая страница пытается открыть habitly://challenges/30-days?ref=newsletter. Если приложение не установлено, посетитель переходит в App Store. |
| Android или Huawei, если задано имя пакета | Короткая страница открывает Android intent для того же пути, ограниченный вашим пакетом. Chrome открывает приложение, если оно установлено, а иначе переходит по запасному варианту в Google Play. |
| Телефон или планшет без настроек диплинков для своей платформы | Сразу перенаправляется на запасной вариант. |
| Компьютеры и боты | Перенаправляются на умную ссылку с сохранением строки запроса. |
Запасной вариант — это то место, куда умная ссылка отправила бы это устройство согласно вашим правилам переадресации, с передачей UTM-меток. Если для этой платформы нет ссылки на магазин, запасным вариантом становится лендинг. Если диплинки вообще не настроены или план их не включает, каждый посетитель перенаправляется на умную ссылку.
Пути могут содержать буквы, цифры и символы / _ - . ~ %. Остальные символы удаляются, поэтому всё прочее, например пробелы (%20), кодируйте с помощью процентного кодирования.
Настройка
Откройте вкладку Диплинки приложения и заполните поля для платформ, которые вы поддерживаете:
| Поле | Пример | Для чего используется |
|---|---|---|
| URL-схема iOS | habitly:// | Открытие приложения со страницы перенаправления на iPhone и iPad |
| Apple Team ID | A1B2C3D4E5 | Universal Links. ID из 10 символов из раздела Membership details вашего аккаунта Apple Developer. |
| Bundle ID iOS | com.habitly.app | Universal Links |
| Имя пакета Android | com.habitly.app | Открытие приложения на устройствах Android и Huawei |
| Схема Android | habitly | Схема, которую обрабатывает ваш intent filter |
| Отпечатки сертификатов SHA-256 | 14:6D:E9:83:...:44:E5 | Android App Links. Добавьте один или несколько, разделяя их запятыми, пробелами или переводами строк. |
habitly. Если оставить поле пустым, используется https, а первая часть пути становится хостом (https://challenges/30-days). Это работает, только если ваш intent filter этого ожидает.Регистрация схемы в приложении
iOS, в Info.plist:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>habitly</string>
</array>
</dict>
</array>
Android, в AndroidManifest.xml:
<activity android:name=".MainActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="habitly" />
</intent-filter>
</activity>
В приложении прочитайте входящий URL, откройте соответствующий экран и получите нужные параметры запроса. Неизвестные пути отправляйте на главный экран, потому что люди редактируют URL вручную.
Universal Links и Android App Links
Ссылки со схемой сначала показывают короткую страницу перенаправления, и iOS может попросить посетителя подтвердить переход. Верифицированные ссылки пропускают этот шаг: если приложение установлено, система открывает его напрямую. Для верификации нужен домен, который принадлежит только вашему приложению, поэтому она работает на вашем собственном домене. Как только get.habitly.app подключён, mapps.one сам отдаёт файлы ассоциации:
| Файл | На основе чего создаётся |
|---|---|
https://get.habitly.app/.well-known/apple-app-site-association(также доступен по адресу /apple-app-site-association) | Apple Team ID и bundle ID |
https://get.habitly.app/.well-known/assetlinks.json | Имя пакета Android и отпечатки SHA-256 |
Файл Apple охватывает все пути внутри /open/:
{
"applinks": {
"details": [
{
"appIDs": ["A1B2C3D4E5.com.habitly.app"],
"components": [
{ "/": "/open/*", "comment": "Deep links created with mapps.one" }
]
}
]
},
"webcredentials": { "apps": ["A1B2C3D4E5.com.habitly.app"] }
}
Файл Android:
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.habitly.app",
"sha256_cert_fingerprints": [
"14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"
]
}
}
]
Каждый файл возвращает «404 Not Found», пока его поля не заполнены корректно: для Apple нужны Team ID из 10 символов и bundle ID, а для Android — имя пакета и хотя бы один отпечаток в формате AA:BB:... (32 пары). Используйте отпечаток ключа Play App Signing из Play Console → App integrity, а если вы тестируете локально подписанные сборки, добавьте и ключ загрузки. Файлы кешируются на час. Apple также кеширует их на своих серверах, поэтому для проверки изменений переустановите приложение.
Настройка приложения
iOS: добавьте возможность Associated Domains со значением applinks:get.habitly.app.
Android: добавьте верифицируемый intent filter для вашего домена:
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="get.habitly.app" android:pathPrefix="/open/" />
</intent-filter>
Затем используйте в кампаниях ссылки вида https://get.habitly.app/open/challenges/30-days. Если приложение не установлено, браузер загрузит страницу и сработает тот же сценарий с запасным вариантом.
mapps.one используют многие приложения. Ссылки вида mapps.one/habitly/open/ продолжают работать через страницу перенаправления. URL диплинков, которые показываются в панели управления и в API, используют mapps.one, поэтому, если вам нужны верифицированные ссылки, замените в них хост на свой домен.Аналитика
Открытие учитывается в показателе Открытия диплинков, когда телефон или планшет загружает URL /open/ и mapps.one пытается открыть приложение. Переход в магазин по запасному варианту повторно не учитывается. Верифицированные ссылки, которые открывают приложение напрямую, никогда не доходят до mapps.one, поэтому не учитываются. Для них используйте аналитику самого приложения.