이젠 모든 앱에서 사용하고 있는 딥링크를 내 프로젝트에 적용하게 되었다.
딥링크 생성부터 진행하기에는 너무 공수가 많이 들기 때문에 마케팅팀의 의견으로 Appsflyer를 통해 딥링크(AppLink)개발을 시작했고 여기서는 간단하게 개발이 어떻게 진행 되었는지 회고하려고 한다.
위 이미지는 Appsflyer에서 딥링크 설명을 위해 제공하는 이미지다.
딥링크는 준비가 되었으니 딥링크를 받을 준비를 해야 하는데 지금 딥링크는 앱이 설치 되었을때 작동되는 딥링크가 있고 앱이 설치 되지 않았을때 작동되는 디퍼드 딥링크(deferred deeplink)가 있다. 그리고 안드로이드 앱 링크 뿐만 아니라 URI 스킴(scheme) 또한 준비해야 한다.
이제 해야하는 걸 정리하자면
이 정도로 정리 할 수 있을 것이다.
그럼 우선 Appsflyer 가이드에 따라 앱 매니페스트 파일에서 안드로이드 앱 링크와 URI 스킴을 받을 수 있도록 선언 해주자.
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="myapp.onelink.me"
android:scheme="myapp" />
</intent-filter>
이렇게 host와 스킴을 모두 appsflyer 링크 세팅에 맞게 삽입하면 끝이다.
이제 안드로이드 앱 링크를 사용하기 위해서 SHA256 fingerprint 를 Appsflyer에 등록하면 앱링크 클릭 후 해당 액티비티로 랜딩이 되는걸 확인 할 수 있다.
이제 링크에 삽입한 페이지에 대한 정보를 가이드에 따라 사용하려는 액티비티에 넣어주면 된다.
val conversionListener: AppsFlyerConversionListener =
object : AppsFlyerConversionListener() {
fun onConversionDataSuccess(conversionDataMap: MutableMap<String?, Any?>) {
Log.d(LOG_TAG, "Success")
}
fun onConversionDataFail(errorMessage: String) {
// some Error catch
}
fun onAppOpenAttribution(attributionData: Map<String?, String?>?) {
Log.d(LOG_TAG, "onAppOpenAttribution: This is fake call.")
}
fun onAttributionFailure(errorMessage: String) {
// some Error catch
}
}
이렇게 리스너를 준비해 에러 처리와 성공시 deep_link_value에서 필요한 event_type를 받는다.