쿼리 매개변수를 사용하여 신뢰할 수 있는 웹 액티비티에 정보 전달

애플리케이션에서 신뢰할 수 있는 웹 활동을 사용할 때 개발자는 애플리케이션의 네이티브 부분에서 프로그레시브 웹 앱 (PWA)으로 정보를 전달해야 할 수 있습니다.

이를 위한 일반적인 사용 사례는 맞춤 애널리틱스 세분화를 구현하여 신뢰할 수 있는 웹 활동에서 시작된 설치 및 세션을 측정하는 것입니다. 실행 URL에 쿼리 매개변수를 추가하여 이를 구현할 수 있습니다.

시작 URL 수정

PWA로 전달되는 매개변수가 사용자와 실행 시 동일하게 유지되는 경우 매개변수를 실행 URL에 직접 추가할 수 있습니다. 개발자가 신뢰할 수 있는 웹 활동에서 생성된 탐색 세션 수를 측정하려는 경우를 예로 들 수 있습니다.

버블랩 사용

Bubblewrap은 개발자가 신뢰할 수 있는 웹 활동을 사용하여 기존 PWA를 시작하는 Android 애플리케이션용 프로젝트를 만드는 데 도움이 되도록 제작된 도구입니다. 라이브러리명령줄 인터페이스 (CLI)가 모두 포함되어 있습니다.

새 프로젝트 만들기

버블랩 CLI를 사용할 때는 프로젝트가 init 명령어로 초기화되고 매개변수로 제공된 웹 매니페스트에서 기본값을 만듭니다.

bubblewrap init --manifest https://material.money/manifest.json

마법사에서 웹 매니페스트의 start_url을 기본값으로 사용하고 사용자에게 값 확인을 요청하므로 개발자는 프로그레시브 웹 앱을 시작하는 데 사용되는 URL에 매개변수를 추가할 수 있습니다.

Bubblewrap CLI 출력 표시

기존 프로젝트 수정

Bubblewrap에서 프로젝트를 생성하면 특정 프로젝트의 정보가 프로젝트 폴더의 twa-manifest.json 파일에 저장됩니다. 기존 프로젝트의 시작 URL을 수정하려면 개발자가 파일을 수정해야 합니다.

{
  ...
  "startUrl": "/?utm_source=trusted-web-activity",
  ...
}

그런 다음 프로젝트 파일을 다시 생성하고 새 시작 URL을 적용합니다.

bubblewrap update

Android 스튜디오 사용

Android 스튜디오와 기본 LauncherActivity를 사용할 때 startUrl은 AndroidManifest.xml 내에 메타 태그로 정의되며, 신뢰할 수 있는 웹 활동을 실행하는 데 사용되는 URL을 수정하여 변경할 수 있습니다.

<activity android:name="com.google.androidbrowserhelper.trusted.LauncherActivity"
    android:label="@string/app_name">
    ...
    <meta-data android:name="android.support.customtabs.trusted.DEFAULT_URL"
        android:value="https://svgomg.firebaseapp.com/?utm_source=trusted-web-activity" />
    ...
</activity>

동적으로 시작 URL 수정

개발자가 사용자 또는 세션 간에 변경되는 매개변수를 만드는 것이 좋은 경우도 있습니다. 대부분의 경우 프로그레시브 웹 앱에 전달하기 위해 애플리케이션의 Android 측에서 세부정보를 수집합니다.

1단계: 맞춤 LauncherActivity 만들기

public class CustomQueryStringLauncherActivity extends LauncherActivity {
    private String getDynamicParameterValue() {
        return String.valueOf((int)(Math.random() * 1000));
    }

    @Override
    protected Uri getLaunchingUrl() {
        // Get the original launch Url.
        Uri uri = super.getLaunchingUrl();

        // Get the value we want to use for the parameter value
        String customParameterValue = getDynamicParameterValue();

        // Append the extra parameter to the launch Url
        return uri
                .buildUpon()
                .appendQueryParameter("my_parameter", customParameterValue)
                .build();
    }
}

2단계: 맞춤 LauncherActivity를 사용하도록 AndroidManifest.xml 수정

<activity android:name="com.myapp.CustomQueryStringLauncherActivity"
    android:label="@string/app_name">
    ...
    <meta-data android:name="android.support.customtabs.trusted.DEFAULT_URL"
        android:value="https://squoosh.app/?utm_source=trusted-web-activity" />
    ...
</activity>

결론

쿼리 매개변수를 사용하여 네이티브 부분에서 웹 부분으로 정보를 전달할 수 있습니다. 매개변수가 쿼리 문자열에 추가되면 페이지에서 실행 중인 스크립트에 액세스할 수 있으며, 사용자가 다른 페이지로 이동하거나 개발자가 공유 작업을 구현할 때 추천의 일부가 될 수도 있습니다.

개발자는 이러한 영향을 알고 있어야 하며 link rel=noreferrer를 사용하거나 page Location API를 사용해 URL을 정리하여 영향을 완화할 수 있습니다.

현재 신뢰할 수 있는 웹 활동 프로토콜은 웹 부분이 호출된 후 애플리케이션의 기본 부분과 메시지를 교환하는 메커니즘을 제공하지 않습니다.

기존 또는 향후 Web Platform API를 통해 개발자에게 필요한 대부분의 사용 사례를 지원할 수 있을 것입니다. 새로운 웹 API나 곧 출시될 웹 API를 살펴보려면 새로운 기능 상태 페이지를 확인하세요.