Android 앱 링크 추가하기

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

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

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

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

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

인텐트 필터 추가하기

Android 스튜디오의 App Links Assistant를 사용하면 manifest에서 인텐트 필터를 만들고 웹사이트의 기존 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를 클릭합니다.
  4. App Links Assistant는 AndroidManifest.xml 파일에 대한 URL 매핑에 기반하여 인텐트 필터를 추가하며, 이 필터는 Preview 입력란에서 강조표시됩니다. 변경하려면 Open AndroidManifest.xml을 클릭하여 인텐트 필터를 수정합니다. 자세한 내용은 Android의 인텐트 필터에서 알아보세요.

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

  5. URL 매핑이 제대로 작동하는지 확인하려면 Check URL Mapping 입력란에 URL을 입력하고 Check Mapping을 클릭합니다. URL이 올바로 작동하는 경우 입력한 URL이 선택 활동에 매핑된다는 성공 메시지가 표시됩니다.

들어오는 링크 처리하기

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

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

App Links Assistant는 아래 예와 비슷하게 활동의 자바 파일에 코드를 추가합니다. 참고로 현재 App Links Assistant는 Kotlin을 지원하지 않으므로 이 코드를 수동으로 추가해야 합니다.

Kotlin

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

        val appLinkIntent = intent
        val appLinkAction = appLinkIntent.action
        val appLinkData = appLinkIntent.data

    }
    

자바

    // 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)
                        }
            }
        }
    }
    

자바

    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에서 사이트와 앱을 연결할 수 있습니다.

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

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

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

  1. Site domainApplication ID를 입력합니다.
  2. 디지털 애셋 링크 파일에 비밀번호 대용 Smart Lock 지원 기능을 포함하려면 Support sharing credentials between the app and the website를 선택하고 사이트의 로그인 URL을 입력합니다. 그러면 앱과 웹사이트가 로그인 사용자 인증 정보를 공유한다고 선언하는 문자열(delegate_permission/common.get_login_creds)이 디지털 애셋 링크 파일에 추가됩니다. 앱의 비밀번호 대용 Smart Lock 지원에 관해 자세히 알아보세요.
  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 프로토콜을 통해 디지털 애셋 링크 파일을 확인합니다. assetlinks.json 파일은 앱의 인텐트 필터가 https를 포함하는지 여부에 관계없이 HTTPS 연결을 통해 액세스할 수 있어야 합니다.

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

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

앱 링크 테스트하기

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

  1. App Links Assistant에서 Test App Links를 클릭합니다.
  2. URL 입력란에 테스트할 URL을 입력합니다(예: http://recipe-app.com/recipe/grilled-potato-salad).
  3. 그림 3. 테스트 중인 URL이 앱의 활동에 매핑되면 App Links Assistant에 성공 메시지가 표시되고 앱 내의 지정된 콘텐츠가 열립니다.

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

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

Firebase 앱 색인 생성 추가하기

앱에 Android 앱 링크를 추가한 후에 Firebase 앱 색인 생성 코드를 활동에 추가하면 자동 완성 제안, 앱 내 검색 등을 포함한 추가 Google 검색 기능을 통해 사용자가 재참여하도록 만들 수 있습니다. Firebase 앱 색인 생성에 대한 자세한 내용은 Firebase 앱 색인 생성 도움말을 참조하세요.

앱에 Firebase 앱 색인 생성을 추가하려면 Android 스튜디오의 Firebase Assistant를 사용하고 App Indexing 섹션을 확장하여 단계별 안내를 따르세요.