---
title: Android
description: 'Управление процессом захвата Верификации без предъявления карты в Android через CustomTabs: зависимость, открытие вкладки, настройка манифеста и чтение обратного вызова.'
canonical: https://developer.unico.io/ru/dual-api/developers/regional-solutions/card-not-present-verification/integration/controlling-the-experience/mobile/android
locale: ru
generated_by: markdown-export
---

Поле **link** используется для перенаправления пользователя. Это поле возвращается в ответе об успешном создании транзакции.

Здесь вы найдёте лучший способ управления пользовательским процессом в вашем Android-приложении:

### Шаг 1: Использование CustomTabs для интеграции

Добавьте необходимую зависимость для использования CustomTabs в файле `app/build.gradle`:

```
implementation("androidx.browser:browser:1.5.0")
```

### Шаг 2: Открытие CustomTab

```java
import android.net.Uri
import androidx.activity.ComponentActivity
import androidx.browser.customtabs.CustomTabsClient
import androidx.browser.customtabs.CustomTabsIntent

class CustomTabActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)

       openCustomTab(<URL_CBU>)
    }

    fun openCustomTab(url: String) {
        val builder = CustomTabsIntent.Builder()
        val customTabsIntent = builder.build()
        customTabsIntent.launchUrl(this, Uri.parse(url))
    }
}
```

### Шаг 3: Изменение AndroidManifest

Добавьте необходимые разрешения и intent'ы в `AndroidManifest.xml` для Activity, которая должна получать `callback_uri`. Необходимо включить атрибут `android:launchMode="singleTop"`, а также тег `<data>`, предоставляющий данные URI.

```java
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-permission android:name="android.permission.CAMERA"/>
// permissions for camera and geolocation are required

<activity
    android:name=".CustomTabActivity"
    android:exported="true"
    android:label="@string/app_name"
    android:theme="@style/Theme.Customtabs"
    android:launchMode="singleTop">

    <intent-filter android:label="Custom Tab">
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <!-- scheme and host are the data provided at process creation in the callback_uri field
        callback_uri: "foobar://success?code=1234" -->
        <data android:scheme="foobar" android:host="success"/>
    </intent-filter>

</activity>
```

Для корректной работы необходимы следующие разрешения:

- Камера
- Геолокация

### Шаг 4: Получение информации о возврате

Чтобы получить информацию о перенаправлении с предоставленными данными, вы можете использовать следующий код в методе `onNewIntent` вашей Activity:

```java
override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)

    val url = intent.data
    val scheme = url.scheme // "foobar"
    val host = url.host // "success"
    val code = url.getQueryParameter("code") // "1234"
}
```

:::tip
Также можно использовать ссылку, сгенерированную Unico, в гибридных фреймворках. Для этого вы можете создать мост (bridge) между используемым фреймворком и нативным кодом и следовать нашим рекомендациям в документации, либо использовать библиотеку, которая предоставляет такие возможности интеграции.
:::

:::warning
Интеграция WebView в ваше приложение является исключительной ответственностью клиента, поскольку эта функциональность не предоставляется в составе библиотек или SDK Unico. По этой причине мы не оказываем техническую поддержку по вопросам или проблемам, связанным с реализацией WebView в вашем приложении. Для получения рекомендаций по настройке мы рекомендуем обращаться к официальной документации технологии, используемой в вашем проекте (например, React Native, Flutter и т. д.).
:::