יעד של שיתוף באינטרנט מאפשר לאפליקציות PWA לקבל תוכן משותף מאפליקציות אחרות שמותקנות ב- במכשיר. לדוגמה, אפליקציות כמו עורכי תמונות יכולות להשתמש בתכונה הזאת לקבל תמונה מאפליקציית מצלמה או מרשת חברתית, כדי לקבל תמונה או סרטון לשיתוף.
החל מגרסה 86 של Chrome, 'יעד שיתוף אינטרנט' זמין עכשיו גם לאפליקציות באמצעות פעילות באינטרנט מהימנה. לא תמיד אפשר להשתמש ב-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
, כמעט כפי שהיא, עם שתי הערות חשובות:
- הערך של מאפיין הפעולה חייב להיות כתובת ה-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>
לסיום, צריך להוסיף שני פריטים חדשים לתג 'פעילות במרכז האפליקציות':
- תג 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
שהוצהר
בקובץ ה-JSON share_target
.
סיכום
השילוב של 'יעד שיתוף באינטרנט' מאפשר לאפליקציות PWA שנכללות בפעילות אינטרנט מהימנה להיות עמוקה יותר משולבות עם אפליקציות אחרות שמותקנות במכשיר Android.
כפי שמתואר בשלבים שלמעלה, תגי העיצוב הנוספים נדרשים כדי להוסיף תמיכה ב-API אפליקציה קיימת ל-Android שמשתמשת ב'פעילות אינטרנט מהימנה', הופכים לפשוט יותר על ידי android-browser-helper.
לקבלת מידע נוסף על שימוש ב-API ב-PWA, כדאי לעיין במאמר בנושא יעד שיתוף באינטרנט. Web Share API – כדי ללמוד איך לשתף תוכן מ-Progressive Web App.
פתרון בעיות
כשניסיתי לשתף קובץ מאפליקציה אחרת, האפליקציה לא מופיעה כאפשרות.
כשהאפליקציה לא מופיעה כאפשרות, סימן שה-intent-filter
שגוי. יש לבדוק שוב את תגי העיצוב של intent-filter
כדי לוודא שהוא מכיל את הפעולות הנכונות,
קטגוריה ו-mime-types
מטופלות על ידי האפליקציה.
האפליקציה שלי מוצגת כאפשרות, ה-PWA מופעלת אבל הנתונים לא משותפים.
יש כמה סיבות אפשריות לכך. זו רשימת דברים שכדאי לבדוק:
- מוודאים שהאימות של Digital Asset Links מוצלח.
- צריך לבדוק את התיקון ב-JSON בתוך string.xml.