# 링크로 앱 열기

앱이 설치되어 있으면 휴대폰은 링크를 브라우저 대신 앱에서 바로 열 수 있습니다. iOS에서는 **Universal Links**, Android에서는 **App Links**라고 부릅니다. 둘 다 같은 방식입니다. 휴대폰이 링크 호스트에서 앱 목록이 담긴 작은 파일을 가져오고, 앱은 그 호스트를 처리한다고 선언합니다. Mocco가 프로젝트의 두 호스트에서 이 파일을 대신 제공합니다. Mocco에 정보 몇 가지를 입력하고 앱에 몇 줄을 추가하면 됩니다.

앱이 설치되지 않은 사람은 지금처럼 링크가 보내는 곳, 즉 스토어 페이지나 지정한 웹 페이지로 이동합니다([딥링크 개요](https://www.mocco.club/docs/ko/articles/xz8btr-overview) 참고).

## 1. Mocco에 앱 정보 입력하기

**딥링크 → 설정**(Settings)에서 프로젝트의 iOS·Android 앱마다 카드가 있습니다. 소유자와 관리자만 바꿀 수 있습니다.

- **iOS:** **Apple Team ID**를 입력합니다. developer.apple.com/account의 **Membership details**에 있는 영문자·숫자 10자리입니다. 번들 ID는 프로젝트 **앱**(Apps)에서 가져옵니다.
- **Android:** **서명 인증서 SHA-256 지문**을 한 줄에 하나씩 입력합니다. 패키지 이름은 프로젝트 **앱**(Apps)의 애플리케이션 ID를 씁니다.

카드마다 저장합니다. 저장하면 호스트의 파일이 바로 바뀝니다.

### Android 지문 찾기

Google Play가 앱에 서명한다면(Play 앱 서명, 새 앱의 기본값) 업로드 키가 아니라 Google의 **앱 서명 키** 지문을 씁니다. Play Console에서 앱을 열고 **테스트 및 출시 → 앱 무결성 → Play 앱 서명**으로 가서 **앱 서명 키 인증서** 아래의 **SHA-256 인증서 지문**을 복사합니다. 내부 테스트 빌드처럼 직접 서명한 빌드도 설치한다면 업로드 키의 지문도 추가합니다.

## 2. 앱에 줄 추가하기

**링크로 앱 열기**(Open the app from links) 아래에 두 호스트용 줄이 복사할 수 있게 나와 있습니다.

- **iOS:** **Associated Domains entitlement**입니다(호스트마다 `applinks:<호스트>`). Xcode의 **Signing & Capabilities → Associated Domains**에 추가합니다. Expo를 쓴다면 **Expo app.json (iOS)** 내용을 `ios.associatedDomains`에 복사합니다.
- **Android:** `android:autoVerify="true"`와 두 호스트가 들어간 **AndroidManifest.xml intent filter**입니다. Expo를 쓴다면 **Expo app.json (Android)** 내용을 `android.intentFilters`에 복사합니다.

그다음 앱을 다시 빌드해 설치합니다. 휴대폰은 앱을 설치할 때 이 줄을 읽습니다.

## 3. 파일 확인하기

**지금 확인**(Check now)을 누릅니다. Mocco가 Apple과 Google이 가져가는 방식 그대로 각 호스트에서 두 파일을 가져와 문제가 있으면 알려 줍니다. 응답하지 않는 호스트, 리디렉션, 잘못된 콘텐츠 유형, 앱이나 지문이 빠진 파일 같은 문제입니다. 1분에 10번까지 확인할 수 있습니다.

**파일 내용 보기**(Show the files)를 누르면 각 호스트가 제공하는 내용을 그대로 볼 수 있습니다. 파일 주소도 복사할 수 있습니다.

## 4. 휴대폰에서 테스트하기

- **iOS:** Apple은 자체 캐시를 거쳐 파일을 가져가므로 바뀐 내용을 보기까지 하루쯤 걸릴 수 있습니다. Apple의 사본이 늦으면 **지금 확인**이 알려 줍니다. 더 빨리 테스트하려면 개발 빌드의 entitlement에 `?mode=developer`를 붙이고(`applinks:<호스트>?mode=developer`) 기기의 **설정 → 개발자 → Associated Domains Development**를 켭니다. 그다음 메모나 메시지 앱에서 링크를 엽니다. Safari 주소창에 직접 입력한 링크는 Safari에서 열립니다.
- **Android:** 앱을 설치한 뒤 `adb shell pm get-app-links <패키지 이름>`을 실행해 두 호스트가 `verified`인지 확인합니다. 메시지 같은 다른 앱에서 링크를 엽니다.

## 브라우저에 남는 페이지

호스트에 있는 Mocco 자체 페이지(예: **이 링크 신고하기** 양식)는 두 플랫폼 모두 항상 브라우저에서 열립니다.
