भरोसेमंद वेब गतिविधि में वेब शेयर टारगेट चालू करें

वेब शेयर टारगेट की मदद से, पीडब्ल्यूए को इंस्टॉल किए गए अन्य ऐप्लिकेशन से, शेयर किया गया कॉन्टेंट मिल सकता है डिवाइस. उदाहरण के लिए, इस सुविधा का इस्तेमाल इमेज एडिटर जैसे ऐप्लिकेशन के लिए किया जा सकता है शेयर करने के लिए इमेज या वीडियो पाने के लिए, कैमरा ऐप्लिकेशन या सोशल नेटवर्क से इमेज पाएं.

Chrome 86 और उसके बाद के वर्शन में, Web Share Target, अब उन ऐप्लिकेशन के लिए भी उपलब्ध है जो इनका इस्तेमाल करते हैं: भरोसेमंद वेब गतिविधि. हालांकि, पीडब्ल्यूए को अलग तरीके से इस्तेमाल किया जाना चाहिए. हालांकि, आपको कुछ बदलाव करने होंगे .

इस लेख में यह माना गया है कि डेवलपर को भरोसेमंद वेब गतिविधियों के बारे में जानकारी है. ऐसे पाठक जो पहली बार इस ऐप्लिकेशन का इस्तेमाल कर रहे हैं तो टेक्नोलॉजी इंटिग्रेशन गाइड के साथ शुरुआत कर सकती है.

इसी तरह, PWA में वेब शेयर टारगेट लागू करने की पूरी जानकारी इनके बारे में ज़्यादा जानने के लिए, इस लेख पर जाएं.

इसके लिए, https://scrapbook-pwa.web.app/ पर मौजूद डेमो ऐप्लिकेशन का इस्तेमाल पीडब्ल्यूए के तौर पर किया जाएगा लेख पढ़ें और इसका सोर्स कोड GitHub पर उपलब्ध है. साथ ही, Android ऐप्लिकेशन इन चीज़ों पर आधारित है भरोसेमंद वेब गतिविधि का बुनियादी डेमो.

Android ऐप्लिकेशन में वेब शेयर टारगेट जोड़ें

वेब शेयर लागू करने के लिए, भरोसेमंद वेब गतिविधि पर आधारित मौजूदा ऐप्लिकेशन में बदलाव करने के लिए टारगेट, तीन अलग-अलग फ़ाइलों में बदलाव की ज़रूरत है:

बिल्ड.ग्रेडल

android-browser-helper लाइब्रेरी को अपडेट किया गया है. अब यह वेब शेयर टारगेट के साथ काम करता है. बतौर पहले चरण में, 2.0.1 के बाद वाले या उसके बराबर के वर्शन का इस्तेमाल करने के लिए ऐप्लिकेशन को अपडेट करें.

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

res/strings.xml

ऐप्लिकेशन को भरोसेमंद वेब गतिविधि को, उसके साथ काम करने वाली शेयरिंग की जानकारी देनी होगी जैसे कि कौनसे यूआरएल खोलने हैं, इस्तेमाल करने का तरीका, और माइम-टाइप का इस्तेमाल किया जा सकता है.

ऐसा JSON की मदद से किया जाता है, जो स्ट्रिंग रिसॉर्स की मदद से भरोसेमंद वेब गतिविधि को उपलब्ध कराया जाता है. कॉन्टेंट बनाने ये फ़ील्ड, वेब मेनिफ़ेस्ट में उपलब्ध share_target फ़ील्ड के जैसे होते हैं. साथ ही, इन्हें strings.xml के अंदर एक स्ट्रिंग, करीब-करीब वैसी ही है, जिसमें दो ज़रूरी नोट हैं:

  1. कार्रवाई एट्रिब्यूट की वैल्यू, पूरा यूआरएल होना चाहिए. इसमें ऑरिजिन भी शामिल होना चाहिए.
  2. डबल कोट को एस्केप किया जाना चाहिए, ताकि हर " \" हो जाए.

https://scrapbook-pwa.web.app/manifest.json का share_target सेक्शन ऐसा दिखता है पसंद:

{
  ...
  "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 टैग, जो स्ट्रिंग.xml में बताए गए JSON का रेफ़रंस देता है. - एक intent-filter, जो बताता है कि यह ऐप्लिकेशन कौनसे माइम-टाइप मैनेज कर सकता है ऐप पर जाएं.

<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>

जैसा कि ऊपर दिए गए मार्कअप में देखा जा सकता है, एलान किए गए हर mime-type के लिए एक data एलिमेंट जोड़ना ज़रूरी है share_target JSON में.

नतीजा

वेब शेयर टारगेट इंटिग्रेशन की मदद से, भरोसेमंद वेब गतिविधि में मौजूद PWA को ज़्यादा बेहतर तरीके से मदद मिल सकती है Android डिवाइस पर इंस्टॉल किए गए अन्य ऐप्लिकेशन के साथ इंटिग्रेट किया जा सकता है.

जैसा कि ऊपर दिए गए चरणों में बताया गया है, भरोसेमंद वेब गतिविधि का इस्तेमाल करने वाले मौजूदा Android ऐप्लिकेशन को, android-ब्राउज़र-helper ने ज़्यादा आसान बनाया है.

एपीआई का इस्तेमाल करके, पीडब्ल्यूए और Web Share API की मदद से, प्रोग्रेसिव वेब ऐप्लिकेशन से कॉन्टेंट शेयर करने का तरीका जानें.

समस्या का हल

किसी दूसरे ऐप्लिकेशन से फ़ाइल शेयर करने की कोशिश करने पर, मेरा ऐप्लिकेशन विकल्प के तौर पर नहीं दिखता.

जब ऐप्लिकेशन विकल्प के तौर पर नहीं दिखता, तो इससे पता चलता है कि intent-filter गलत. intent-filter मार्कअप की दोबारा जांच करके पक्का करें कि इसमें सही कार्रवाइयां शामिल हैं. कैटगरी और mime-types ऐप्लिकेशन मैनेज करता है.

मेरा ऐप्लिकेशन एक विकल्प के तौर पर दिखता है और पीडब्ल्यूए चालू हो गया है, लेकिन डेटा शेयर नहीं किया जाता.

कुछ वजहों से ऐसा हो सकता है. इस चेकलिस्ट में सभी ज़रूरी बातें बताई गई हैं:

  • पक्का करें कि डिजिटल ऐसेट लिंक की पुष्टि हो गई हो.
  • सही होने के लिए,string.xml में JSON की जांच करें.