---
# System prepended metadata

title: Документация по использованию Deep Links в приложении Haqq

---

# Документация по использованию 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-коды, содержащие адреса без префиксов, также поддерживаются и валидируются в приложении.
