iOS Universal Links (유니버셜 링크)

2025. 1. 9. 21:57iOS

반응형

iOS에서 유니버설 링크(Universal Links)를 설정하려면 클라이언트와 서버 측 모두 작업이 필요합니다. 아래는 전체적인 플로우와 필요한 작업을 자세히 설명한 것입니다.


1. 유니버설 링크 플로우

  1. 사용자가 링크를 클릭
    • 브라우저, 이메일, 메시지 등에서 링크를 클릭합니다.
  2. iOS 확인
    • iOS는 클릭한 URL이 유니버설 링크로 설정된 앱에 연결된 도메인인지 확인합니다.
  3. 앱 실행
    • 연결된 앱이 설치되어 있으면 앱이 열립니다.
    • 앱이 설치되어 있지 않으면 웹사이트로 이동합니다.
  4. 앱에서 URL 처리
    • 앱이 열리면 URL을 처리하고 적절한 화면을 표시합니다.

2. 클라이언트 측 작업

1) Xcode에서 프로젝트 설정

  • Capabilities 활성화
    1. Xcode에서 프로젝트를 열고 Signing & Capabilities 탭으로 이동합니다.
    2. Associated Domains 항목을 추가합니다.
    3. applinks:<your-domain> 형식으로 도메인을 입력합니다.
      • 예: applinks:example.com 또는 applinks:www.example.com.

2) App Delegate에 URL 처리 구현

  • 유니버설 링크로 앱이 열릴 때 호출되는 메서드를 구현합니다.
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { 
	guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, 
    	let incomingURL = userActivity.webpageURL else { 
        return false 
    } 
    
    // URL을 처리 
    handleIncomingURL(incomingURL) 
    return true 
} 

func handleIncomingURL(_ url: URL) { 
	// URL 경로에 따라 적절한 화면으로 이동 
    if url.path == "/product" { 
    	// 예: 특정 상품 페이지로 이동 
    } else if url.path == "/profile" { 
    	// 예: 프로필 화면으로 이동 
    } 
}

3. 서버 측 작업

1) Apple App Site Association 파일 생성

  • 도메인의 루트에 .well-known/apple-app-site-association 파일을 생성합니다.
  • JSON 형식으로 앱 정보를 포함해야 합니다.

예제 파일

 
{ 
	"applinks": { 
    	"apps": [], 
        "details": [ 
        	{ 
            	"appID": "TEAMID.com.example.app", 
                "paths": [ 
                	"/product/*", 
                    "/profile/*", "*" 
                ] 
            } 
        ] 
    } 
}
  • appID: Apple 개발자 계정의 Team ID와 앱 번들 ID를 결합한 값.
    • 예: TEAMID.com.example.app
  • paths: 유니버설 링크에서 앱으로 연결할 URL 경로.

2) 서버 설정

  • apple-app-site-association 파일을 호스팅하려면 다음 조건을 충족해야 합니다.
    • HTTPS 필수: SSL 인증서를 사용하여 HTTPS로 제공.
    • MIME 타입: application/json 또는 application/pkcs7-mime으로 제공.

Apache 설정 예시

<IfModule mod_rewrite.c> 
	RewriteEngine On 
    RewriteCond %{REQUEST_URI} ^/.well-known/apple-app-site-association$ 
    RewriteRule .* - [L] 
</IfModule>

 

NGINX 설정 예시

 
location /.well-known/apple-app-site-association { 
	root /var/www/html; 
	default_type application/json; 
}

4. 테스트 및 검증

1) 링크 테스트

  • Safari에서 도메인 링크를 클릭해 앱이 열리는지 확인합니다.
  • 앱이 열리지 않을 경우, 디바이스의 Settings > Developer > Universal Links에서 설정 확인.

2) apple-app-site-association 파일 검증


추가 팁

  1. 딥링크 분석: 유니버설 링크에서 받은 데이터를 Firebase Dynamic Links, AppsFlyer 등과 연동하여 분석.
  2. 웹사이트 fallback: 앱이 설치되지 않았을 때 사용자 경험을 위해 웹사이트에서 적절한 페이지를 제공.
  3. 다중 앱 지원: 여러 앱에서 동일한 도메인을 사용하는 경우, apple-app-site-association 파일에 각 앱의 정보를 추가.
반응형

'iOS' 카테고리의 다른 글

[RxSwift] zip, combineLate  (1) 2025.01.09
[RxSwift] Button rx.tap  (2) 2025.01.09
구글로그인 해제  (0) 2025.01.09
애플로그인 계정 연동해제  (0) 2025.01.09
radix : 진수변환  (0) 2024.08.09