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

Popular posts from this blog

ruby on rails - RuntimeError: Circular dependency detected while autoloading constant - ActiveAdmin.register Role -

c++ - OpenMP unpredictable overhead -

javascript - Wordpress slider, not displayed 100% width -