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

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

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

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

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

سيتم استخدام التطبيق التجريبي المتوفّر على https://scrapbook-pwa.web.app/ كتطبيق ويب تقدّمي (PWA) لهذا الغرض. ويتوفر رمز المصدر الخاص بها على 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 المحدّد في wire.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-browser-helper.

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

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

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

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

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

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

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