Obtenez l'étiquette de référence Google Analytics Android

Nous envisageons d'utiliser Google Analytics pour suivre les références de diffusion d'annonces, via Android Market, à notre application.

Selon la documentation de Google, la balise de référence se manifeste par une intention et est automatiquement enregistrée par la bibliothèque Google Analytics.

C'est génial, mais nous devons extraire cette étiquette de référence pour nos propres analyses internes. La documentation est timide sur les détails sur la façon de l'extraire de l'intention de lancement initiale, et des instructions sur la façon de simuler cela avant de se lancer.

Est-ce que quelqu'un a de l'expérience avec ça?

  • "Taux de cette application" - lien dans l'application Google Play Store sur le téléphone
  • Android Marketplace: Changer le paquet de l'application
  • Gérer les abonnements multiples pour un seul élément pour plusieurs utilisateurs
  • Obtenir versionCode et VersionName de Google Play
  • Comment créer la vue en grille d'Android Google Play comme Widget avec des images de différentes tailles chargées dynamiquement
  • Application Android beta / alpha test apk pas installé
  • Existe-t-il un outil pour vérifier les périphériques pris en charge avant de télécharger sur Google Play?
  • Existe-t-il une liste ou une description exhaustive des paramètres de référence que l'application Android Market envoie à l'intention de référence?
  • 3 Solutions collect form web for “Obtenez l'étiquette de référence Google Analytics Android”

    Je suis allé de l'avant et j'ai publié une application de recherche de pixels morts pour jouer avec l'intuition sur l'intention. Pour une raison quelconque, lorsque j'ai enregistré deux récepteurs de diffusion différents (c'est-à-dire com.google.android.apps.analytics.AnalyticsReceiver et le mien), je ne l'ai jamais reçu seul.

    Donc, je n'ai enregistré que mon propre destinataire, je traite les informations et je l'ai transmis à Google Analytics. Je ne sais pas comment c'est kosher, mais ça marche. Le code suit.

    public class ZSGoogleInterceptor extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle extras = intent.getExtras(); String referrerString = extras.getString("referrer"); // Next line uses my helper function to parse a query (eg "a=b&c=d") into key-value pairs HashMap<String, String> getParams = Utility.getHashMapFromQuery(referrerString); String source = getParams.get("utm_campaign"); if (source != null) { SharedPreferences preferences = context.getSharedPreferences("my_prefs", Context.MODE_PRIVATE); Editor preferencesEditor = preferences.edit(); preferencesEditor.putString("ga_campaign", source); preferencesEditor.commit(); } // Pass along to google AnalyticsReceiver receiver = new AnalyticsReceiver(); receiver.onReceive(context, intent); } } 

    Ensuite, lorsque votre application est effectivement lancée, vous pouvez retirer la valeur des préférences partagées et les transmettre avec l'inscription de l'utilisateur ou autre. J'ai utilisé la balise de campagne pour mes besoins, mais vous pouvez saisir tous les paramètres que vous voulez de la chaîne de références créée avec cet outil .

    La réponse @DougW a été mise à jour pour SDK 4 d'Analytics

    https://developers.google.com/analytics/devguides/collection/android/v4/campaigns

     import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import com.google.android.gms.analytics.CampaignTrackingReceiver; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.LinkedHashMap; import java.util.Map; /** * Created by dave on 15-05-05. */ public class ReferrerReceiver extends BroadcastReceiver { public static final String REFERRER = "REF"; public static final String UTM_CAMPAIGN = "utm_campaign"; public static final String UTM_SOURCE = "utm_source"; public static final String UTM_MEDIUM = "utm_medium"; public static final String UTM_TERM = "utm_term"; public static final String UTM_CONTENT = "utm_content"; private final String[] sources = { UTM_CAMPAIGN, UTM_SOURCE, UTM_MEDIUM, UTM_TERM, UTM_CONTENT }; @Override public void onReceive(Context context, Intent intent) { Bundle extras = intent.getExtras(); String referrerString = extras.getString("referrer"); try { Map<String, String> getParams = getHashMapFromQuery(referrerString); SharedPreferences preferences = context .getSharedPreferences(REFERRER, Context.MODE_PRIVATE); SharedPreferences.Editor preferencesEditor = preferences.edit(); for (String sourceType : sources) { String source = getParams.get(sourceType); if (source != null) { preferencesEditor.putString(sourceType, source); } } preferencesEditor.commit(); } catch (UnsupportedEncodingException e) { Log.e("Referrer Error", e.getMessage()); } finally { // Pass along to google CampaignTrackingReceiver receiver = new CampaignTrackingReceiver(); receiver.onReceive(context, intent); } } public static Map<String, String> getHashMapFromQuery(String query) throws UnsupportedEncodingException { Map<String, String> query_pairs = new LinkedHashMap<String, String>(); String[] pairs = query.split("&"); for (String pair : pairs) { int idx = pair.indexOf("="); query_pairs.put(URLDecoder.decode(pair.substring(0, idx), "UTF-8"), URLDecoder.decode(pair.substring(idx + 1), "UTF-8")); } return query_pairs; } } 

    Dans votre fichier manifeste:

      <service android:name="com.google.android.gms.analytics.CampaignTrackingService" /> <receiver android:name="com.google.android.gms.analytics.CampaignTrackingReceiver" /> <!-- Make sure this points to the location of Referrer Receiver in your package --> <receiver android:name=".ReferrerReceiver" android:exported="true"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver> 

    Vérifiez à:

    Obtenir un référent après l'installation d'une application depuis Android Market

    Pour les solutions.

    Tobia

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.