عند تنفيذ ميزة ربط التطبيق، عليك اختبار وظيفة الربط للتأكّد من أنّ النظام يمكنه ربط تطبيقك بمواقعك الإلكترونية والتعامل مع طلبات عناوين URL على النحو المتوقّع.
لاختبار ملف بيان حالي، يمكنك استخدام أداة إنشاء قائمة البيانات واختبارها.
توضّح الأقسام التالية كيفية اختبار عملية إثبات ملكية "روابط التطبيق" يدويًا. إذا كنت تفضّل ذلك، يمكنك اختبار عملية التحقّق من صحة الروابط باستخدام أداة "روابط لصفحات في Play" أو "مساعِد روابط التطبيقات" في "استوديو Android".
تأكيد قائمة المضيفين المطلوب إثبات ملكيتهم
عند إجراء الاختبار، عليك تأكيد قائمة المضيفين المرتبطين الذين يجب أن يتحقّق النظام من تطبيقك. أنشئ قائمة بجميع عناوين URL التي تتضمّن فلاتر الأهداف المقابلة لها السمات والعناصر التالية:
- السمة
android:scheme
مع القيمةhttp
أوhttps
- السمة
android:host
التي تتضمّن نمط عنوان URL للنطاق - عنصر الإجراء
android.intent.action.VIEW
- عنصر الفئة
android.intent.category.BROWSABLE
استخدِم هذه القائمة للتأكّد من توفير ملف بتنسيق JSON يتضمّن روابط تنقل إلى مواد عرض رقمية على كل مضيف فرعي ومضيف مسمّى.
تأكيد ملفات Digital Asset Links
بالنسبة إلى كل موقع إلكتروني، استخدِم Digital Asset Links API للتأكّد من أنّ ملف JSON الخاص بروابط التنقل إلى مواد العرض الرقمية مستضاف ومحدّد بشكل صحيح:
https://digitalassetlinks.googleapis.com/v1/statements:list?
source.web.site=https://<var>domain.name</var>:<var>optional_port</var>&
relation=delegate_permission/common.handle_all_urls
بالنسبة إلى "روابط التطبيقات الديناميكية"، يمكنك أيضًا التحقّق من إضافات العلاقات.
https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://www.example.com&relation=delegate_permission/common.handle_all_urls&return_relation_extensions=true
الاطّلاع على سياسات الروابط
كجزء من عملية الاختبار، يمكنك التحقّق من إعدادات النظام الحالية الخاصة بالتعامل مع الروابط. استخدِم الأمر التالي للحصول على قائمة بسياسات معالجة الروابط الحالية لجميع التطبيقات على جهازك المتصل:
adb shell dumpsys package domain-preferred-apps
يؤدي الأمر التالي الإجراء نفسه:
adb shell dumpsys package d
يعرض الأمر قائمة بكل مستخدم أو ملف شخصي محدّد على الجهاز، مسبوقًا بعنوان بالتنسيق التالي:
App linkages for user 0:
بعد هذا العنوان، يستخدم الإخراج التنسيق التالي لإدراج إعدادات معالجة الروابط الخاصة بهذا المستخدم:
Package: com.android.vending
Domains: play.google.com market.android.com
Status: always : 200000002
تعرض هذه القائمة التطبيقات المرتبطة بالنطاقات الخاصة بالمستخدم:
-
Package
: يحدّد تطبيقًا من خلال اسم الحزمة، كما هو موضّح في ملف البيان. -
Domains
- تعرض هذه السمة القائمة الكاملة بالمضيفين الذين يتعامل معهم هذا التطبيق في ما يخص روابط الويب، مع استخدام مسافات فارغة كفواصل. -
Status
: تعرض هذه السمة إعدادات معالجة الروابط الحالية لهذا التطبيق. إذا اجتاز التطبيق عملية التحقّق وكان بيانه يتضمّنandroid:autoVerify="true"
، ستظهر الحالةalways
. يرتبط الرقم السداسي العشري الذي يظهر بعد هذه الحالة بسجلّ نظام Android الخاص بإعدادات المستخدم المفضّلة لربط التطبيقات. لا تشير هذه القيمة إلى ما إذا كانت عملية التحقّق قد تمت بنجاح.
مثال على الاختبار
لكي ينجح التحقّق من روابط التطبيقات، يجب أن يتمكّن النظام من التحقّق من تطبيقك باستخدام كل موقع إلكتروني تحدّده في فلتر intent معيّن يستوفي معايير روابط التطبيقات. يوضّح المثال التالي إعدادات البيان التي تتضمّن عدة روابط تطبيقات محدّدة:
<activity android:name=”MainActivity”>
<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="https" />
<data android:scheme="https" />
<data android:host="www.example.com" />
<data android:host="mobile.example.com" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:host="www.example2.com" />
</intent-filter>
</activity>
<activity android:name=”SecondActivity”>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:host="account.example.com" />
</intent-filter>
</activity>
<activity android:name=”ThirdActivity”>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="https" />
<data android:host="map.example.com" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="market" />
<data android:host="example.com" />
</intent-filter>
</activity>
</application>
في ما يلي قائمة بالمضيفين الذين ستحاول المنصة إثبات ملكيتهم من البيان السابق:
www.example.com
mobile.example.com
www.example2.com
account.example.com
في ما يلي قائمة بالمضيفين الذين لن تحاول المنصة إثبات ملكيتهم من البيان السابق:
map.example.com (it does not have android.intent.category.BROWSABLE)
market://example.com (it does not have either an "http" or "https" scheme)
لمزيد من المعلومات حول قوائم الكلمات الرئيسية، يُرجى الاطّلاع على إنشاء قائمة كلمات رئيسية.