2010-11-04 12 views
64

Ich versuche, einen Broadcast Receiver zu registrieren, der "com.android.vending.INSTALL_REFERRER" Intents abfängt, die von Android gestartet werden, nachdem eine App vom Market installiert wurde.Holen Sie sich Referrer nach der Installation der App aus dem Android Market

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

Allerdings kann ich nicht Google Analytics verwenden, so habe ich meine eigene Lösung geschaffen. Ich habe folgenden meine Manifest-Datei 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 eine grundlegende BroadcastReceiver Klasse erstellt:

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 jedoch die App der Empfänger installiert sind nicht die Absicht zu fangen scheint (wenn die Absicht wird sogar ausgestrahlt?) und ich bekomme keine Logging-Ausgabe.

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

+1

Ich beantwortete diese Frage hier http://stackoverflow.com/questions/3817030/get-android-google-analytics-referrer-tag/3945100#3945100 – DougW

+1

Es ist erwähnenswert, dass aufgrund eines Fehlers in der neuesten Version der Android Market-App funktioniert die Referrer-Zeichenfolge derzeit nicht. Sie können den Bug hier markieren, um Google darauf aufmerksam zu machen: http://code.google.com/p/android/issues/detail?id=19247 – plowman

+0

Weiß jemand, ob es einen Weg gibt, diese Sendung zu empfangen, wenn SONSTIGE Apps, neben mir, wird installiert? –

Antwort

5

Okay, ich fand den Grund, warum die Absicht nicht gestartet wurde. Anscheinend müssen Sie die gleichen Parameternamen verwenden, wie hier beschrieben: http://code.google.com/mobile/analytics/docs/android/#referrals

Sie kann nicht Ihre eigenen Parameternamen verwenden, wie ich tat:

+0

können Sie mir in meiner Frage http: // stackoverflow helfen.com/questions/10431018/how-to-get-referrer-using-google-track-in-android – Khan

+0

Aktualisierter Link https://developers.google.com/analytics/devguides/collection/android/devguide#google-play- Tracking – eveliotc

+0

@Jake \t Können Sie mir bitte sagen, welche Parameter? Eigentlich habe ich das gleiche Problem wie Sie –

45

S würde ich versuchen, die, wie ich zu helfen, install_referrer Arbeit nicht leistet und die KEINE nützlichen Informationen über diese Funktionen finden.

Hinweise:

  1. Die Absicht com.android.vending.INSTALL_REFERRER werden während der Installation gefangen werden, nicht, wenn die Anwendung für das erste Mal gestartet wird.
  2. Die Referrer ... extras.getString("referrer") .. ist festgelegt, aber der Inhalt jeden String-Wert, der die HTTP-Syntax erhalten respektieren sein kann ... referrer=thatsthevalue&thisisnot=xxx

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

  1. Android Manifest. Die <receiver> Tags müssen innerhalb der <application> Tags sein.
  2. die korrekte URL, den Markt zu verknüpfen ist nicht die Ergebnisse der berühmten google Formen in sdk

aber diese

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

Natürlich müssen Sie den Link aus dem Handy folgen Gerät und die einzige Möglichkeit für einen vollständigen Test ist es, eine Testanwendung auf dem Markt zu veröffentlichen.

Und eine letzte und persönliche Notiz.

Ich verstehe nicht, warum diese Informationen vollständig weggelassen werden und ich hoffe, dass Google für die Detaillierung handeln wird.

+2

Um zu testen, finden Sie in dieser Antwort: http://stackoverflow.com/questions/5890914/how-to-test-android-referral-tracking/6966718#6966718 – emmby

+1

INSTALL_REFERRER funktioniert wie dokumentiert und es gibt Mit URLs, die von den "berühmten Google-Formularen" generiert werden, ist nichts falsch, da sie vom GA SDK empfangen werden sollen. Ihr Code funktioniert nur, wenn Sie planen, manuell in GA zu posten oder mit einer anderen Analyseplattform zu integrieren. Klicken Sie oben auf den Link, wenn Sie den Referrer abfangen und trotzdem das GA SDK verwenden möchten. –

+0

_Das '' -Tag muss innerhalb des '' Tags sein. Dies wird weder im SDK-Entwicklerhandbuch erklärt, noch schlägt die Kompilierung fehl, wenn Sie dies anderweitig tun. Also, danke Tobia! –

2

Ich stimme zu, dass Googles Dokumentation nicht die beste ist.Allerdings konnte ich nur die Absicht zum Feuern bekommen, indem ich die App tatsächlich auf den Marketplace hochlade und sie dann herunterlade/installiere. Die Absicht wird sofort nach dem Download/Installation gestartet - der Benutzer muss die App nicht starten. Ich benutze dies um einen Hintergrunddienst zu starten.

+0

Können Sie angeben, welche Version von Android Sie konnten das erreichen? Gilt dieses Verhalten noch für 2.3.3 & ICS (4.0)? – rycfung

1

Eigentlich könnte es irgendwelche Verbindungen sein wie market: // ... oder http: // Markt ... entweder gut funktionieren. Auch ist es egal, welche Art von Parametern im Referrer-Feld sein wird. Es funktioniert gut mit jedem Text darin.

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

UPD: Und es gibt nur eine Möglichkeit, es zu testen - stellen Sie Ihre App in den Markt und installieren Sie sie dann auf dem Telefon.

+0

Ich glaube, der INSTALL_REFERRER funktioniert nicht für das http-Protokoll. Zumindest nicht mehr, wenn es vorher war. Beziehen Sie sich auf diese Dokumentation und beachten Sie Punkt 2 unter bekannten Problemen: https://developers.google.com/analytics/devguides/collection/android/v2/campaigns#known-issues – rycfung

+0

@rycfung Ich denke, dass es nur bedeutet funktioniert nicht, wenn Sie auf "Installieren" aus dem Web klicken, nicht, wenn Sie die Play Store App über einen Weblink öffnen –

2

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

den Link verwenden, die Sie dort bauen können: http://code.google.com/mobile/analytics/docs/android/#android-market-tracking die Referrer von der Absicht erhalten und es auseinander nehmen 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 DeviceID/IMEI zu lesen, wie dies bei einigen Apps der Fall ist. Sie sollten Ihre Benutzer nicht ausspionieren wollen.

5

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

Das System markiert die App jetzt als ruhend, wenn sie installiert wird - sie erhalten INSTALL_REFERRER oder andere Broadcasts erst, wenn der Benutzer die App explizit aktiviert, indem er sie ausführt (oder Widget platziert).

+0

Beliebige Dokumentation, um dies zu unterstützen? Ich sehe immer noch keine Sendung, die gesendet wird, bevor/nachdem ich meine installierte App starte, obwohl ich den Play Store mit dem Referrer-Parameter – rycfung

+0

geöffnet habe. Tom, ich denke, es funktioniert und wurde in Version 4.x getestet. Seit Android 3.1 Launch Controls auf gestoppten Anwendungen wurde eingeführt. [http://developer.android.com/about/versions/android-3.1.html](http://developer.android.com/about/versions/android-3.1.html) Beachten Sie, dass das System FLAG_EXCLUDE_STOPPED_PACKAGES allen hinzufügt Broadcast-Absichten. Ein Hintergrunddienst oder eine Anwendung kann dieses Verhalten jedoch überschreiben, indem das Flag FLAG_INCLUDE_STOPPED_PACKAGES den Broadcast-Absichten hinzugefügt wird, die gestoppte Anwendungen aktivieren dürfen. Ich hoffe, das könnte hilfreich sein. – androidyue

16

Dies könnte ein wenig zu spät sein, aber Sie können die Referrer installieren testen, ohne die Verwendung von Google Play, nur ADB verwenden :)

Führen Sie dieses von adb.exe

adb shell 

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

Wenn Sie Setup haben Anmeldung In Ihrem BroadcastReceiver sehen Sie das Popup in LogCat.

Hoffe, das hilft!

+5

auf OS X Schlüsselwert-Paar der Option -e muss nicht mit Doppel-Codes eingeschlossen werden. Also über Befehl wird: 'adb Shell am Broadcast -a com.android.vending.INSTALL_REFERRER -n your.package/path.to.your.BroadcastReceiver --es Referrer test_referrer = test' –