신뢰할 수 있는 웹 활동에서 웹 공유 타겟 사용

웹 공유 타겟을 사용하면 PWA에서 컴퓨터에 설치된 다른 애플리케이션에서 공유 콘텐츠를 수신할 수 있습니다. 있습니다. 이 기능은 예를 들어 이미지 편집기와 같은 애플리케이션에서 카메라 앱이나 소셜 네트워크에서 이미지를 수신하여 이미지나 동영상을 받아 공유할 수 있습니다.

이제 Chrome 86부터 Web Share Target을 신뢰할 수 있는 웹 활동. PWA는 즉시 사용할 수 있지만, 이를 위해서는 몇 가지 변경이 필요합니다. 할 수 있습니다.

이 도움말은 개발자가 신뢰할 수 있는 웹 활동에 익숙하다고 가정합니다. 초보자 통합 가이드를 통해 기술을 시작할 수 있습니다.

이와 함께 PWA의 웹 공유 타겟 구현에 관한 자세한 설명은 외부에서 확인할 수 있습니다. 개발자는 이 도움말에서 자세한 내용을 확인할 수 있습니다.

https://scrapbook-pwa.web.app/의 데모 애플리케이션이 PWA로 사용됩니다. 문서의 소스 코드는 GitHub에서 사용할 수 있으며, Android 애플리케이션은 기본 신뢰할 수 있는 웹 활동 데모를 참조하세요.

Android 앱에 웹 공유 대상 추가

기존 신뢰할 수 있는 웹 활동 기반 애플리케이션을 수정하여 웹 공유를 구현하기 위해 타겟, 서로 다른 세 개의 파일을 수정해야 합니다.

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 내부의 문자열에 두 가지 중요한 메모가 있습니다.

  1. 작업 속성의 값은 출처를 포함한 전체 URL이어야 합니다.
  2. 큰따옴표는 이스케이프 처리해야 하므로 각 "\"이 됩니다.

https://scrapbook-pwa.web.app/manifest.jsonshare_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 활동 태그에 두 가지 새로운 항목을 추가해야 합니다. - strings.xml에 정의된 JSON을 참조하는 meta-data 태그. - 애플리케이션이 다른 MIME 유형에 처리할 수 있는 MIME 유형을 선언하는 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-typedata 요소를 추가해야 합니다. (share_target JSON에서)

결론

Web Share Target 통합을 사용하면 신뢰할 수 있는 웹 활동 내의 PWA가 더 심층적으로 Android 기기에 설치된 다른 애플리케이션과 통합되어 있습니다.

위의 단계에서 설명한 것처럼 android-browser-helper를 통해 신뢰할 수 있는 웹 활동을 사용하는 기존 Android 앱이 더 간단해집니다.

PWA에서 API를 사용하는 방법 및 Web Share API를 참고하세요.

문제 해결

다른 애플리케이션에서 파일을 공유하려고 할 때 내 애플리케이션이 옵션으로 표시되지 않습니다.

애플리케이션이 옵션으로 표시되지 않으면 intent-filter이 오답입니다. intent-filter 마크업을 다시 확인하고 올바른 작업이 포함되어 있는지 확인합니다. 애플리케이션에서 처리하는 mime-types입니다.

애플리케이션이 옵션으로 표시되면 PWA가 시작되지만 데이터는 공유되지 않습니다.

이러한 문제는 몇 가지 원인에 의해 발생할 수 있습니다. 다음은 살펴봐야 할 체크리스트입니다.

  • 디지털 애셋 링크 유효성 검사에 성공했는지 확인합니다.
  • strings.xml 내의 JSON이 올바른지 확인하세요.