Android 마켓에서 앱을 설치 한 후 리퍼러 받기
마켓에서 앱을 설치 한 후 Android에서 실행 한 "com.android.vending.INSTALL_REFERRER"인 텐트를 포착하는 브로드 캐스트 수신기를 등록하려고합니다.
여기에서 세부 정보를 따르고 있습니다. http://code.google.com/mobile/analytics/docs/android/#referrals
그러나 Google Analytics를 사용할 수 없어서 자체 솔루션을 만들었습니다. 내 매니페스트 파일에 다음을 추가했습니다.
<receiver android:name="com.test.Receiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
기본 BroadcastReceiver 클래스를 만들었습니다.
public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
String referrerString = extras.getString("referrer");
Log.w("TEST", "Referrer is: " + referrerString);
}
}
그러나 앱이 설치되면 수신기가 인 텐트를 포착하지 않는 것 같고 (인 텐트가 브로드 캐스트 인 경우?) 로깅 출력이 표시되지 않습니다.
어딘가에서 잘못되거나 앱이 설치 될 때 마켓에서 더 이상 이러한 인 텐트를 시작하지 않습니까?
저처럼 install_referrer가 작동하지 않는 사람과 이러한 기능에 대한 유용한 정보를 찾지 못하는 사람을 돕고 싶습니다.
메모:
- 의도
com.android.vending.INSTALL_REFERRER
는 응용 프로그램이 처음 시작될 때가 아니라 설치 프로세스 중에 포착됩니다. - 리퍼러 ...
extras.getString("referrer")
..는 고정되어 있지만 내용은 http get 구문을 준수하는 모든 문자열 값이 될 수 있습니다 ...referrer=thatsthevalue&thisisnot=xxx
위의 코드는 괜찮습니다. 정보를 완성하기위한 몇 가지 설명입니다.
- Android 매니페스트.
<receiver>
태그는 안에 있어야<application>
태그입니다. - 시장을 연결하는 올바른 URL은 SDK의 유명한 Google 양식의 결과가 아닙니다.
하지만 이건
분명히 모바일 장치에서 링크를 따라 가야하며 완전한 테스트를위한 유일한 방법은 시장에 테스트 응용 프로그램을 게시하는 것입니다.
그리고 최종적이고 개인적인 메모.
이러한 정보가 완전히 생략 된 이유를 이해할 수 없으며 Google에서 자세한 정보를 제공하기를 바랍니다.
조금 늦을 수도 있지만 Google Play를 사용하지 않고 설치 참조자를 테스트 할 수 있습니다. ADB를 사용하면됩니다. :)
adb.exe에서 실행
adb shell
am broadcast -a com.android.vending.INSTALL_REFERRER -n your.package/path.to.your.BroadcastReceiver --es "referrer" "test_referrer=test"
BroadcastReceiver에 로깅 설정이있는 경우 LogCat에 팝업이 표시됩니다.
도움이 되었기를 바랍니다!
이 답변은 Android 3.1 이전에 작성되었을 것입니다. 왜냐하면 하나의 가져 오기 방식으로 변경 되었기 때문입니다.
이제 시스템은 앱을 설치할 때 휴면 상태로 표시합니다. 사용자가 앱을 실행 (또는 위젯 배치)하여 명시 적으로 활성화 할 때까지 INSTALL_REFERRER 또는 기타 브로드 캐스트를 수신하지 않습니다.
좋아, Intent가 시작되지 않은 이유를 찾았습니다. 분명히 여기에 설명 된 것과 동일한 매개 변수 이름을 사용해야합니다. http://code.google.com/mobile/analytics/docs/android/#referrals
내가했던 것처럼 자신의 매개 변수 이름을 사용할 수 없습니다.
Google 문서가 최고가 아니라는 데 동의합니다. 하지만 실제로 마켓 플레이스에 앱을 업로드 한 다음 다운로드 / 설치하는 방식으로 만 실행 의도를 얻을 수있었습니다. 인 텐트는 다운로드 / 설치 직후에 시작됩니다. 사용자는 앱을 시작할 필요가 없습니다. 나는 이것을 사용하여 백그라운드 서비스도 시작하고 있습니다.
이것은 첫 번째 시작 의도가 아니라 내 Google Android 마켓으로 전송되는 Android 마켓 관련 인 텐트입니다. Android 마켓과 다른 리소스를 통해 앱을 설치하면 실행되지 않습니다.
여기에서 빌드 할 수있는 링크를 사용하세요. http://code.google.com/mobile/analytics/docs/android/#android-market-tracking 인 텐트에서 리퍼러를 가져 와서 다른 매개 변수를 가져 오기 위해 분리합니다.
referrer = intent.getStringExtra("referrer");
Map<String, String> params = Toolbox.getQueryMap(referrer);
추신 : 일부 앱과 마찬가지로이를 위해 deviceid / IMEI를 읽기 위해 읽을 필요가 없습니다. 사용자를 감시해서는 안됩니다.
실제로 market : // ... 또는 http : // market ... 과 같은 링크가있을 수 있습니다 . 또한 리퍼러 필드에 어떤 종류의 매개 변수가 있는지는 중요하지 않습니다. 거기에있는 모든 텍스트와 잘 작동합니다.
이 이벤트 유형 'com.android.vending.INSTALL_REFERRER' 가 브로드 캐스트로 전송하지 않는 주요 문제입니다 . 이 이벤트는 방금 설치된 응용 프로그램에만 적용됩니다.
UPD : 테스트 방법은 단 한 가지입니다. 앱을 마켓에 배포 한 다음 휴대폰에 설치하는 것입니다.
사용 구글 플레이 추천자 API 매우 쉽고 안전하게 내가 같이 (2017년 11월 20일에서) 여기에 대답
1) Broadcast receiver
public class InstallReferrerReceiver extends BroadcastReceiver {
String referrer = "";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction() != null) {
if (intent.getAction().equals("com.android.vending.INSTALL_REFERRER")) {
Bundle extras = intent.getExtras();
if (extras != null)
{
referrer = extras.getString("referrer");
Log.e("Receiver Referral", "===>" + referrer);
PrefUtils.putPrefString(context, PrefUtils.PRF_REFERRER, referrer);
/*
If you want split username and code use below code...
for ex referrer="username12345678890"
if(referrer!=null)
{
String[] referrerParts = referrer.split("(?<=\\D)(?=\\d)");
String strName = referrerParts[0];
String strCode = referrerParts[1];
Log.e("Receiver Referral Code", "===>" + strName);
Log.e("Receiver Referral Name", "===>" + strCode);
PrefUtils.putPrefString(context, PrefUtils.PRF_REFERRER_CODE, strName);
PrefUtils.putPrefString(context, PrefUtils.PRF_REFERRER_NAME, strCode);
}*/
}
}
}
}
}
2) Define a receiver in your app manifest.in which com.android.vending.INSTALL_REFERRER
<receiver
android:name=".services.InstallReferrerReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
3) Test your app configuration running this command
adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n package_name/broadcast_receiver_path_with_packagename --es referrer "username1234567890"
참고 URL : https://stackoverflow.com/questions/4093150/get-referrer-after-installing-app-from-android-market
'Development Tip' 카테고리의 다른 글
정규식으로 파일 유형 유효성 검사 (0) | 2020.11.09 |
---|---|
이름-값 쌍의 의미 및 구조 (0) | 2020.11.08 |
웹 크롤러 디자인 (0) | 2020.11.08 |
git 저장소의 다운로드 / 복제 통계를 얻는 방법이 있습니까? (0) | 2020.11.08 |
jQuery getJSON 결과를 변수에 저장 (0) | 2020.11.08 |