يتيح هدف مشاركة الويب لتطبيقات الويب التقدّمية تلقّي المحتوى المشترَك من التطبيقات الأخرى المثبَّتة على الجهاز. يمكن استخدام هذه الميزة، على سبيل المثال، من خلال تطبيقات مثل برامج تعديل الصور لتلقّي صورة من تطبيق كاميرا أو شبكة اجتماعية لتلقّي صورة أو فيديو لمشاركتهما.
بدءًا من الإصدار 86 من Chrome، أصبح هدف مشاركة الويب متاحًا أيضًا للتطبيقات التي تستخدم نشاط الويب الموثوق به. على الرغم من أنّ تطبيق الويب التقدّمي من المفترض أن يعمل بشكلٍ تلقائي، إلا أنّه يجب إجراء بعض التغييرات على تطبيق Android.
تفترض هذه المقالة أنّ المطوّر على دراية بالأنشطة الموثوق بها على الويب. يمكن للقُرّاء المبتدئين في استخدام التكنولوجيا البدء باستخدام دليل الدمج.
في هذا السياق، لا يشمل النطاق شرحًا كاملاً لتنفيذ ميزة "استهداف مشاركة الويب" في تطبيق الويب التقدّمي، ويمكن للمطوّرين العثور على مزيد من المعلومات في هذه المقالة.
سيتم استخدام التطبيق التجريبي على الرابط https://scrapbook-pwa.web.app/ كتطبيق متوافق مع الأجهزة الجوّالة (PWA) في هذه المقالة، ويتوفّر رمزه المصدر على GitHub، ويستند تطبيق Android إلى التطبيق التجريبي الأساسي لميزة "النشاط الموثوق به على الويب".
إضافة ميزة "المشاركة على الويب" إلى تطبيق Android
لتعديل تطبيق حالي يستند إلى "النشاط الموثوق به على الويب" من أجل تنفيذ Web Share Target، يجب إجراء تعديلات على ثلاثة ملفات مختلفة:
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
، كما هي تقريبًا، مع ملاحظتَين مهمتَين:
- يجب أن تكون قيمة سمة الإجراء هي عنوان URL الكامل، بما في ذلك المصدر.
- يجب إلغاء ترميز علامات الاقتباس المزدوجة، بحيث تصبح كل
"
\"
.
في ما يلي شكل قسم 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 المحدّد في strings.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 دمج التطبيقات المصمّمة للويب داخل "نشاط موثوق على الويب" بشكلٍ عميق مع التطبيقات الأخرى المثبَّتة على جهاز Android.
كما هو موضّح في الخطوات أعلاه، يسهّل android-browser-helper ترميز البيانات الإضافي المطلوب لإضافة إمكانية استخدام واجهة برمجة التطبيقات في تطبيق Android حالي يستخدم ميزة "نشاط الويب الموثوق به".
اطّلِع على مقالة "استهداف مشاركة الويب" لمعرفة المزيد من المعلومات عن استخدام واجهة برمجة التطبيقات على تطبيق ويب تقدّمي وWeb Share API لمعرفة كيفية مشاركة المحتوى من تطبيق الويب التقدّمي.
تحديد المشاكل وحلّها
لا يظهر تطبيقي كخيار عند محاولة مشاركة ملف من تطبيق آخر.
عندما لا يظهر التطبيق كخيار، يعني ذلك أنّ intent-filter
غير صحيح. تحقَّق جيدًا من ترميز intent-filter
وتأكَّد من أنّه يحتوي على الإجراءات الصحيحة وال
الفئة وmime-types
التي يعالجها التطبيق.
يظهر تطبيقي كخيار، ويتم تشغيل تطبيق الويب التقدّمي، ولكن لا تتم مشاركة البيانات.
هناك بضعة أسباب يمكن أن تؤدي إلى ذلك. في ما يلي قائمة تحقّق بالنقاط التي يجب الانتباه إليها:
- تأكَّد من نجاح عملية التحقّق من روابط مواد العرض الرقمية.
- تحقّق من صحة ملف JSON داخل strings.xml.