Development Tip

Android 마켓에서 앱을 설치 한 후 리퍼러 받기

yourdevel 2020. 11. 8. 11:24
반응형

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가 작동하지 않는 사람과 이러한 기능에 대한 유용한 정보를 찾지 못하는 사람을 돕고 싶습니다.

메모:

  1. 의도 com.android.vending.INSTALL_REFERRER는 응용 프로그램이 처음 시작될 때가 아니라 설치 프로세스 중에 포착됩니다.
  2. 리퍼러 ... extras.getString("referrer")..는 고정되어 있지만 내용은 http get 구문을 준수하는 모든 문자열 값이 될 수 있습니다 ...referrer=thatsthevalue&thisisnot=xxx

위의 코드는 괜찮습니다. 정보를 완성하기위한 몇 가지 설명입니다.

  1. Android 매니페스트. <receiver>태그는 안에 있어야 <application>태그입니다.
  2. 시장을 연결하는 올바른 URL은 SDK의 유명한 Google 양식의 결과가 아닙니다.

하지만 이건

http://market.android.com/details?id=your.application.package.name&referrer=my_referrer_finally_works_fine

분명히 모바일 장치에서 링크를 따라 가야하며 완전한 테스트를위한 유일한 방법은 시장에 테스트 응용 프로그램을 게시하는 것입니다.

그리고 최종적이고 개인적인 메모.

이러한 정보가 완전히 생략 된 이유를 이해할 수 없으며 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

반응형