تفعيل هدف مشاركة الويب في "النشاط على الويب الموثوق به"

يتيح استهداف مشاركة الويب لتطبيقات الويب التقدّمية (PWA) تلقّي المحتوى المشترَك من التطبيقات الأخرى المثبَّتة على الجهاز. يمكن استخدام هذه الميزة، على سبيل المثال، من خلال تطبيقات مثل برامج تعديل الصور لتلقّي صورة من تطبيق كاميرا أو شبكة اجتماعية لتلقّي صورة أو فيديو لمشاركتهما.

بدءًا من الإصدار 86 من Chrome، أصبح هدف مشاركة الويب متاحًا أيضًا للتطبيقات التي تستخدم نشاط الويب الموثوق به. على الرغم من أنّ تطبيق الويب التقدّمي من المفترض أن يعمل بشكلٍ تلقائي، إلا أنّه يجب إجراء بعض التغييرات على تطبيق Android.

تفترض هذه المقالة أنّ المطوّر على دراية بأنشطة الويب الموثوق بها. يمكن للقُرّاء المبتدئين في استخدام التكنولوجيا البدء باستخدام دليل الدمج.

في هذا السياق، لا يشمل النطاق شرحًا كاملاً لتنفيذ ميزة "استهداف مشاركة الويب" في تطبيق الويب التقدّمي، ويمكن للمطوّرين العثور على مزيد من المعلومات في هذه المقالة.

سيتم استخدام التطبيق التجريبي على الرابط https://scrapbook-pwa.web.app/ كتطبيق متوافق مع مبادرة التطبيقات المتوافقة مع الويب في هذه المقالة، ويتوفّر رمزه المصدر على GitHub، ويستند تطبيق Android إلى التطبيق التجريبي الأساسي لميزة "النشاط الموثوق به على الويب".

إضافة هدف المشاركة على الويب إلى تطبيق Android

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

build.gradle

تم تحديث مكتبة android-browser-helper لإتاحة استخدام ميزة Web Share Target. كخطوة أولى، عليك تحديث التطبيق لاستخدام إصدار أعلى من 2.0.1 أو إصدار مماثل.

dependencies {
    ...
    implementation 'com.google.androidbrowserhelper:androidbrowserhelper:2.2.0'
}

res/strings.xml

يجب أن يُعلم التطبيق "نشاط الويب الموثوق به" بتفاصيل المشاركة التي يتيح تلقّيها، مثل عناوين URL التي يجب فتحها، والطريقة التي سيتم استخدامها، وأنواع MIME المتوافقة.

ويتم ذلك من خلال ملف JSON، تتم إتاحته ضِمن "النشاط الموثوق به على الويب" باستخدام مورد سلسلة. إنّ حقول هي نفسها حقول share_target المتوفّرة في بيان الويب، ويمكن إضافتها إلى سلسلة داخل strings.xml، كما هي تقريبًا، مع ملاحظتَين مهمتَين:

  1. يجب أن تكون قيمة سمة الإجراء هي عنوان URL الكامل، بما في ذلك المصدر.
  2. يجب إلغاء ترميز علامات الاقتباس المزدوجة، بحيث تصبح كل " \".

في ما يلي شكل قسم share_target من https://scrapbook-pwa.web.app/manifest.json:

{
  ...
  "share_target": {
    "action": "/_share-target",
    "enctype": "multipart/form-data",
    "method": "POST",
    "params": {
      "files": [{
        "name": "media",
        "accept": [
          "audio/*",
          "image/*",
          "video/*"
        ]
      }]
    }
  },
  ...
}

وسيبدو عنصر السلسلة الجديد كما يلي:

<string name="share_target">
{
    \"action\": \"https://twa-web-scrapbook.web.app/_share-target\",
    \"method\": \"POST\",
    \"enctype\": \"multipart/form-data\",
    \"params\": {
      \"files\": [{
          \"name\": \"media\",
          \"accept\": [\"image/*\", \"audio/*\", \"video/*\"]
      }]
    }
}
</string>

AndroidManifest.xml

مطلوب إجراء بعض التغييرات على بيان Android. أولاً، علينا التأكّد من أنّه تمّ الإبلاغ عن DelegationService وتصديره وتفعيله.

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

<service
    android:name="com.google.androidbrowserhelper.trusted.DelegationService"
    android:enabled="true"
    android:exported="true">

    <intent-filter>
        <action android:name="android.support.customtabs.trusted.TRUSTED_WEB_ACTIVITY_SERVICE"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</service>

أخيرًا، يجب إضافة عنصران جديدين إلى علامة النشاط LauncherActivity: - علامة meta-data تشير إلى ملف JSON المحدَّد في string.xml - intent-filter يوضّح أنواع mime التي يمكن للتطبيق التعامل معها في التطبيقات الأخرى على الجهاز

<meta-data
    android:name="android.support.customtabs.trusted.METADATA_SHARE_TARGET"
    android:resource="@string/share_target"/>

<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <action android:name="android.intent.action.SEND_MULTIPLE" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="audio/*" />
    <data android:mimeType="image/*" />
    <data android:mimeType="video/*" />
</intent-filter>

كما هو موضّح في الترميز أعلاه، يجب إضافة عنصر data لكل mime-type تم تعريفها في share_target JSON.

الخاتمة

يؤدي دمج Web Share Target إلى تفعيل تطبيقات الويب التقدّمية (PWA) داخل "النشاط الموثوق به على الويب" للحصول على تكامل أكبر مع التطبيقات الأخرى المثبّتة على جهاز Android.

كما هو موضّح في الخطوات أعلاه، يسهّل android-browser-helper ترميز البيانات الإضافي المطلوب لإضافة واجهة برمجة التطبيقات في تطبيق Android حالي يستخدم ميزة "نشاط الويب الموثوق به".

اطّلِع على مقالة "استهداف مشاركة الويب" لمعرفة المزيد من المعلومات عن استخدام واجهة برمجة التطبيقات على تطبيق ويب تقدّمي وWeb Share API لمعرفة كيفية مشاركة المحتوى من تطبيق الويب التقدّمي.

تحديد المشاكل وحلّها

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

عندما لا يظهر التطبيق كخيار، يعني ذلك أنّ intent-filter غير صحيح. تحقَّق جيدًا من ترميز intent-filter وتأكَّد من أنّه يحتوي على الإجراءات الصحيحة وال الفئة وmime-types التي يعالجها التطبيق.

يظهر تطبيقي كخيار، ويتم تشغيل تطبيق الويب التقدّمي، ولكن لا تتم مشاركة البيانات.

هناك بضعة أسباب يمكن أن تؤدي إلى ذلك. في ما يلي قائمة التحقّق من النقاط التي يجب مراعاتها:

  • تأكَّد من نجاح عملية التحقّق من روابط مواد العرض الرقمية.
  • تحقَّق من تنسيق JSON داخل ملف domains.xml للتأكّد من صحته.