إنشاء روابط لصفحات معيّنة في محتوى التطبيق

عندما يستدعي رابط تم النقر عليه أو طلب آلي هدف معرف موارد منتظم (URI) على الويب، سيجري نظام Android محاولة تنفيذ كل إجراء من الإجراءات التالية بترتيب تسلسلي، إلى أن يتم نجاح الطلب:

  1. افتح التطبيق المفضّل للمستخدم الذي يمكنه معالجة معرّف الموارد المنتظم (URI)، في حال تحديده.
  2. افتح التطبيق الوحيد المتاح الذي يمكنه التعامل مع عنوان URI.
  3. تسمح للمستخدم باختيار تطبيق من مربّع حوار.

اتبع الخطوات أدناه لإنشاء واختبار الروابط المؤدية إلى المحتوى الخاص بك. يمكنك أيضًا استخدام صفحة مساعد روابط التطبيقات في "استوديو Android" لإضافة عناصر جديدة روابط تطبيقات Android.

ملاحظة: بدءًا من Android 12 (المستوى 31)، ستظهر لا يتم التعامل مع Web intent في نشاط في تطبيقك إلا إذا تمت الموافقة على تطبيقك النطاق المحدد الوارد في هدف الويب هذا. في حال عدم الموافقة على استخدام تطبيقك النطاق، سيحل Web intent إلى تطبيق المتصفح التلقائي للمستخدم بدلاً من ذلك.

إضافة فلاتر الأهداف للروابط الواردة

لإنشاء رابط إلى محتوى تطبيقك، أضِف فلتر أهداف يحتوي على هذه العناصر وقيم السمات في البيان الخاص بك:

<action>
حدِّد إجراء النية ACTION_VIEW بحيث الذي يمكن الوصول إليه من فلتر الأهداف من "بحث Google".
<data>
إضافة واحد أو أكثر من <data> ، يمثل كل منها تنسيق معرف موارد منتظم (URI) يؤدي إلى النشاط. على الأقل، يجب أن تتضمّن علامة <data> android:scheme .

يمكنك إضافة المزيد من السمات لتحسين نوع معرّف الموارد المنتظم (URI) الذي يقبله النشاط. بالنسبة على سبيل المثال، قد يكون لديك أنشطة متعددة تقبل معرفات موارد منتظمة (URI) متشابهة، لكنها تختلف ببساطة بناءً على اسم المسار. في هذه الحالة، استخدم دالة sort_values السمة android:path أو خياراتهما pathPattern أو pathPrefix للتمييز بين النشاط الذي يجب أن يفتحه النظام لمسارات URI المختلفة.

<category>
تضمين BROWSABLE . وهذا الإجراء مطلوب لإتاحة الوصول إلى فلتر الأهداف من أحد المواقع الإلكترونية. المتصفح. فبدونه، لن يؤدي النقر على رابط في المتصفح إلى الانتقال إلى تطبيقك.

يجب أيضًا تضمين الفئة DEFAULT. يسمح ذلك لتطبيقك بالاستجابة للأغراض الضمنية. بدون ذلك، يمكن بدء النشاط فقط إذا كان الغرض يحدد اسم مكوّن التطبيق.

يوضِّح مقتطف XML التالي كيفية تحديد فلتر أهداف. في ملف البيان للربط بصفحة معيّنة. معرّفات الموارد المنتظمة (URI) “example://gizmos” وتتم إزالة “http://www.example.com/gizmos” من هذا النشاط.

<activity
    android:name="com.example.android.GizmosActivity"
    android:label="@string/title_gizmos" >
    <intent-filter android:label="@string/filter_view_http_gizmos">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
        <data android:scheme="http"
              android:host="www.example.com"
              android:pathPrefix="/gizmos" />
        <!-- note that the leading "/" is required for pathPrefix-->
    </intent-filter>
    <intent-filter android:label="@string/filter_view_example_gizmos">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- Accepts URIs that begin with "example://gizmos” -->
        <data android:scheme="example"
              android:host="gizmos" />
    </intent-filter>
</activity>

يُرجى العلم أنّ فلترَي الأهداف يختلفان فقط في العنصر <data>. على الرغم من أنّه من الممكن تضمين عدّة عناصر <data> في الفلتر نفسه، فمن المهم إنشاء فلاتر منفصلة عندما تريد إعلان فلاتر فريدة عناوين URL (مثل تركيبة محدَّدة من scheme وhost)، لأن دمج عدة عناصر <data> معًا في فلتر الأهداف نفسه لتتناسب مع جميع متغيرات التصنيفات المدمجة. على سبيل المثال، ضع في اعتبارك ما يلي:

<intent-filter>
  ...
  <data android:scheme="https" android:host="www.example.com" />
  <data android:scheme="app" android:host="open.my.app" />
</intent-filter>

قد يبدو أنّ هذا الخيار يتوافق فقط مع https://www.example.com app://open.my.app مع ذلك، فإنه في الواقع يتوافق مع هذين النوعين، بالإضافة إلى ما يلي: "app://www.example.com" وhttps://open.my.app"

تنبيه: إذا كانت هناك أنشطة متعددة تحتوي على فلاتر أهداف تتطابق مع الهدف نفسه تم التحقق من رابط تطبيق Android، فليس هناك ضمان لمعرفة النشاط تعمل على معالجة الرابط.

بعد إضافة فلاتر الأهداف باستخدام معرّفات الموارد المنتظمة (URI) لمحتوى الأنشطة في تطبيقك ملف البيان، يستطيع Android توجيه أي Intent. يحتوي على معرّفات موارد منتظمة (URI) مطابقة لتطبيقك في وقت التشغيل.

لمزيد من المعلومات عن تعريف فلاتر الأهداف، اطّلِع على السماح للتطبيقات الأخرى ببدء نشاطك

قراءة البيانات من الأهداف الواردة

بعد أن يبدأ النظام نشاطك من خلال فلتر الأهداف، يمكنك استخدام البيانات التي تقدّمها Intent لتحديد ما يجب عرضه. اتصل getData() getAction() طريقة لاسترداد البيانات الإجراء المرتبط بقيمة Intent الواردة. يمكنك هذه الطرق في أي وقت أثناء دورة حياة النشاط، ولكنك يجب أن يفعلوا ذلك بشكل عام أثناء عمليات الاستدعاء المبكرة مثل onCreate() أو onStart()

في ما يلي مقتطف يوضح كيفية استرداد البيانات من Intent:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main)

    val action: String? = intent?.action
    val data: Uri? = intent?.data
}

Java

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Intent intent = getIntent();
    String action = intent.getAction();
    Uri data = intent.getData();
}

اتّبِع أفضل الممارسات التالية لتحسين تجربة المستخدم:

  • رابط الصفحة في التطبيق يجب أن ينقل المستخدمين إلى المحتوى مباشرةً، بدون أي طلبات أو صفحات بينية أو عمليات تسجيل دخول. تأكد من أن المستخدمين يمكنهم الاطلاع على محتوى التطبيق حتى إذا لم يسبق لهم فتح التطبيق. يمكن مطالبة المستخدمين بالتفاعلات اللاحقة أو عند فتح التطبيق. من "مشغِّل التطبيقات".
  • اتبع إرشادات التصميم الموضحة في التنقُّل باستخدام ميزة "الاحتفاظ بنسخة احتياطية" و"الانتقال للأعلى" ليتطابق تطبيقك مع بيانات المستخدمين توقعات التنقل الخلفي بعد يدخلون تطبيقك من خلال رابط لموضع معيّن.

اختبار الروابط لصفحات في التطبيق

يمكنك استخدام أداة تصحيح أخطاء Android الربط بأداة مدير النشاط (am) لاختبار فلتر الأهداف إنّ معرّفات الموارد المنتظمة (URI) التي حدّدتها للربط بصفحات معيّنة تتحوّل إلى النشاط الصحيح على التطبيق. إِنْتَ تشغيل أمر adb على جهاز أو محاكي.

الصيغة العامة لاختبار معرّف الموارد المنتظم (URI) لفلتر الأهداف باستخدام adb هي:

$ adb shell am start
        -W -a android.intent.action.VIEW
        -d <URI> <PACKAGE>

على سبيل المثال، يحاول الأمر أدناه عرض نشاط مستهدف على التطبيق مرتبط بعنوان URI المحدد.

$ adb shell am start
        -W -a android.intent.action.VIEW
        -d "example://gizmos" com.example.android

يحدِّد بيان البيان ومعالج الغرض اللذين ضبطتهما أعلاه الرابط بين تطبيقك. وموقع إلكتروني، وماذا تفعل بالروابط الواردة. ومع ذلك، في لكي يتعامل النظام مع تطبيقك كمعالج تلقائي لمجموعة من معرّفات الموارد المنتظمة، يجب أن يطلب النظام التحقق من هذا الاتصال أيضًا. يقدّم الدرس التالي شرحًا حول كيفية وتنفيذ عملية التحقق هذه.

لمزيد من المعلومات عن الأهداف وروابط التطبيقات، اطّلِع على المراجع التالية: