우선 com.android.vending.INSTALL_REFERRER 가 정확히 타는 시점이 궁금합니다.
"market://details?id=com.apps.test&referrer=hello"
를 누른 뒤
1. 구글스토어에서 설치 버튼을 눌렀을때
2. 구글스토어에서 설치 버튼을 누른뒤 앱을 실행했을때
둘다 referrer 값을 가져왔음 좋겠는데 현재 제 앱에서는 1번에서만 referrer값을 가져오더라구요 ...
정작 필요한건 2 번이거든요 .
구현하고자하는 기능은
1. A가 앱 다운로드 링크를 공유 "market://details?id=com.apps.test&referrer=A의고유번호"
2. B가 해당 링크를 통해 구글스토어에서 설치 후 실행 시 referrer값이 있으면 첫화면이 Main 페이지가 아닌 회원가입 페이지로 이동
3. B가 회원가입이 완료되면 referrer값으로 전달된 A의 고유번호로 캐쉬 충전
을 구현하고자 합니다. 그래서 com.android.vending.INSTALL_REFERRER 를 사용하려고 시도해보는데 도저히 1번에 2번으로 referrer 값을 넘기는 법을 모르겠어요.
[AndroidMainifest.xml]
<receiver android:exported= "true" android:name= "com.test.app.InstallReferrerReceiver" >
<intent-filter>
<action android:name= "com.android.vending.INSTALL_REFERRER" />
<action android:name= "com.google.android.c2dm.intent.RECEIVE" />
<action android:name= "com.google.android.c2dm.intent.REGISTRATION" />
</intent-filter>
</receiver>
|
[InstallReferrerReciver.java]
: 받은 referrer이 있으면 intent 를 이용해 MainActivity.class에 넘겨주려고 했습니다.
public class InstallReferrerReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent mainIntent = new Intent(context, MainActivity. class );
Log.d( "log..." , "onReceive진입" );
String referrer = intent.getStringExtra( "referrer" );
if ( referrer == null || referrer.length() == 0 ) {
Log.d( "referrer" , "referrer.length() === 0 " );
} else {
Log.d( "referrer" , referrer);
mainIntent.putExtra( "referrer" , referrer);
mainIntent.addFlags(mainIntent.FLAG_ACTIVITY_NEW_TASK);
}
}
}
|
[MainAcivity] 에서 intent에 저장되어있는 값에 따라 분기를 태워 첫 페이지를 보여주려고 합니다.
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
Intent current = getIntent();
Log.d( "log..." , "Main진입" );
if (current != null && current.getStringExtra( "url" ) != null ) {
loadUrl(current.getStringExtra( "url" ));
notificationNo = current.getStringExtra( "notificationNo" );
} else if (current != null && current.getStringExtra( "referrer" ) != null ){
} else {
}
}
|
결과적으로는 앱설치시 referrer에 들어온 값을 앱이 실행될때 Main에 넘겨주기만 하면되는데 ..
이게 참 어렵네요 ...
어떻게하면 좋을까요 ?
---- 위에 소스를 실행해서 공유링크를 통해 구글스토어에 접속 및 설치후 실행했을때 찍히는 로그 순서입니다 ----
07-18 01:06:32.689 6092-6092/? D/log...: Main진입
07-18 01:06:33.510 6092-6092/? D/log...: onRecive진입
07-18 01:06:33.510 6092-6092/? D/referrer: A의고유번호
07-18 01:06:34.982 6092-6092/com.test.app D/log...: onRecive진입
07-18 01:06:34.982 6092-6092/com.test.app D/referrer: referrer.length === 0