---
title: Android
description: 'إدارة تجربة الالتقاط الخاصة بالتحقق من البطاقة غير الحاضرة في Android عبر CustomTabs: التبعية (dependency)، فتح التبويب، إعداد الـ Manifest، وقراءة الـ Callback.'
canonical: https://developer.unico.io/ar/dual-api/developers/regional-solutions/card-not-present-verification/integration/controlling-the-experience/mobile/android
locale: ar
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

أضف الأذونات (permissions) والـ intents اللازمة في ملف `AndroidManifest.xml` الخاص بالـ Activity التي تريد أن تستقبل `callback_uri`. من الضروري تضمين السمة (attribute) `android:launchMode="singleTop"` بالإضافة إلى وسم `<data>` الذي يوفر بيانات الـ URI.

```java
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-permission android:name="android.permission.CAMERA"/>
// أذونات الكاميرا والموقع الجغرافي مطلوبة

<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 والـ host هما البيانات المقدَّمة عند إنشاء العملية في حقل callback_uri
        callback_uri: "foobar://success?code=1234" -->
        <data android:scheme="foobar" android:host="success"/>
    </intent-filter>

</activity>
```

الأذونات التالية ضرورية لكي يعمل بشكل صحيح:

- الكاميرا
- الموقع الجغرافي

### الخطوة 4: الحصول على معلومات الإرجاع

لاسترجاع معلومات إعادة التوجيه (redirect) باستخدام البيانات المقدمة، يمكنك استخدام الكود التالي في طريقة (method) `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 في أطر العمل الهجينة (hybrid frameworks). للقيام بذلك، يمكنك إنشاء جسر (bridge) بين إطار العمل المستخدم والإطار الأصلي (native) واتباع ما نقترحه في الوثائق، أو استخدام مكتبة توفر خيارات التكامل هذه.
:::

:::warning
يقع تكامل WebView في تطبيقك على عاتق العميل وحده، حيث إن هذه الوظيفة غير مقدَّمة كجزء من مكتبات أو حزم SDK الخاصة بـ Unico. لهذا السبب، لا نقدم دعمًا فنيًا للأسئلة أو المشكلات المتعلقة بتنفيذ WebView في تطبيقك. للحصول على إرشادات الإعداد، نوصي بالرجوع إلى الوثائق الرسمية للتقنية المستخدمة في مشروعك (مثل React Native وFlutter وغيرها).
:::