# Документация по использованию Deep Links в приложении Haqq Deep Links (Диплинки) позволяют создавать прямые ссылки на определенные функции или разделы в приложении Haqq, облегчая навигацию и повышая удобство использования приложения. ## Основные типы диплинков В приложении Haqq используются следующие типы диплинков: ### 1. Haqq Префикс (`haqq:`) - **Форматы:** `haqq://` или `haqq:` - Пример: `haqq://enableDeveloperMode` и `haqq:enableDeveloperMode` выполняют одно и то же действие — активацию режима разработчика. Использование слеша (`/`) не влияет на функциональность. - **Дополнительные примеры:** - `haqq:provider:BASE64_JSON` - Добавляет новый провайдер сети. BASE64_JSON — это закодированная в base64 строка, содержащая информацию о сети в формате JSON. - `haqq://wc?uri=...` - Для подключения Wallet Connect. - `haqq://browser?uri=https://shell.haqq.network` - Открывает обычный браузер. - `haqq://web3browser?uri=https://shell.haqq.network` - Открывает web3 браузер. - `haqq:back9test:test_code` - Показывает алерт с кодом, указанным после `test_code`. ### 2. Ethereum Префикс (`ethereum:`) - **Формат:** `ethereum:АДРЕС` - Пример: `ethereum:0x37f61e7d9ce7dc6648ecbd3ba27972fb90d69cf1` - Адреса, начинающиеся с префикса `ethereum:`, также поддерживаются в приложении и используются для взаимодействия с Ethereum сетью. ### 3. WalletConnect Префикс (`wc:`) - **Формат:** `wc:` - Предназначен для инициализации соединения через WalletConnect. ### 4. Dynamic Link - **Формат:** `https://haqq.page.link/?link=URL&apn=ПАКЕТ&isi=ID&ibi=БАНДЛ` Dynamic Link предназначены для выполнения специфических действий в приложении, например, показа нового баннера на главном экране, после перехода по ссылке. #### Общая структура Dynamic Link Базовая структура Dynamic Link для Firebase в приложении HAQQ Wallet выглядит так: `https://haqq.page.link/?link=ENCODED_LINK&apn=com.haqq.wallet&isi=6443843352&ibi=com.haqq.wallet` где `ENCODED_LINK` — это закодированный URL с нужными query параметрами **(web3_browser, browser, distinct_id)**, которые обрабатываются внутри приложения. далее ENCODED_LINK помещается в `link` параметр. **Логика формирования ссылки** 1) Создаем URL для link параметра: - ENCODED_LINK должен быть внесён в вайтлист в Firebase, чтобы ссылки работали корректно - Формируем ENCODED_LINK с одним из параметров — browser, web3_browser, или distinct_id. - Кодируем его с помощью encodeURIComponent для корректного использования в Dynamic Link. 2) Добавляем параметры query: - apn — имя пакета приложения для Android: com.haqq.wallet. - isi — ID приложения в App Store для iOS: 6443843352. - ibi — имя пакета приложения для iOS: com.haqq.wallet. #### Пример открытия браузера через DynamicLink ```js const siteLink = 'https://alpha.islm.ai'; const browserLink = encodeURIComponent(`https://haqq.network?browser=${siteLink}`); const wer3BrowserLink = encodeURIComponent(`https://haqq.network?web3_browser=${siteLink}`); const query = '&apn=com.haqq.wallet&isi=6443843352&ibi=com.haqq.wallet'; const dynamicLinkForBrowser = `https://haqq.page.link/?link=${browserLink}${query}`; const dynamicLinkForWeb3Browser = `https://haqq.page.link/?link=${wer3BrowserLink}${query}`; console.log('browser', dynamicLinkForBrowser); console.log('web3_browser', dynamicLinkForWeb3Browser); ``` --- > [Log] browser – "https://haqq.page.link/?link=https%3A%2F%2Fhaqq.network%3Fbrowser%3Dhttps%3A%2F%2Falpha.islm.ai&apn=com.haqq.wallet&isi=6443843352&ibi=com.haqq.wallet" `browser` — Открывает обычный браузер устройства и переходит по указанному URL (в примере https://alpha.islm.ai) --- > [Log] web3_browser – "https://haqq.page.link/?link=https%3A%2F%2Fhaqq.network%3Fweb3_browser%3Dhttps%3A%2F%2Falpha.islm.ai&apn=com.haqq.wallet&isi=6443843352&ibi=com.haqq.wallet" `web3_browser` — Открывает встроенный Web3-браузер приложения и загружает siteLink, что позволяет пользователю взаимодействовать с Web3-сайтами непосредственно в приложении. --- #### Пример связывания distinct id с приложением ```js const distinctId = '123456'; const link = encodeURIComponent(`https://haqq.network?distinct_id=${distinctId}`); const query = '&apn=com.haqq.wallet&isi=6443843352&ibi=com.haqq.wallet'; const dynamicLink = `https://haqq.page.link/?link=${link}${query}` console.log('distinct_id', dynamicLink) ``` > [Log] distinct_id – "https://haqq.page.link/?link=https%3A%2F%2Fhaqq.network%3Fdistinct_id%3D123456&apn=com.haqq.wallet&isi=6443843352&ibi=com.haqq.wallet" `distinct_id` — связывает указанный distinct_id с PostHog в мобильном приложении ## Примечания - Диплинки, содержащие префикс `haqq:`, могут быть использованы как с двойным слешем (`//`), так и без него. - При использовании `haqq:provider:BASE64_JSON` следует учитывать наличие известного бага: каждый переход в настройки после активации такого диплинка вызовет окно редактирования провайдера. - QR-коды, содержащие адреса без префиксов, также поддерживаются и валидируются в приложении.