التحقق من روابط تطبيقات الأندرويد

الإعلانات

التحقق من روابط تطبيقات الأندرويد

 

 

 

التحقق من روابط تطبيقات الأندرويد

روابط تطبيقات الأندرويد هي نوع خاص من الروابط العميقة، التي تتيح لعناوين URL الخاصة بموقعك أن تقوم.. التحقق من روابط تطبيقات

بفتح المحتوى المطابق على الفور في تطبيق الأندرويد (دون مطالبة المستخدم بتحديد التطبيق). التحقق من روابط تطبيقات

لإضافة روابط تطبيقات الأندرويد إلى تطبيقك، قم بتعيين مرشحات الغرض التي تفتح محتوى تطبيقك بإستخدام عناوين URL HTTP..

(كما هو موضح في إنشاء روابط عميقة لمحتوى التطبيق)، وتحقق من أنك تملك كلٍ من التطبيق وعناوين URL لموقع الويب (كما هو موضح في هذا الدليل).

إذا نجح النظام في إثبات ملكيتك لعناوين URL، فسيعمل تلقائياً على توجيه أغراض URL هذه إلى تطبيقك.

لإثبات ملكية كلٍ من تطبيقك و موقع الويب الخاص بك، يلزمك إتباع الخطوات التالية:

– طلب التحقق التلقائي من رابط التطبيق في ملف الإيضاح. يشير هذا إلى نظام الأندرويد و الذي ينبغي أن..

يتحقق من أن تطبيقك ينتمي إلى نطاق URL المستخدم في مرشح الغرض الخاص بك.

 

– الإعلان عن العلاقة بين موقعك الإلكتروني ومرشحات الغرض من خلال إستضافة ملف JSON لروابط الأصول الرقمية في الموقع التالي:

https://domain.name/.well-known/assetlinks.json

 

يمكنك العثور على المعلومات ذات الصلة في المصادر التالية:

 

 

 

 

 

 

الفرق بين الروابط العميقة وروابط التطبيق


 

الرابط العميق هو مرشح غرض يسمح للمستخدمين بالدخول مباشرة إلى نشاط معين في تطبيق الأندرويد.

قد يؤدي النقر فوق أحد هذه الروابط إلى فتح مربع حوار التوضيح، والذي يسمح للمستخدم بتحديد واحد من عدة تطبيقات..

(بما في ذلك تطبيقاتك) التي يمكنها التعامل مع عنوان URL المحدد. مثال، يعرض الشكل 1 مربع حوار توضيحي..

بعد أن ينقر المستخدم على رابط خريطة، ويسأله ما إذا كان سيتم فتح الرابط في تطبيق الخرائط أم في متصفح كروم.

 

             الشكل 1. مربع حوار توضيحي

 

رابط تطبيق الأندرويد هو رابط عميق يستند إلى عنوان URL لموقعك الإلكتروني والذي تم إثبات إنتمائه لموقعك الإلكتروني.

لذلك، يؤدي النقر على أحدها إلى فتح تطبيقك فوراً، إذا تم تثبيته — لا يظهر مربع حوار توضيحي.

على الرغم من أن المستخدم قد يغير لاحقاً ما يفضله للتعامل مع هذه الروابط.

 

 

يوضح الجدول التالي إختلافات أكثر تحديداً التحقق من روابط تطبيقات التحقق من روابط تطبيقات

الرابط العميق رابط التطبيق
Intent URL scheme

غرض مخطط عنوان URL

http, https أو مخطط مخصص يتطلب http أو https
Intent action

إجراء الغرض

أي إجراء يتطلب android.intent.action.VIEW
Intent category

تصنيف الغرض

أي تصنيف يتطلب 

android.intent.category.BROWSABLE

أو

android.intent.category.DEFAULT

Link verification

التحقق من الرابط

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

HTTPS

User experience

تجربة المستخدم

قد يعرض “مربع حوار توضيح” للمستخدم لكي يختار التطبيق الذي يفتح الرابط لا يوجد مربع حوار؛ يُفتح تطبيقك ليتعامل مع روابط موقعك الإلكتروني
Compatibility

التوافق

كافة نسخ الأندرويد أندرويد 6.0 و أعلى 

 

 

 

 

 

طلب التحقق من روابط التطبيق


لتمكين التحقق من معالجة روابط تطبيقك، قم بتعيين "android:autoVerify="true في أيٍّ من مرشحات الغرض..

لعنوان URL على الويب في ملف الإيضاح لتطبيقك والذي يحتوي على إجراء الغرض android.intent.action.VIEW ..

و تصنيف الغرض android.intent.category.BROWSABLE، كما هو موضح في مقتطف كود ملف الإيضاح التالي: التحقق من روابط تطبيقات

<activity ...>

    <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" android:host="www.example.com" />
        <data android:scheme="https" />
    </intent-filter>

</activity>

 

 

عندما تكون "android: autoVerify ="true موجودة على أي من مرشحات الغرض، فإن تثبيت تطبيقك على الأجهزة التي..

تعمل بنظام الأندرويد 6.0 والإصدارات الأحدث سوف يتسبب في محاولة النظام التحقق من جميع الإستضافات..

المقترنة بعناوين URL في أي من مرشحات الغرض لتطبيقك. يتضمن التحقق ما يلي:

1- يفحص النظام جميع مرشحات الغرض التي تتضمن:

  • الإجراء: android.intent.action.VIEW
  • التصنيف: android.intent.category.BROWSABLE و android.intent.category.DEFAULT
  •  مخطط البيانات: http أو https

2- لكل أسم مضيف فريد موجود في مرشحات الغرض المشار إليها أعلاه، سوف يستعلم الأندرويد عن مواقع الويب..

المتوافقه مع ملف روابط الأصول الرقمية على

https: //hostname/.well-known/assetlinks.json.

فقط في حالة عثور النظام على ملف روابط الأصول الرقمية المتوافق مع جميع الإستضافات في ملف الإيضاح..

يتم إنشاء التطبيق كمعالج إفتراضي لأنماط عناوين URL المحددة.

 

 

 

 

دعم ربط التطبيق للعديد من الإستضافات

 

يجب أن يكون النظام قادراً على التحقق من كل مضيف محدد في عناصر بيانات مرشحات الغرض لـ URL التطبيق مقابل ملفات روابط الأصول الرقمية..

المستضافة في جميع نطاقات الويب المعنية. في حالة إخفاق أي عملية تحقق، لن يتم التحقق من التطبيق ليكون معالج إفتراضي..

لأي من أنماط عناوين URL المحددة في مرشحات غرض التطبيق.

عندها سيعيد النظام سلوكه القياسي ليحل الغرض، كما هو موضح في إنشاء روابط عميقة لمحتوى التطبيق.

مثال، سيفشل تطبيق يستخدم مرشحات الغرض التالية في التحقق، إذا لم يتم العثور على ملف assetlinks.json على كلٍ من:

https://www.example.com/.well-known/assetlinks.json و

https://www.example.net/.well-known/assetlinks.json :

<application>

  <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="http" android:host="www.example.com" />
      <data android:scheme="https" />
    </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" android:host="www.example.net" />
    </intent-filter>
  </activity>

</application>

 

 

تذكر أن جميع عناصر البيانات في نفس مرشح الغرض يتم دمجها معاً لحساب جميع أشكال سماتها المدمجة.

مثال، يتضمن مرشح الغرض الأول أعلاه على عنصر البيانات <data> الذي يقوم فقط بالإعلان عن نظام HTTPS.

ولكن يتم دمجه مع عنصر البيانات <data> الآخر بحيث يدعم مرشح الغرض كلٍ من http://www.example.com و https://www.example.com.

على هذا النحو، يجب عليك إنشاء مرشحات غرض منفصلة، عندما تريد تعريف تركيبات معينة من مخططات ونطاقات URI.

 

 

 

 

دعم ربط التطبيق بنطاقات فرعية متعددة

يعالج بروتوكول “روابط الأصول الرقمية” النطاقات الفرعية في مرشحات الغرض كإستضافات منفصلة وفريدة.

لذلك إذا كان مرشح الغرض يسرد إستضافات متعددة ذات نطاقات فرعية مختلفة، فيجب عليك نشر assetlinks.json صالحة على كل نطاق.

مثال، يتضمن مرشح الغرض التالي على http://www.example.com و mobile.example.com كإستضافات لغرض عناوين URL المقبولة.

لذلك، يجب نشر assetlinks.json صالح على كلٍ من

https://www.example.com/.well-known/assetlinks.json و

https://mobile.example.com/.well-known/assetlinks.json.

<application>
  <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" android:host="www.example.com" />
      <data android:scheme="https" android:host="mobile.example.com" />
    </intent-filter>
  </activity>
</application>

 

بدلاً من ذلك، إذا أعلنت عن أسم المضيف بإستخدام رمز (مثل example.com.*) ، فيجب نشر ملف assetlinks.json على أسم المضيف الأساسي (example.com).

مثال، تطبيق بمرشح الغرض التالي سيقوم بتمرير التحقق لأي اسم فرعي لـ example.com (مثل foo.example.com) ..

طالما يتم نشر ملف assetlinks.json على 

https://example.com/.well- known/assetlinks.json:

<application>
  <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" android:host="*.example.com" />
    </intent-filter>
  </activity>
</application>

 

 

 

 

 

الإعلان عن المواقع الإلكترونية ذات الصله


يجب نشر ملف JSON لروابط الأصول الرقمية على موقعك للإشارة إلى تطبيقات الأندرويد المرتبطة بموقع الويب..

والتحقق من أغراض عناوين URL الخاصة بالتطبيق. يستخدم ملف JSON الحقول التالية لتحديد التطبيقات المرتبطة:

  • package_name: هو معرف التطبيق المعلن عنه في ملف البناء build.gradle الخاص بالتطبيق.

 

  • sha256_cert_fingerprints: بصمات SHA256 الخاصة بشهادة توقيع تطبيقك. يمكنك إستخدام الأمر التالي لتوليد البصمة عن طريق أداة keytool Java:
$ keytool -list -v -keystore my-release-key.keystore

 

يدعم هذا الحقل العديد من البصمات، والتي يمكن إستخدامها لدعم إصدارات مختلفة من تطبيقك، مثل تصميمات تصحيح الأخطاء والإنتاج.

 

يمنح الملف التالي assetlinks.json حقوق فتح الرابط لتطبيق com.example على الأندرويد:

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example",
    "sha256_cert_fingerprints":
    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
}]

 

 

 

 

 

ربط موقع ويب بعدة تطبيقات

يمكن لموقع الويب أن يعلن عن إرتباطه بعدة تطبيقات داخل ملف assetlinks.json نفسه.

تُظهر قائمة الملفات التالية مثالاً لملف بيان يُعلن عن إرتباطه بتطبيقين، بشكلٍ منفصل، وتتواجد في https://www.example.com/.well-known/assetlinks.json:

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.puppies.app",
    "sha256_cert_fingerprints":
    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
  },
  {
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.monkeys.app",
    "sha256_cert_fingerprints":
    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
}]

 

قد تتعامل التطبيقات المختلفة مع روابط لموارد مختلفة ضمن نفس مستضيف الويب.

على سبيل المثال، قد يعلن التطبيق الأول عن مرشح غرض لـ https://example.com/articles ، وقد يعلن التطبيق الثاني عن مرشح غرض لـ https://example.com/videos.

 

ملاحظة: قد يتم توقيع عدة تطبيقات مرتبطة بنطاق، بنفس الشهادات أو بشهادات مختلفة.

 

 

 

 

ربط مواقع ويب متعددة بتطبيق واحد

يمكن لمواقع الويب المتعددة أن تعلن عن إرتباطها بنفس التطبيق في ملفات assetlinks.json الخاصة بها.

قوائم الملفات التالية تظهر مثالاً على كيفية إعلان الإرتباط لـ example.com و example.net مع التطبيق الأول.

القائمة الأولى تظهر إرتباط example.com مع التطبيق الأول:

https://www.example.com/.well-known/assetlinks.json

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.mycompany.app1",
    "sha256_cert_fingerprints":
    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
}]

 

 

تظهر القائمة التالية إرتباط example.net مع الأول. فقط يختلف الموقع الذي تتم فيه إستضافة هذه الملفات (.com و .net):

https://www.example.net/.well-known/assetlinks.json

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.mycompany.app1",
    "sha256_cert_fingerprints":
    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
}]

 

 

 

 

 

نشر ملف التحقق JSON

يجب عليك نشر ملف التحقق JSON الخاص بك في الموقع التالي:

https://domain.name/.well-known/assetlinks.json

 

تأكد مما يلي: التحقق من روابط تطبيقات التحقق من روابط تطبيقات التحقق من روابط تطبيقات

– يتم تقديم ملف assetlinks.json مع نوع المحتوى application/json.

– يجب أن يسمح بالوصول إلى ملف assetlinks.json عبر إتصال HTTPS، بغض النظر عما إذا كانت مرشحات الغرض للتطبيق تعلن عن HTTPS كنظام بيانات.

– يجب أن يسمح بالوصول إلى ملف assetlinks.json بدون أي عمليات إعادة توجيه (لا توجد عمليات إعادة توجيه 301 أو 302)..

ويمكن الوصول إليه بواسطة برامج التتبع (يجب أن يسمح ملف robots.txt بزحف /.well-known/assetlinks.json).

– إذا كانت روابط التطبيق تدعم نطاقات إستضافة متعددة ، فيجب عليك نشر ملف assetlinks.json على كل نطاق.

راجع دعم ربط التطبيق بعدة إستضافات.

– لا تنشر تطبيقك بإستخدام عناوين URL الخاصة بـ “تطوير/إختبار” في ملف الإيضاح الذي قد لا يكون متاحاً للعامه..

(مثل أي عنوان يمكن الوصول إليه بإستخدام شبكة ظاهرية خاصة فقط VPN).

في جميع هذه الحالات، لتكوين متغيرات بناء مختلفة لإنشاء ملف إيضاح مختلف لتطوير البناء build devs.

 

 

 

 

إختبار روابط التطبيق


عند تنفيذ ميزة ربط التطبيق، يجب عليك إختبار وظيفة الربط للتأكد من أن النظام يمكنه ربط تطبيقك بمواقع الويب الخاصة بك، ومعالجة طلبات عناوين URL، كما هو متوقع.

لإختبار ملف بيان موجود، يمكنك إستخدام أداة مولد قائمة البيان و إختبارها.

 

 

 

 

تأكيد قائمة الإستضافات للتحقق

عند الإختبار، يجب عليك تأكيد قائمة الإستضافات المقترنة التي يجب على النظام التحقق منها لتطبيقك.

قم بإنشاء قائمة بجميع عناوين URL التي تتضمن مرشحات الغرض المتوافقة فيها على السمات والعناصر التالية:

  • سمة android:scheme ذات قيمة http أو https
  • سمة android:host مع نمط عنوان URL للنطاق
  • عنصر التصنيف android.intent.action.VIEW
  • عنصر التصنيف android.intent.category.BROWSABLE

إستخدم هذه القائمة للتحقق من وجود ملف JSON لروابط الأصول الرقمية على كل اسم إستضافة و نطاق فرعي.

 

 

 

 

تأكيد ملفات روابط الأصول الرقمية

لكل موقع ويب، إستخدم واجهة برمجة التطبيقات لروابط الأصول الرقمية للتأكد من أن ملف JSON لروابط الأصول الرقمية مستضاف ومعرّف بشكلٍ صحيح:

https://digitalassetlinks.googleapis.com/v1/statements:list?
   source.web.site=https://domain.name:optional_port&
   relation=delegate_permission/common.handle_all_urls

 

 

 

 

 

إختبار غرض عنوان URL

بمجرد تأكيد قائمة بمواقع الويب التي تريد ربطها بتطبيقك، وقد أكدت بأن ملف JSON المستضاف صالح، قم بتثبيت التطبيق على جهازك.

أنتظر 20 ثانية على الأقل حتى تكتمل عملية التحقق غير المتزامنة. إستخدم الأمر التالي للتحقق مما إذا كان النظام..

قد تحقق من تطبيقك وقام بتعيين سياسات التعامل الصحيحة مع الروابط:

adb shell am start -a android.intent.action.VIEW \
    -c android.intent.category.BROWSABLE \
    -d "http://domain.name:optional_port"

 

 

 

 

تحقق من سياسات الإرتباط

كجزء من عملية الإختبار، يمكنك التحقق من إعدادات النظام الحالية لمعالجة الإرتباط. إستخدم الأمر التالي..

للحصول على قائمة بسياسات التعامل مع الإرتباط الموجودة لكافة التطبيقات على جهازك المتصل:

adb shell dumpsys package domain-preferred-apps

 

أو ما يلي فهو يفعل الشيء نفسه:

adb shell dumpsys package d

 

ملاحظة: تأكد من الإنتظار لمدة 20 ثانية على الأقل بعد تثبيت تطبيقك للسماح للنظام بإستكمال عملية التحقق.

 

يقوم الأمر بإرجاع قائمة بكل مستخدم أو ملف تعريف محدد على الجهاز، مسبوقاً بهيدر في الصيغة التاليه: 

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، بإظهار الحالة دائماً. يرتبط الرقم السداسي العشري..

بعد هذه الحالة بسجل نظام الأندرويد لتفضيلات الربط الخاصة بتطبيق المستخدم. لا تشير هذه القيمة إلى نجاح التحقق.

 

 

ملاحظة: إذا قام أحد المستخدمين بتغيير إعدادات رابط التطبيق لأحد التطبيقات قبل إكتمال عملية التحقق..

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

قد مكّن التطبيق بشكلٍ صريح للقيام بفتح الروابط المدعومة من دون طلب ذلك. وهذا لأن تفضيلات المستخدم لها الأسبقية على..

التحقق البرمجي (أو عدمه). ونتيجة لذلك، ينتقل الرابط مباشرةً إلى تطبيقك، دون إظهار مربع حوار، تماماً كما لو كان التحقق ناجح.

 

 

مثال على الإختبار

لكي ينجح التحقق من رابط التطبيق، يجب أن يكون النظام قادراً على التحقق من تطبيقك مع جميع مواقع الويب..

التي تحددها في مرشحات غرض التطبيق، والتي تستوفي معايير روابط التطبيقات. يوضح المثال التالي تهيئة ملف الإيضاح مع العديد من روابط التطبيق المحددة:

<application>

    <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" android:host="www.example.com" />
            <data android:scheme="https" 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" 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" 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" 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" 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)

 

لمعرفة المزيد حول قوائم البيان، راجع إنشاء قائمة بيانالتحقق من روابط تطبيقات التحقق من روابط تطبيقات

 


للإطلاع على المقال باللغة الإنجليزية أضغط هنا.

الإعلانات

اترك رد