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

أندريه سيبرياني باندارا
"أندريه سيبرياني باندارا"

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

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

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

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

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

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

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

build.gradle

تم تحديث مكتبة android-browser-helper لتتوافق مع ميزة "استهداف المشاركة على الويب". كخطوة أولى، قم بتحديث التطبيق لاستخدام إصدار أعلى أو يساوي 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 المحدّد في shortcuts.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.

الخاتمة

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

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

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

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

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

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

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

هناك بعض الأشياء التي قد تسبب ذلك. في ما يلي قائمة تحقّق تشمل ما يلي:

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