iOS

[iOS / Swift] 테스트앱에서 deferred deep link 테스트하기 (Adjust)

evan.k 2023. 2. 14. 11:44

최근에 Adjust tracking sdk를 설치하고 딥링크 기능을 추가했다.

 

안드로이드의 경우 앱 설치 및 미설치 유저들의 deeplink가 정상 작동했지만 iOS의 경우 앱 미설치 유저의 설치 후 액션이 작동하지 않았다.

 

원인을 찾기 위해 디버깅을 해야 하는데 앱 설치 후 액션을 어떻게 디버깅해야 하는지 또 코드를 수정하면서 수정된 버전의 에서 딥링크가 작동하는지를 어떻게 테스트해야 하는지 감이 잘 오지 않았다.

 

Adjust 공식 문서에서 확인해보니 iOS에서 디퍼드 딥링크를 처리하기 위해 코드 추가가 필요했다.

 

Adjust Help Center

Adjust Help Center

help.adjust.com

 

코드 수정

AppDelegate 에서 adjust 콜백을 추가하고 deeplink action을 수정해 줬다.

여기서 deeplink URL은 my_scheme://host/path? 식으로 넘어오며 쓰임에 맞게 액션을 추가하면 된다.

func adjustDeeplinkResponse(_ deeplink: URL?) -> Bool {    
    let deeplinkUrl = "/\(deeplink!.host ?? "")\(deeplink!.path)"

    NotificationCenter.default.post(name: Notification.Name("getDeepLink"), object: deeplinkUrl)

    return true
}

ViewController에서는 딥링크 url을 처리할 수 있는 옵저버를 추가했다.

NotificationCenter.default.addObserver(self,
   selector: #selector(getLinkedPage(notification:)),
   name: Notification.Name(rawValue: "getDeepLink"),
   object: nil)

@objc func getLinkedPage(notification: Notification) {
    if let path = notification.object as? String {
        webView.load(URLRequest(url: URL(string: hostUrl + path + appParameter)!))
    }
}

지금 개발 중인 앱의 웹앱의 구조이기 때문에 받아온 url을 webView에 로드하도록 만들었다.

 

디퍼드 딥링크 테스트

테스트 방법은 조금 번거롭긴 하지만 간단하다.

  1. iPhone 설정 -> 일반 -> iPhone 저장 공간 -> 앱 삭제
  2. 딥링크 url 접속 (정상적인 url이라면 앱스토어로 이동됨)
  3. 앱스토어가 아닌 테스트앱(ipa) 설치 (수정된 코드는 앱스토어에 반영되어 있지 않기 때문)
  4. 앱 시작 후 딥링크가 정상 작동하는지 확인

딥링크 관련 정보를 adjust 서버에 보관하기 때문에 app store에서 설치하지 않고 테스트앱을 바로 설치한 후 앱을 시작해도 정상적으로 디버깅 및 테스트가 가능했다.

 

위의 과정을 진행하여 테스트한 결과 앱 미설치 유저들의 딥링크도 정상적으로 진행되었다.

생각을 많이 했지만 사실 그리 복잡하지도 생각할게 많지도 않은 테스트였다.