최근에 Adjust tracking sdk를 설치하고 딥링크 기능을 추가했다.
안드로이드의 경우 앱 설치 및 미설치 유저들의 deeplink가 정상 작동했지만 iOS의 경우 앱 미설치 유저의 설치 후 액션이 작동하지 않았다.
원인을 찾기 위해 디버깅을 해야 하는데 앱 설치 후 액션을 어떻게 디버깅해야 하는지 또 코드를 수정하면서 수정된 버전의 에서 딥링크가 작동하는지를 어떻게 테스트해야 하는지 감이 잘 오지 않았다.
Adjust 공식 문서에서 확인해보니 iOS에서 디퍼드 딥링크를 처리하기 위해 코드 추가가 필요했다.
코드 수정
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에 로드하도록 만들었다.
디퍼드 딥링크 테스트
테스트 방법은 조금 번거롭긴 하지만 간단하다.
- iPhone 설정 -> 일반 -> iPhone 저장 공간 -> 앱 삭제
- 딥링크 url 접속 (정상적인 url이라면 앱스토어로 이동됨)
- 앱스토어가 아닌 테스트앱(ipa) 설치 (수정된 코드는 앱스토어에 반영되어 있지 않기 때문)
- 앱 시작 후 딥링크가 정상 작동하는지 확인
딥링크 관련 정보를 adjust 서버에 보관하기 때문에 app store에서 설치하지 않고 테스트앱을 바로 설치한 후 앱을 시작해도 정상적으로 디버깅 및 테스트가 가능했다.
위의 과정을 진행하여 테스트한 결과 앱 미설치 유저들의 딥링크도 정상적으로 진행되었다.
생각을 많이 했지만 사실 그리 복잡하지도 생각할게 많지도 않은 테스트였다.
'iOS' 카테고리의 다른 글
[iOS / Swift] Fastlane으로 테스트 앱 자동 배포(CD) 구축하기 (2) (0) | 2023.02.13 |
---|---|
[iOS / Swift] Fastlane으로 테스트 앱 자동 배포(CD) 구축하기 (1) (1) | 2023.02.10 |
[iOS / Swift] Firebase Remote Config로 강제/선택 업데이트 팝업 관리하기 (0) | 2023.02.03 |