تتيح لك الروابط لصفحات معيّنة توجيه المستخدمين إلى تطبيقك مباشرةً من متصفّحات الويب والإشعارات ووسائل التواصل الاجتماعي والإعلانات والمصادر الأخرى. توفّر الروابط لصفحات معيّنة انتقالات مباشرة من تطبيق إلى تطبيق ومن الويب إلى تطبيق، ما يمكن أن يساعدك في زيادة التفاعل من خلال المحتوى السياقي والمستهدَف.
يوضّح هذا الدليل طريقة عمل الروابط لصفحات في التطبيق وكيفية إنشاء هذه الروابط واختبارها للمحتوى الخاص بك.
بالنسبة إلى الروابط لصفحات معيّنة التي تشير إلى موقعك الإلكتروني أو نطاقاتك، ننصحك باستخدام روابط التطبيقات التي توفّر تجربة سلسة وموثوقة للمستخدمين.
طريقة عمل الربط بصفحة معيّنة
الربط بصفحات في التطبيق هو إحدى الإمكانات العامة لنظام Android، وهي متاحة على جميع الإصدارات وجميع الأجهزة. تستفيد هذه الميزة من نظام Intents في Android لتوجيه الروابط لصفحات معيّنة إلى التطبيقات المعنية. تُعلن التطبيقات التي تريد التعامل مع معرّف موارد منتظم (URI) معيّن لربط الصفحات في التطبيق بفلتر أهداف مطابق في ملفات بيان التطبيق.
عندما ينقر المستخدم على رابط أثناء التشغيل، يفعّل نظام التشغيل Android غرضًا ويحاول توجيهه إلى أحد التطبيقات. وبما أنّه يمكن لعدة تطبيقات الإعلان عن فلاتر أهداف تتطابق مع معرّف موارد منتظم (URI) معيّن، يتّخذ نظام التشغيل Android الإجراءات التالية بهذا الترتيب لتوجيه الغرض:
- فتح التطبيق التلقائي للمستخدم الذي يمكنه التعامل مع معرّف URI، إذا تم تحديد تطبيق.
- افتح التطبيق الوحيد المتاح الذي يمكنه التعامل مع معرّف الموارد المنتظم (URI).
- السماح للمستخدم باختيار تطبيق من مربّع حوار لإزالة الغموض
وهذا يعني أنّه على الرغم من أنّ فلاتر الأهداف تتطابق مع معرّف موارد منتظم معيّن، ليس هناك ما يضمن أنّ النظام سيوجّه هدف الرابط لصفحة معيّنة في التطبيق إلى تطبيقك. ويؤدي المستخدم دورًا رئيسيًا في تحديد التطبيق الذي سيتعامل مع الهدف، ما يمنحه القدرة على التحكّم في ذلك ويوفر له خيارًا. للمزيد من التحكّم في الروابط لصفحات في تطبيقك على موقعك الإلكتروني ونطاقاته، جرِّب استخدام روابط التطبيقات.
يتيح مربّع الحوار الخاص بإزالة الغموض في نظام التشغيل Android للمستخدم الاطّلاع على جميع التطبيقات المثبَّتة التي تم تسجيلها للتعامل مع هدف رابط لصفحة معيّنة. ويمكن للمستخدم أيضًا اختيار تطبيق كإعداد تلقائي لهذا النوع من الروابط. وبعد أن يضبط المستخدم إعدادًا تلقائيًا، لن يعرض النظام مربّع الحوار هذا للهدف المحدّد، وسيتم فتح التطبيق الذي تم اختياره تلقائيًا.
تطوّر سلوك مربّع حوار التوضيح على مستوى إصدارات Android المختلفة. على سبيل المثال، في نظام التشغيل Android 12 والإصدارات الأحدث، يتم بشكل عام فتح روابط الويب التي لم يتم التحقّق منها كروابط تطبيقات في متصفّح ويب تلقائيًا، بينما في الإصدارات السابقة، كان من المحتمل أن يظهر مربّع حوار توضيح إذا كان بإمكان أحد التطبيقات التعامل مع رابط الويب.
أنواع الروابط لصفحات معيّنة
تتوفّر ثلاثة أنواع من الروابط لصفحات معيّنة يمكنك إتاحتها على Android:
- الروابط المؤدية إلى صفحات في التطبيق المخصّصة: هي روابط مؤدية إلى صفحات في التطبيق تستخدم مخطط معرّف موارد منتظم (URI) مخصّصًا (مثل
example://products/123) لنقل المستخدم مباشرةً إلى جزء معيّن من المحتوى داخل التطبيق. وهي فعّالة للتنقّل الداخلي أو الروابط من المصادر التي تتحكّم فيها، ولكنّها ليست روابط ويب عادية ويمكن أن تؤدي إلى ظهور مربّع الحوار الخاص بإزالة الغموض إذا سجّل تطبيق آخر المخطط المخصّص نفسه. - روابط الويب: هي روابط لصفحات في التطبيق تستخدم المخططَين العاديَين
httpوhttps. وهي أكثر تنوّعًا لأنّها عناوين URL عادية، ولكن في نظام التشغيل Android 12 والإصدارات الأحدث، ستؤدي دائمًا تقريبًا إلى ظهور مربّع الحوار الخاص بإزالة الغموض، ما يعني أنّه من المرجّح أن يتعامل متصفّح الويب الخاص بالمستخدم معها تلقائيًا، بدلاً من توجيهها إلى تطبيقك. - روابط التطبيق: تتوفّر هذه الروابط منذ الإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات)، وهي روابط ويب تم التحقّق منها. من خلال عملية ربط الموقع الإلكتروني، يمكنك إثبات ملكيتك للنطاق لنظام Android. وبعد إثبات الملكية، يوجّه النظام تلقائيًا الروابط الخاصة بهذا النطاق إلى تطبيقك مباشرةً، بدون عرض مربّع الحوار التوضيحي. يؤدي ذلك إلى توفير تجربة موثوقة وسلسة للمستخدمين.
إضافة فلاتر الأهداف للروابط الواردة
لإنشاء رابط إلى محتوى تطبيقك، أضِف intent filter يحتوي على هذه العناصر وقيم السمات في ملف البيان:
حدِّد إجراء الهدف ACTION_VIEW حتى يمكن الوصول إلى فلتر الأهداف من "بحث Google".
أضِف علامة <data> واحدة أو أكثر، ويمثّل كل منها تنسيق معرّف موارد موحّد (URI) يؤدي إلى النشاط. يجب أن تتضمّن العلامة <data> السمة android:scheme على الأقل.
يمكنك إضافة المزيد من السمات لزيادة تحسين نوع معرّف الموارد المنتظم (URI) الذي يقبله النشاط. على سبيل المثال، قد يكون لديك أنشطة متعدّدة تقبل معرّفات موارد منتظمة متشابهة، ولكنها تختلف استنادًا إلى المسار. في هذه الحالة، استخدِم السمة android:path أو صيغتها pathPattern أو pathPrefix للتمييز بين الأنشطة التي يجب أن يفتحها النظام لمسارات معرّفات الموارد المنتظمة المختلفة.
يجب تضمين الفئة BROWSABLE. وهو مطلوب لكي يكون فلتر الأهداف متاحًا من متصفّح الويب. وبدونها، لا يمكن أن يؤدي النقر على رابط في متصفّح إلى فتح تطبيقك.
يجب أيضًا تضمين الفئة DEFAULT، لأنّ ذلك يتيح لتطبيقك الاستجابة للأهداف الضمنية. وبدون هذه الفئة، لا يمكن بدء النشاط إلا إذا كان الهدف يحدّد اسم مكوّن تطبيقك.
يوضّح مقتطف XML التالي كيفية تحديد intent filter في ملف البيان لإنشاء روابط لصفحات معيّنة في التطبيق. ويتطابق كل من معرّفَي الموارد المنتظمَين "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> متعددة في intent filter نفسه، من المهم إنشاء intent filters منفصلة عندما يكون هدفك هو تعريف عناوين URL فريدة (مثل مجموعة معيّنة من scheme وhost)، لأنّه يتم في الواقع دمج عناصر <data> المتعددة في intent filter الأهداف نفسه معًا لاحتساب جميع أشكال سماتها المدمجة. على سبيل المثال، إليك ما يلي:
<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.
بعد إضافة فلاتر الأهداف التي تتضمّن معرّفات موارد منتظمة (URI) لمحتوى النشاط إلى ملف بيان تطبيقك، سيتمكّن نظام التشغيل Android من توجيه أي Intent يتضمّن معرّفات موارد منتظمة مطابقة إلى تطبيقك في وقت التشغيل.
لمزيد من المعلومات حول تحديد فلاتر الأهداف، راجِع مقالة السماح للتطبيقات الأخرى ببدء نشاطك.
قراءة البيانات من الأهداف الواردة
بعد أن يبدأ النظام نشاطك من خلال intent filter، يمكنك استخدام البيانات المقدَّمة من خلال 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 Debug Bridge مع أداة "مدير الأنشطة" (am) للتأكّد من أنّ معرّفات الموارد المنتظمة لفلاتر الأهداف التي حدّدتها للربط بصفحات معيّنة تؤدي إلى نشاط التطبيق الصحيح. ويمكنك تنفيذ أمر 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
يحدّد بيان التطبيق ومعالج الأهداف اللذان ضبطتهما طريقة الربط بين تطبيقك وموقع إلكتروني، والإجراءات التي يجب اتّخاذها بشأن الروابط الواردة. ومع ذلك، لكي يتعامل النظام مع تطبيقك باعتباره المعالج التلقائي لمجموعة من معرّفات الموارد الموحّدة، عليك أيضًا أن تطلب من النظام التحقّق من هذا الربط. توضّح مقالة التحقّق من روابط التطبيقات كيفية تنفيذ عملية التحقّق هذه.
لمزيد من المعلومات عن الأهداف وروابط التطبيقات، اطّلِع على المراجع التالية:
- الأهداف وفلاتر الأهداف
- السماح للتطبيقات الأخرى ببدء نشاطك
- إضافة روابط Android App Links باستخدام "استوديو Android"