it-swarm.com.de

Holen Sie sich Referrer nach der Installation der App aus Android Market

Ich versuche, einen Broadcast-Receiver zu registrieren, der die Absichten "com.Android.vending.INSTALL_REFERRER" erfasst, nachdem Android eine Android-App installiert hat.

Ich verfolge die Details hier: http://code.google.com/mobile/analytics/docs/Android/#referrals

Ich kann jedoch Google Analytics nicht verwenden. Daher habe ich eine eigene Lösung erstellt. Ich habe der Manifestdatei Folgendes hinzugefügt:

<receiver Android:name="com.test.Receiver" Android:exported="true">
<intent-filter>
    <action Android:name="com.Android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>

und erstellte eine grundlegende BroadcastReceiver-Klasse:

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);
    }
}

Wenn die App installiert ist, scheint der Empfänger den Intent jedoch nicht zu fangen (wenn der Intent überhaupt ausgestrahlt wird?) Und ich bekomme keine Protokollierungsausgabe.

Bin ich irgendwo falsch oder startet der Markt diese Intents nicht mehr, wenn eine App installiert wird?

68
Jake

Ich würde versuchen zu helfen, wer wie ich install_referrer nicht zum Laufen bringt und der KEINE nützlichen Informationen über diese Funktionen findet.

Anmerkungen:

  1. Die Absicht com.Android.vending.INSTALL_REFERRER wird während des Installationsvorgangs abgefangen. Nicht, wenn die Anwendung zum ersten Mal gestartet wird.
  2. Der Referrer ...extras.getString("referrer") .. ist festgelegt, der Inhalt kann jedoch ein beliebiger Zeichenfolgewert sein, der die http-Get-Syntax ...referrer=thatsthevalue&thisisnot=xxx berücksichtigt.

Der obige Code ist in Ordnung, nur einige Erklärungen, um die Informationen zu vervollständigen:

  1. Android Manifest. Die <receiver>-Tags müssen sich innerhalb der <application>-Tags befinden.
  2. Die richtige URL, um den Markt zu verknüpfen, ist nicht das Ergebnis der berühmten Google-Formulare in SDK

aber das hier

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

Natürlich müssen Sie dem Link vom mobilen Gerät aus folgen. Die einzige Möglichkeit für einen vollständigen Test besteht darin, eine Testanwendung auf dem Markt zu veröffentlichen.

Und eine letzte und persönliche Notiz.

Ich verstehe nicht, warum diese Informationen vollständig ausgelassen werden, und ich hoffe, dass Google diese Details ausführt.

51
Tobia

Dies könnte etwas spät sein, aber Sie können den Installationsempfänger ohne Google Play testen. Verwenden Sie einfach ADB :)

Führen Sie dies von adb.exe aus

adb Shell

am broadcast -a com.Android.vending.INSTALL_REFERRER -n your.package/path.to.your.BroadcastReceiver --es "referrer" "test_referrer=test"

Wenn Sie in Ihrem BroadcastReceiver ein Protokoll eingerichtet haben, wird es in LogCat angezeigt.

Hoffe das hilft! 

17
Machine Tribe

Okay, ich fand den Grund, warum der Intent nicht gestartet wurde. Anscheinend MÜSSEN Sie dieselben Parameternamen verwenden, die hier angegeben sind: http://code.google.com/mobile/analytics/docs/Android/#referrals

Sie können nicht Ihre eigenen Parameternamen verwenden, wie ich es getan habe: S

5
Jake

Ich denke, diese Antworten müssen vor Android 3.1 geschrieben worden sein - weil sich die Dinge auf eine Art und Weise verändert haben.

Das System kennzeichnet die App jetzt als inaktiv, wenn sie installiert ist. Sie erhalten INSTALL_REFERRER oder andere Broadcasts erst dann, wenn der Benutzer die App explizit durch Ausführen (oder Platzieren des Widgets) aktiviert.

5
Tom

Bitte beachten Sie, dass dies nicht die erste Absicht ist, sondern nur eine Android-Marktabsicht, die mir der Google-Android-Markt gesendet wird .. Wenn Sie die App über eine andere Ressource als den Android-Markt installieren, wird sie nicht ausgelöst.

Verwenden Sie den Link, den Sie dort erstellen können: http://code.google.com/mobile/analytics/docs/Android/#Android-market-tracking Holen Sie den Referrer aus der Absicht heraus und nehmen Sie ihn auseinander um die verschiedenen Parameter zu erhalten

referrer = intent.getStringExtra("referrer");
Map<String, String> params = Toolbox.getQueryMap(referrer);

P.S. Sie müssen nicht lesen, um die Geräte-ID/IMEI zu lesen, wie dies bei einigen Apps der Fall ist. Sie sollten Ihre Benutzer nicht ausspionieren wollen.

2
white_gecko

Ich stimme zu, dass die Dokumentation von Google nicht die beste ist. Ich habe jedoch nur in der Lage sein zu schießen, indem ich die App tatsächlich auf den Marktplatz hochlade und sie dann herunterlade/installiere. Die Absicht wird sofort nach dem Download/der Installation gestartet - der Benutzer muss die App nicht starten. Ich benutze dies, um auch einen Hintergrunddienst zu starten.

2
JavaCoderEx

Tatsächlich könnte es irgendwelche Links wie market: // ... oder http: // market ... geben. Entweder funktioniert das einwandfrei ..__ im Referrer-Feld. Es funktioniert gut mit jedem Text dort.

Das Hauptproblem, das dieser Ereignistyp "com.Android.vending.INSTALL_REFERRER" nicht per Broadcast sendet. Dieses Ereignis wird NUR in die gerade installierte Anwendung übernommen.

UPD: Es gibt nur einen Weg, um es zu testen: Stellen Sie Ihre App auf dem Markt bereit und installieren Sie sie dann auf dem Telefon.

1
Vagif
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"
0
Coldfin Lab

Verwenden Sie Google Play Referrer API (ab 20. November 2017) sehr einfach und sicher, wie ich hier geantwortet habe

0
Deven