Android App Links 추가

Android App Links는 Android 앱의 특정 콘텐츠로 사용자를 바로 안내하는 HTTP URL입니다. Android App Links는 앱 트래픽을 증대하고, 가장 많이 사용되는 앱 콘텐츠를 파악하는 데 도움이 되며, 사용자가 설치된 앱에서 더 쉽게 콘텐츠를 공유하고 찾을 수 있게 합니다.

Android App Links에 지원을 추가하려면 다음 단계를 따르세요.

  1. 매니페스트에서 인텐트 필터를 만듭니다.
  2. 수신 링크를 처리하는 코드를 앱의 활동에 추가합니다.
  3. 디지털 애셋 링크를 사용하여 앱과 웹사이트를 연결합니다.

Android 스튜디오의 App Links Assistant를 사용하면 아래의 설명과 같이 단계별 마법사를 통해 절차를 간소화할 수 있습니다.

앱 링크의 작동 방식 및 이점에 관한 자세한 내용은 Android App Links 처리를 참고하세요.

인텐트 필터 추가하기

Android 스튜디오의 App Links Assistant를 사용하면 매니페스트에서 인텐트 필터를 만들고 웹사이트의 기존 URL을 앱의 활동에 매핑할 수 있습니다. 또한 상응하는 각 활동에서 인텐트를 처리할 템플릿 코드도 추가할 수 있습니다.

인텐트 필터와 URL 처리를 추가하려면 다음 단계를 따르세요.

  1. Tools > App Links Assistant를 선택합니다.
  2. Open URL Mapping Editor를 클릭한 후 URL Mapping 목록 하단에 있는 Add 를 클릭하여 새 URL 매핑을 추가합니다.
  3. 새 URL 매핑에 관한 세부정보를 추가합니다.

    App Links Assistant에서 안내하는 기본적인 URL 매핑

    그림 1. 사이트의 링크 구조에 관한 기본 세부정보를 추가하여 앱의 활동에 URL을 매핑합니다.

    1. Host 입력란에 웹사이트 URL을 입력합니다.
    2. 매핑할 URL의 path, pathPrefix 또는 pathPattern을 추가합니다.

      예를 들어 요리법을 공유하는 앱이 있고 동일한 활동 내에서 모든 요리법을 사용할 수 있으며, 상응하는 웹사이트에서 모든 요리법이 동일한 /recipe 디렉터리에 있는 경우 pathPrefix를 사용하고 /recipe를 입력합니다. 이렇게 하면 다음 단계에서 선택하는 활동에 URL http://www.recipe-app.com/recipe/grilled-potato-salad가 매핑됩니다.

    3. URL을 통해 사용자를 안내할 Activity를 선택합니다.
    4. OK를 클릭합니다.

    'URL Mapping Editor' 창이 나타납니다. App Links Assistant는 AndroidManifest.xml 파일의 URL의 매핑에 기반하여 인텐트 필터를 추가하며 Preview 입력란에서 변경사항을 강조 표시합니다. 변경하려면 Open AndroidManifest.xml을 클릭하여 인텐트 필터를 수정합니다. 자세한 내용은 수신 링크의 인텐트 필터를 참고하세요.

    기본 App Links Assistant 도구 창에도 AndroidManifest.xml 파일의 모든 기존 딥 링크가 표시되며, 이를 통해 Fix All Manifest Issues를 클릭하여 구성 오류를 빠르게 수정할 수 있습니다.

    App Links Assistant를 사용하면 매니페스트 구성 오류를 수정할 수 있습니다.

    참고: 앱을 업데이트하지 않고도 향후 링크를 지원하려면 추가하려는 URL을 지원하는 URL 매핑을 정의합니다. 또한 앱 홈 화면의 URL을 포함하여 검색결과에 포함되도록 합니다.

  4. URL 매핑이 제대로 작동하는지 확인하려면 Check URL Mapping 입력란에 URL을 입력합니다.

    URL이 올바로 작동하는 경우 입력한 URL이 개발자가 선택한 활동에 매핑된다는 성공 메시지가 표시됩니다.

수신 링크 처리하기

URL 매핑이 올바로 작동하는지 확인하고 나면 만든 인텐트를 처리하는 로직을 추가합니다.

  1. App Links Assistant에서 Select Activity를 클릭합니다.
  2. 목록에서 활동을 선택하고 Insert Code를 클릭합니다.

App Links Assistant는 아래 예와 비슷하게 활동에 코드를 추가합니다.

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    ...
    // ATTENTION: This was auto-generated to handle app links.
    val appLinkIntent: Intent = intent
    val appLinkAction: String? = appLinkIntent.action
    val appLinkData: Uri? = appLinkIntent.data
    ...
}

Java

@Override
void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    // ATTENTION: This was auto-generated to handle app links.
    Intent appLinkIntent = getIntent();
    String appLinkAction = appLinkIntent.getAction();
    Uri appLinkData = appLinkIntent.getData();
    ...
}

이 코드는 그 자체로 완전하지 않습니다. 따라서 appLinkData에서 URI를 바탕으로 상응하는 콘텐츠를 표시하는 등의 조치를 취해야 합니다. 예를 들어 요리법을 공유하는 앱의 경우 코드는 다음 샘플과 같습니다.

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    ...
    handleIntent(intent)
}

override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)
    handleIntent(intent)
}

private fun handleIntent(intent: Intent) {
    val appLinkAction = intent.action
    val appLinkData: Uri? = intent.data
    if (Intent.ACTION_VIEW == appLinkAction) {
        appLinkData?.lastPathSegment?.also { recipeId ->
            Uri.parse("content://com.recipe_app/recipe/")
                    .buildUpon()
                    .appendPath(recipeId)
                    .build().also { appData ->
                        showRecipe(appData)
                    }
        }
    }
}

Java

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  ...
  handleIntent(getIntent());
}

protected void onNewIntent(Intent intent) {
  super.onNewIntent(intent);
  handleIntent(intent);
}

private void handleIntent(Intent intent) {
    String appLinkAction = intent.getAction();
    Uri appLinkData = intent.getData();
    if (Intent.ACTION_VIEW.equals(appLinkAction) && appLinkData != null){
        String recipeId = appLinkData.getLastPathSegment();
        Uri appData = Uri.parse("content://com.recipe_app/recipe/").buildUpon()
            .appendPath(recipeId).build();
        showRecipe(appData);
    }
}

앱과 웹사이트 연결하기

앱의 URL 지원을 설정하고 나면 App Links Assistant가 디지털 애셋 링크 파일을 생성합니다. 이 파일을 사용하여 웹사이트를 앱과 연결할 수 있습니다.

디지털 애셋 링크 파일을 사용하는 대신 Search Console에서 사이트와 앱을 연결할 수 있습니다.

앱에 Play 앱 서명을 사용 중인 경우 App Links Assistant에서 생성된 인증서 지문은 일반적으로 사용자 기기의 인증서 지문과 일치하지 않습니다. 이 경우 Play Console 개발자 계정의 Release > Setup > App signing에서 앱에 적합한 디지털 애셋 링크 JSON 스니펫을 확인할 수 있습니다.

App Links Assistant를 사용하여 앱과 웹사이트를 연결하려면 App Links Assistant에서 Open Digital Asset Links File Generator를 클릭하고 다음 단계를 따르세요.

App Links Assistant에서 안내하는 기본적인 URL 매핑

그림 2. 사이트와 앱에 관한 세부정보를 입력하여 디지털 애셋 링크 파일을 생성합니다.

  1. Site domainApplication ID를 입력합니다.
  2. 디지털 애셋 링크 파일에 원탭 로그인 지원 기능을 포함하려면 Support sharing credentials between the app and the website를 선택하고 사이트의 로그인 URL을 입력합니다. 그러면 앱과 웹사이트가 로그인 사용자 인증 정보를 공유한다고 선언하는 문자열(delegate_permission/common.get_login_creds)이 디지털 애셋 링크 파일에 추가됩니다.

  3. signing config를 지정하거나 keystore file을 선택합니다.

    앱의 출시 빌드에 맞는 출시 구성이나 키 저장소 파일을 선택하거나 디버그 빌드에 맞는 디버그 구성이나 키 저장소 파일을 선택해야 합니다. 프로덕션 빌드를 설정하려면 출시 구성을 사용합니다. 빌드를 테스트하려면 디버그 구성을 사용합니다.

  4. Generate Digital Asset Links file을 클릭합니다.
  5. Android 스튜디오에서 파일이 생성되면 Save file을 클릭하여 파일을 다운로드합니다.
  6. 모두가 읽기 액세스 권한을 가질 수 있도록 assetlinks.json 파일을 사이트(https://yoursite/.well-known/assetlinks.json)에 업로드합니다.

    중요: 시스템은 암호화된 HTTPS 프로토콜을 통해 디지털 애셋 링크 파일을 확인합니다. 따라서 앱의 인텐트 필터에 https가 포함되어 있는지에 관계없이 assetlinks.json 파일이 HTTPS 연결을 통해 액세스 가능한지 확인해야 합니다.

  7. Link and Verify를 클릭하여 올바른 위치에 올바른 디지털 애셋 링크 파일을 업로드했는지 확인합니다.

App Link Assistant는 웹사이트에 게시되어야 하는 디지털 애셋 링크 파일의 유효성을 검사할 수 있습니다. 매니페스트 파일에 선언된 각 도메인의 경우 어시스턴트는 웹사이트의 파일을 파싱하고 유효성 검사를 실행한 후 오류 해결 방법에 관한 자세한 설명을 제공합니다.

웹사이트 연결 선언에서 디지털 애셋 링크 파일을 통해 웹사이트와 앱을 연결하는 방법을 자세히 알아보세요.

Android App Links 테스트

링크에서 올바른 활동이 열리는지 확인하려면 다음 단계를 따르세요.

  1. App Links Assistant에서 Test App Links를 클릭합니다.
  2. URL 입력란에 테스트할 URL을 입력합니다(예: http://recipe-app.com/recipe/grilled-potato-salad).
  3. 그림 3. 테스트 중인 URL과 성공 메시지를 보여주는 Test App Links 대화상자

  4. Run Test를 클릭합니다.

URL 매핑이 제대로 설정되지 않았거나 존재하지 않는 경우 Test App Links 대화상자에서 URL 아래에 오류 메시지가 표시됩니다. URL 매핑이 존재하는 경우 Android 스튜디오는 기기나 에뮬레이터에서 확인 대화상자('앱 선택기')를 표시하지 않고 지정된 앱 활동을 시작하며 그림 3처럼 App Link Testing 대화상자에 성공 메시지를 표시합니다.

Android 스튜디오가 앱을 시작하지 못하는 경우 Android 스튜디오의 Run 창에 오류 메시지가 표시됩니다.

App Links Assistant를 통해 Android App Links를 테스트하려면 Android 6.0(API 수준 23) 이상을 실행하는 연결된 기기 또는 가상 기기를 사용할 수 있어야 합니다. 자세한 내용은 기기를 연결하거나 AVD를 생성하는 방법을 참고하세요.