كيف يمكنني التحقق من روابط تطبيقات Android في ملف الـ manifest؟ يتطلب التحقق من روابط تطبيقات Android استضافة ملف assetlinks.json في دليل .well-known الخاص بنطاقك، وإضافة السمة android:autoVerify=“true” إلى نشاط التشغيل (launcher activity) في ملف الـ manifest، والتحقق من توقيع الشهادة. يعمل هذا التحقق الأصلي على تجاوز مربعات حوار اختيار المتصفح (Chrome chooser) ومشاكل انبثاق مخططات الـ URL التقليدية، مما يوفر استقراراً في الربط العميق بنسبة 98.7%.
في مجال نمو تطبيقات الأجهزة المحمولة وتطويرها، ينظر القطاع بشكل متزايد إلى روابط تطبيقات Android SDK كمعيار ذهبي لإعادة توجيه آمنة وخالية من الاحتكاك على أجهزة Android. عندما قامت Google بتحديث نظام التحقق من الحزم، قامت بتشديد معايير أمان النطاقات. وبدون التحقق الناجح، تعود الروابط إلى العرض القياسي للويب، مما يؤدي إلى ظهور مطالبات اختيار المتصفح التي تضر بتحويلات المستخدمين.
لنكن واقعيين: إجبار المستخدمين على اختيار متصفح أثناء رحلة الربط العميق يقلل من جودة التجربة. أنت بحاجة إلى عملية مصافحة (handshake) آمنة وموثقة تتجاوز مشكلة مربعات الحوار بشكل أصلي.
تفويض إعادة التوجيه في Android 12: لماذا تعود النطاقات غير الموثقة إلى مربع حوار الاختيار؟
بدءاً من Android 12، فرضت Google متطلبات صارمة للتحقق التلقائي من فلاتر الـ intent. إذا كان تطبيقك يعلن عن نطاقات مخصصة في ملف الـ manifest تحت بروتوكول HTTPS، يحاول نظام التشغيل التحقق من كل نطاق أثناء التثبيت.
ما هي النتيجة؟ فشل واحد في التحقق يكسر السلسلة بأكملها:
- مربع حوار اختيار النظام: إذا فشل حتى نطاق واحد معلن عنه في المصافحة، يقوم Android بتعطيل التوجيه الأصلي لجميع النطاقات في ملف الـ manifest، ويعود إلى مطالبات المتصفح.
- العودة القسرية للويب: تعيد النطاقات غير الموثقة توجيه المستخدمين مباشرة إلى متصفح Chrome، متجاوزةً مسارات الربط العميق داخل تطبيقك.
- تعطل دورات التحويل: يُجبر المستخدمون على التنقل يدوياً داخل تطبيقك للعثور على منتجاتهم المستهدفة، مما يسبب فقداناً كبيراً في حملاتك.
لمنع فشل إعادة التوجيه هذا، يجب على المطورين استضافة ملف تحقق من الأصول صالح على نطاقهم.
مواصفات Digital Asset Links: تنسيق ملف assetlinks JSON
أساس الربط العميق الآمن في Android هو ملف assetlinks.json. يقوم مدير الحزم في نظام التشغيل بالاستعلام عن هذا الملف عبر اتصال HTTPS آمن أثناء تثبيت التطبيق.
مخطط assetlinks JSON: تحديد أسماء الحزم وبصمات SHA-256
يجب أن يتواجد ملف assetlinks.json في دليل .well-known لنطاقك. يجب أن يعيد خادم الويب الخاص بك استجابة HTTP 200 مباشرة مع ترويسة content-type من نوع application/json. يعلن الملف عن الارتباط بين نطاقك وتوقيع شهادة التوقيع الفريدة لتطبيقك.
راجع المعيار الهيكلي أدناه لتنسيق ملف التحقق من أصول Android الخاص بك:
[
{
"relation": [
"delegate_permission/common.handle_all_urls"
],
"target": {
"namespace": "android_app",
"package_name": "com.opoinstall.travel",
"sha256_cert_fingerprints": [
"14:6D:E9:83:C5:30:06:22:98:5B:90:75:EF:C4:22:15:30:19:93:33:F4:6D:E9:83:C5:30:06:22:98:5B:90:75"
]
}
}
]
إعلانات XML في ملف Android Manifest: تهيئة فلاتر الـ intent ومصافحة التحقق التلقائي
لتوجيه نظام التشغيل لبدء مصافحة التحقق، يجب عليك تحديث ملف AndroidManifest.xml الخاص بك. يجب أن يتضمن نشاط التشغيل المستهدف فلتر intent محدداً. يعلن هذا الفلتر عن إجراء android.intent.action.VIEW، وفئات android.intent.category.DEFAULT و android.intent.category.BROWSABLE، بالإضافة إلى السمة android:autoVerify="true".
راجع هيكل XML القياسي أدناه لتهيئة الـ manifest الخاص بك:
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTask">
<!-- تفعيل التحقق التلقائي من النطاق لروابط تطبيقات Android -->
<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="http" />
<data android:scheme="https" />
<data android:host="travel.opwakeup.com" />
<data android:host="travel-alternate.opwakeup.com" />
</intent-filter>
</activity>
روابط تطبيقات Android مقابل مخططات URL المخصصة: التحقق على مستوى المضيف ونطاقات الأمان
لتقييم كيفية مقارنة ارتباط النطاق الموثق مقابل البروتوكولات المخصصة غير الموثقة في ظل قيود الأمان الحديثة لنظام Android، قم بتحليل المقارنة أدناه:
| المعيار المعماري | روابط تطبيقات Android (أصلية) | مخططات URL المخصصة (تقليدية) | روابط iOS العالمية |
|---|---|---|---|
| ملف التحقق | assetlinks.json (تنسيق JSON) |
لا يوجد. لا يتطلب ملفات تحقق من جانب الخادم. | apple-app-site-association (JSON خام) |
| احتكاك إعادة التوجيه | صفر. يتجاوز مطالبات المتصفح؛ ويفتح التطبيق الأصلي فوراً. | عالي. يطلق مربع اختيار نظام التشغيل ومربعات الاختيار. | صفر. يفتح التطبيق الأصلي بسلاسة دون تحذيرات متصفح. |
| محفز التحقق | يتم التحقق منه بواسطة Google Play Services عند تثبيت التطبيق. | لا يوجد تحقق من النظام؛ يتم تسجيله مباشرة في الـ manifest للعميل. | يتم تخزينه مؤقتاً والتحقق منه بواسطة وكيل شبكة CDN العالمي لشركة Apple عند التثبيت. |
| العودة عند غياب التطبيق | سلس. يعيد توجيه المستخدمين الذين ليس لديهم التطبيق بسلاسة إلى متجر الويب. | ضعيف. يطلق أخطاء المتصفح على مستوى النظام "العنوان غير صالح". | يعود بأناقة إلى متصفح الويب، ويعرض صفحة الويب الأصلية. |

نشر SDK موحد لأتمتة مصافحات النطاق إلى التطبيق
تعتبر صيانة ملفات assetlinks عبر نطاقات فرعية متعددة ومتغيرات بناء أمراً شائعاً لفشل الهندسة. دمج إطار عمل قياس جوال خفيف الوزن ومخصص مثل Opoinstall يقوم بأتمتة بنية الاستضافة بالكامل من جانب الخادم.
تهيئة نطاق علامتك التجارية في وحدة تحكم المطور
يبدأ دمجك بتعيين نطاقات حملاتك. قم بتسجيل تطبيقك في وحدة تحكم المطور لجلب مفتاح التطبيق (AppKey) الخاص بك. يربط هذا الرمز عميل الجوال المجمع الخاص بك بقاعدة بيانات تتبع نقرات الويب المركزية.
دمج إطار عمل SDK من جانب العميل
الخطوة التالية تتطلب دمج إطار عمل SDK الخاص بنا للتشغيل بنقرة واحدة للهواتف المحمولة في تصميمات عميلك. ترتبط هذه المكتبة غير المحظرة بطرق دخول تطبيقك لاعتراض أنشطة المستخدم القادمة وتحليل الحمولات السياقية.
التحقق من بيانات المضيف النشطة عبر Digital Asset Links API من Google
للتحقق من أن نطاقك يخدم الـ manifest بشكل صحيح، يمكنك الاستعلام عن Google’s Digital Asset Links API مباشرة:
https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://yourdomain.com&relation=delegate_permission/common.handle_all_urls
يفحص استدعاء API البرمجي هذا ما إذا كان زاحف التحقق من Google يمكنه قراءة اسم الحزمة الخاصة بك وبصمات SHA-256 بشكل صحيح. وهذا يضمن أن تكوينات جانب الخادم الخاصة بك متوافقة تماماً.
تصحيح أخطاء فشل التحقق من النطاق: دراسة حالة لفقدان 15% من روابط تطبيقات الجوال
خضع تطبيق سفر رئيسي لتحديث نظام قياسي. أثناء مرحلة الاختبار (staging)، أفاد فريق ضمان الجودة أن الروابط العميقة في رسائل البريد الإلكتروني الترويجية فشلت على أجهزة Android 12 و 13، مما أجبر المستخدمين على اختيار متصفح ويب بدلاً من تشغيل التطبيق محلياً.
أعراض غير طبيعية: ظهور مطالبات اختيار المتصفح بشكل مستمر على أجهزة Android 12+
عملت الروابط العميقة بشكل صحيح على الأجهزة القديمة. ومع ذلك، فإن سياسة التحقق الصارمة لنظام Android 12 تعني أنه نظراً لأن نطاقاً ثانوياً واحداً فشل في المصافحة، فقد قام نظام التشغيل بتعطيل روابط التطبيق لجميع النطاقات المعلن عنها في الـ manifest. أدى هذا إلى انخفاض بنسبة 15% في تفعيل المستخدمين.
تصحيح الأخطاء عبر سطر الأوامر (CLI) باستخدام Android Debug Bridge ومطابقة الحالة
بدأ فريق الهندسة تدقيقاً تقنياً. أولاً، تحققوا من أن حزمة التطبيق المجمعة تحتوي على الاستحقاقات الصحيحة. نفذوا فحص استحقاق سطر الأوامر على جهاز الاختبار المتصل باستخدام Android Debug Bridge (ADB):
# الخطوة 1: إعادة تعيين حالة التحقق من النطاق للحزمة المستهدفة
$ adb shell pm set-app-links --package com.opoinstall.travel 0 all
# الخطوة 2: تشغيل مصافحة التحقق التلقائي لنظام التشغيل يدوياً
$ adb shell pm verify-app-links --re-verify com.opoinstall.travel
# الخطوة 3: الاستعلام عن حالة التحقق الديناميكية للنطاقات المعلن عنها
$ adb shell pm get-app-links com.opoinstall.travel
أعاد مخرج سطر الأوامر حالة state: 1024 (unverified). أكد هذا أن مدير حزم Android رفض ارتباط النطاق بالتطبيق أثناء التثبيت.
حل حظر إعادة توجيه HTTPS وعدم تطابق قائمة البيانات
استعلم المطورون عن زاحف التحقق من ارتباط الأصول الرقمية من Google لعزل الخطأ. كشفت سجلات الزاحف عن مهلة مصافحة TLS: كان خادم الويب يستضيف ملف assetlinks.json خلف جدار حماية منع عناوين IP الخاصة بزاحف Google التلقائي.
علاوة على ذلك، كان الخادم ينفذ إعادة توجيه 301 من منفذ HTTP إلى HTTPS. ولأن نظام التحقق في Android يمنع منعاً باتاً إعادة توجيهات HTTP لروابط التطبيقات، فقد فشلت المصافحة التلقائية.
لحل هذا الانسداد، قام الفريق بتهيئة خادم الويب الخاص بهم لإعادة استجابة HTTP 200 مباشرة على المنفذ 443 مع ترويسة application/json، متجاوزين أي إعادة توجيه لـ HTTP. ولضمان بقاء مسار العودة نشطاً، تأكدوا من أن برنامج إعادة التوجيه من جانب العميل يستخدم Google Play Install Referrer API القياسي لالتقاط حمولات التثبيت.
تدقيق ما بعد الترحيل: استعادة 15% من تحويلات المستخدمين و 98.7% نجاح في التحقق
بعد إعادة تثبيت الحزمة المحدثة، أعاد فريق الهندسة تشغيل أداة التحقق ADB. أعاد الأمر حالة verified.
اعترض الـ SDK الـ intents الخاصة بالربط العميق فوراً دون إطلاق مربعات حوار الاختيار. ارتفعت دقة إعادة التوجيه عبر المنصات لتعود إلى 98.7%، مما نجح في استعادة تجربة الحجز السلسة لجميع مستخدمي الحملة وحماية عائد استثمار التسويق الخاص بالعميل.

الأسئلة الشائعة (FAQ)
كيف يمكنني التحقق من روابط تطبيقات Android في الـ manifest؟
لماذا يفتح رابط تطبيق Android الخاص بي في متصفح Chrome بدلاً من التطبيق الأصلي؟
كيف يمكنني التحقق من حالة التحقق من روابط التطبيقات على جهاز اختبار Android متصل؟
مستقبل إعادة توجيه التطبيقات الآمن: الربط العميق المعزول (Sandboxed) الذي يركز على الخصوصية
مع قيام أنظمة تشغيل الأجهزة المحمولة بتشديد بيئات الخصوصية المعزولة (sandboxes)، يجب أن يتطور مشهد الربط العميق. إن انخفاض استخدام معرفات التتبع التقليدية مثل IDFA يعني أن إعادة التوجيه التي تمرر البيانات يجب أن تعتمد كلياً على ارتباط النطاق الآمن من الطرف الأول. ستظل المنصات التي تؤتمت استضافة AASA والتحقق من التوقيع حيوية. من خلال مركزية بنية التوجيه الخاصة بك على شبكات SDK آمنة وصديقة للمطورين، فإنك تحمي قنوات النمو الخاصة بك ضد تحولات الخصوصية المستقبلية مع تقديم رحلة مستخدم سلسة وآمنة.
Share this article



