Güvenilir Web Etkinliğinde Web Paylaşımı Hedefi'ni etkinleştir

Web Paylaşımı Hedefi, PWA'ların cihazınızda yüklü diğer uygulamalardan paylaşılan içerik almasına olanak tanır. için geçerlidir. Bu özellik, örneğin resim düzenleyiciler gibi uygulamalar tarafından bir kamera uygulamasından veya sosyal ağdan görüntü ya da video almak için

Chrome 86'dan itibaren Web Paylaşımı Hedefi, Chrome 86'dan itibaren Güvenilir Web Etkinliği. PWA (Progresif Web Uygulaması) zaten kullanıma hazır olsa da, Android Uygulaması.

Bu makalede, geliştiricinin Güvenilir Web Etkinlikleri hakkında bilgi sahibi olduğu varsayılmaktadır. Okumaya yeni başlayan okuyucular, Entegrasyon Kılavuzu yardımıyla, teknolojiyi kullanmaya başlayabilirsiniz.

Aynı şekilde, PWA'da Web Paylaşımı Hedefi uygulamasının tam açıklaması ve geliştiriciler bu makaleden daha fazla bilgi edinebilir.

https://scrapbook-pwa.web.app/ adresindeki demo uygulaması, bunun için PWA olarak kullanılacaktır makale ve kaynak kodu GitHub'da mevcuttur ve Android Uygulaması temel Güvenilir Web Etkinliği demosu.

Android uygulamasına Web Paylaşımı Hedefi ekleme

Web Paylaşımı'nı uygulamak üzere mevcut bir Güvenilir Web Etkinliği tabanlı uygulamayı değiştirmek için Hedefleyin, üç farklı dosyada değişiklik yapılması gerekir:

build.gradle

android-browser-helper kitaplığı, Web Paylaşımı Hedefi desteğiyle güncellendi. Kullanıcı İlk olarak uygulamayı 2.0.1 veya üzeri bir sürüm kullanacak şekilde güncelleyin.

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

res/strings.xml

Uygulamanın, desteklediği paylaşımın ayrıntılarını Güvenilir Web Etkinliği'ne bildirmesi gerekir alma (hangi URL'lerin açılacağı, kullanılacak yöntem ve desteklenen MIME türleri gibi).

Bu işlem, Güvenilir Web Etkinliği'nde bir dize kaynağıyla kullanıma sunulan bir JSON aracılığıyla yapılır. İlgili içeriği oluşturmak için kullanılan alanları, Web Manifest'te bulunan share_target alanıyla aynıdır ve strings.xml içinde, neredeyse olduğu gibi ve iki önemli not içeren bir dize:

  1. İşlem özelliğinin değeri, kaynak dahil olmak üzere tam URL olmalıdır.
  2. Çift tırnak içine alınmalıdır. Böylece her ", \" haline gelir.

https://scrapbook-pwa.web.app/manifest.json dosyasının share_target bölümü bu şekilde görünür. örneğin:

{
  ...
  "share_target": {
    "action": "/_share-target",
    "enctype": "multipart/form-data",
    "method": "POST",
    "params": {
      "files": [{
        "name": "media",
        "accept": [
          "audio/*",
          "image/*",
          "video/*"
        ]
      }]
    }
  },
  ...
}

Yeni dize öğesi de aşağıdaki gibi görünür:

<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 manifest'inde birkaç değişiklik yapılması gerekiyor. Öncelikle, DelegationService bildirildi, dışa aktarıldı ve etkinleştirildi.

Uygulamalarını temel demoya dayalı olarak oluşturan geliştiriciler bu hizmete zaten sahip olurlar eklenir ve işaretleme, uygulama etiketinin içinde yer almalı ve aşağıdaki gibi görünmelidir:

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

Son olarak, LauncherActivity etkinlik etiketine iki yeni öğenin eklenmesi gerekir: - string.xml dosyasında tanımlanan JSON'a başvuran bir meta-data etiketi. - Uygulamanın diğer kullanıcılara hangi MIME türlerini işleyebileceğini belirten bir intent-filter ekleyebilirsiniz.

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

Yukarıdaki işaretlemede görebileceğiniz gibi, bildirilen her mime-type için bir data öğesi eklenmelidir share_target JSON dosyasında yaptınız.

Sonuç

Web Paylaşımı Hedefi entegrasyonu, Güvenilir Web Etkinliği içindeki PWA'ların, Android cihazda yüklü diğer uygulamalarla entegre olur.

Yukarıdaki adımlarda açıklandığı gibi, Güvenilir Web Etkinliği'ni kullanan mevcut Android uygulaması android-browser-helper tarafından basitleştirilmiştir.

PWA'da API'yi kullanma hakkında daha fazla bilgi edinmek için Web Paylaşımı Hedefi Web Share API: Progresif Web Uygulaması'ndan nasıl içerik paylaşacağınızı öğrenin.

Sorun giderme

Başka bir uygulamadan dosya paylaşmaya çalıştığımda uygulamam seçenek olarak görünmüyor.

Uygulama bir seçenek olarak görünmediğinde intent-filter, yanlış. intent-filter işaretlemesini tekrar kontrol edin, doğru işlemleri içerdiğinden emin olun. kategorisi ve mime-types uygulama tarafından işleniyor.

Uygulamam seçenek olarak görünüyor, PWA başlatıldı ancak veriler paylaşılmıyor.

Buna yol açabilecek birkaç neden vardır. Bu, bakmanız gereken şeylerden oluşan bir kontrol listesidir:

  • Digital Asset Links doğrulamasının başarılı olduğundan emin olun.
  • string.xml dosyasındaki JSON dosyasının doğru olup olmadığını kontrol edin.