이 문서는 안드로이드 딥 링크 기술 가이드 4부 문서 중 4부입니다. 이전 포스트는 URI 스킴과 크롬 인텐트, 앱링크를 다루었습니다.
딥 링크에 구글 플레이 리퍼러 사용
딥 링크 기술 하나는 앱이 설치되지 않은 경우의 틈새시장을 위한 것입니다. 개발자로서 구글 플레이 스토어를 통해 맞춤 매개 변수를 전달할 수 있으며 사용자가 앱을 처음 열면 앱에서 이 매개 변수가 수신됩니다. 이 기술은 이 매개 변수를 잘 다루면 사용자의 유입 경로를 알 수 있으며 설치 절차를 통해 맞춤 랜딩 페이지나 딥 링크를 만들 수 있게 해 줍니다.
안드로이드 설치 리퍼러 요구사항
- 앱은 설치되어있지 않아야 합니다
- 플레이 스토어 URL을 구성해야 하므로 크롬 인텐트와 같이 사용할 수 없습니다
안드로이드 설치 리퍼러 설정
안드로이드 설치 리퍼러를 수신하도록 앱을 구성하려면, 앱이 com.android.vending.INSTALL_REFERRER 브로드캐스트를 수신하도록 등록해야 합니다. 매니페스트 파일의 <application /> 태그 사이에 다음 내용을 삽입하십시오.
<receiver android:name=“io.branch.testbed.InstallListener“ android:exported=“true“> | |
<intent-filter> | |
<action android:name=“com.android.vending.INSTALL_REFERRER“ /> | |
</intent-filter> | |
</receiver> |
이 경우에, 브로드캐스트를 수신할 맞춤 클래스 명칭은 io.branch.testbed.InstallListener입니다. 이는 BroadcastReceiver의 간단한 서브클래스입니다. 이 클래스에 필요한 상용 코드는 다음과 같습니다:
public class InstallListener extends BroadcastReceiver { | |
@Override | |
public void onReceive(Context context, Intent intent) { | |
// called in the install referrer broadcast case | |
} | |
} |
앱에서 다루기
일단 위에서 언급한 것처럼 BroadcastReceiver를 설정하고 나면 인텐트를 다루기는 쉽습니다! 이는 URI 스킴을처리하는 메커니즘과 매우 유사하지만 이는 onReceive 콜 내부에서 일어납니다. 사례:
@Override | |
public void onReceive(Context context, Intent intent) { | |
String rawReferrerString = intent.getStringExtra(“referrer”); | |
if(rawReferrerString != null) { | |
Log.i(“MyApp”, “Received the following intent “ + rawReferrerString); | |
} | |
} |
구글 플레이 리퍼러의 실용적인 사용
이 기술을 올바르게 사용하려면 사용자와 상호 작용하는 구글 플레이 스토어 링크를 제어할 수 있어야 합니다. 앱 패키지 명칭이 io.branch.testbed라고 가정하면, 구글 플레이가 다음 두 가지로 열릴 수 있습니다:
- market://details?id=io.branch.testbed
- https://play.google.com/store/apps/details?id=io.branch.testbed
리퍼러를 추가하려면 이 링크들에 &referrer=specialparam만 추가하면 됩니다. 이를 위해서는 링크 자체를 제어해야 합니다.
참고: 크롬 인텐트 섹션을 읽으며 알아챘을지 모르지만, 플레이 스토어 링크를 제어할 수 없는데 이는 이 방법을 활용할 수 없음을 뜻합니다.
리퍼러 매개 변수를 제어하기 위해서는 URI 메소드에 설명된 클라이언트 측 JS 내에 이를 포함하는 것을 추천합니다. 앱을 열려고 시도한 후에 실행되는 마켓 링크 대체 기능에 리퍼러가 어떻게 추가되는지 보여주는 코드 스니펫을 소개합니다.
var fallbackFunction = function() { | |
window.location.replace(‘market://details?id=io.branch.testbed&referrer=specialparam’); | |
}; | |
var addIFrame = function() { | |
var iframe = document.createElement(“iframe”); | |
iframe.style.border = “none”; | |
iframe.style.width = “1px”; | |
iframe.style.height = “1px”; | |
iframe.src = ‘your_uri_scheme://’; | |
document.body.appendChild(iframe); | |
}; | |
addIFrame(); | |
setTimeout(fallbackFunction, 250); |
결론
구글 딥 링크는 믿을 수 없을 만큼 복잡하며 곳곳에 경계 조건이 널려 있습니다. Branch 툴을 사용하면 링크가 어디서나 작동한다고 확신가지실 수 있습니다.