Android - Using Google Analytics v4 Campaign Measurement -
i have implemented google analytics campaign measurement according this guide. want test if works following this guide.
i have added these on androidmanifest.xml:
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <meta-data android:name="com.google.android.gms.analytics.globalconfigresource" android:resource="@xml/global_tracker" /> <!-- used google play store campaign measurement-->; <service android:name="com.google.android.gms.analytics.campaigntrackingservice" /> <receiver android:name="com.google.android.gms.analytics.campaigntrackingreceiver" android:exported="true"> <intent-filter> <action android:name="com.android.vending.install_referrer" /> </intent-filter> </receiver> <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.access_network_state" />
and putting these on mainactivity.java:
public enum trackername { app_tracker, // tracker used in app. global_tracker, // tracker used apps company. eg: roll-up tracking. ecommerce_tracker, // tracker used ecommerce transactions company. } hashmap<trackername, tracker> mtrackers = new hashmap<trackername, tracker>(); synchronized tracker gettracker(trackername trackerid) { if (!mtrackers.containskey(trackerid)) { googleanalytics analytics = googleanalytics.getinstance(this); tracker t = (trackerid == trackername.app_tracker) ? analytics.newtracker("ua-xxxxxxxx-1") : (trackerid == trackername.global_tracker) ? analytics.newtracker(r.xml.global_tracker) : analytics.newtracker("ua-xxxxxxxx-1"); mtrackers.put(trackerid, t); } return mtrackers.get(trackerid); } @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); googleanalytics.getinstance(this).getlogger().setloglevel(logger.loglevel.verbose); // tracker. tracker t = gettracker(trackername.app_tracker); // set screen name. t.setscreenname("test track"); // send screen view. t.send(new hitbuilders.appviewbuilder().build()); }
when run below command:
adb shell broadcast -a com.android.vending.install_referrer -n com.example.gatestapp/com.google.android.gms.analytics.campaigntrackingreceiver --es "referrer" "utm_source=testsource&utm_medium=testmedium&utm_term=testterm&utm_content=testcontent&utm_campaign=testcampaign"
i got response:
broadcast completed: result=0
and on logcat:
i/gav4﹕ thread[gathread,5,main]: campaign found: utm_source=testsource
but don't have idea how collect utm_source string, can have "testsource" value.
so, tried using custom receiver:
public class customreceiver extends broadcastreceiver { @override public void onreceive(context context, intent intent) { handleintent(context, intent); log.d("yes", "it works!!"); new campaigntrackingreceiver().onreceive(context, intent); } // handle intent data public void handleintent(context context, intent intent) { string referrer = intent.getstringextra("referrer"); log.d("yees", "it works!!!"); } }
changed receiver tag on androidmanifest.xml this:
<receiver android:name=".app.service.customreceiver" android:exported="true"> <intent-filter> <action android:name="com.android.vending.install_referrer" /> </intent-filter> </receiver>
and change adb shell command this:
adb shell broadcast -a com.android.vending.install_referrer -n com.example.gatestapp/.app.service.customreceiver --es "referrer" "utm_source=testsource&utm_medium=testmedium&utm_term=testterm&utm_content=testcontent&utm_campaign=testcampaign"
the broadcast success customreceiver catches nothing! none of "yes" or "yees" on logcat. there no hit detected on google analytics. there wrong method? how collect referrer extras?
edit:
i have collect referrer extras using sharedpreferences
. however, when publish app on play store, referrer extras seems missing. i'm sure did correctly, using url builder. also, have tried app demonstration 1 in this tutorial, not working. device not receiving extras.
am doing wrong approach? or, did miss something?
first, did package name "com.example.gatestapp" ? because wrote in adb command. second, did put "app.service.customreceiver" before "campaigntrackingreceiver" in manifest? maybe intent intercept campaigntrackingreceiver , not receiver.
i secceeded refferels in custom broadcast by:
bundle extras = intent.getextras(); string referrerstring = extras.getstring("referrer");
Comments
Post a Comment