Отслеживание рефералов Android не работает

Я пытаюсь заставить Android Referral отслеживать работу. Я следую единственной документации, которую я нашел здесь http://code.google.com/mobile/analytics/docs/android/#referrals. У меня есть следующее в файле манифеста Android.

<receiver android:name="com.google.android.apps.analytics.AnalyticsReceiver" android:exported="true"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver> <receiver android:name="com.package.Receiver" android:exported="true"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver> <uses-sdk android:minSdkVersion="4"/> 

Com.package.Receiver начинается с:

 public void onReceive(Context paramContext, Intent paramIntent) { String str1 = paramIntent.getStringExtra("referrer"); Log.i("myapp", "action: '" + paramIntent.getAction() + "' referrer string: '" + str1 + "'"); 

Также с небольшим количеством декомпиляции com.google.android.apps.analytics.AnalyticsReceiver имеет следующий код:

 public void onReceive(Context ctx, Intent intent) /* */ { /* 24 */ String referrer = intent.getStringExtra("referrer"); /* */ /* 26 */ if ((! ("com.android.vending.INSTALL_REFERRER".equals(intent.getAction()))) || (referrer == null)) /* */ { /* 28 */ return; /* */ } /* */ /* 31 */ String formattedReferrer = formatReferrer(referrer); /* */ /* 33 */ if (formattedReferrer != null) { /* 34 */ PersistentEventStore store = new PersistentEventStore(ctx); /* 35 */ store.setReferrer(formattedReferrer); /* 36 */ Log.d("googleanalytics", new StringBuilder().append("Stored referrer:").append(formattedReferrer).toString()); /* */ } else { /* 38 */ Log.w("googleanalytics", "Badly formatted referrer, ignored"); /* */ } /* */ } 

Обратите внимание на две строки 36 и 38, что Log «googleanalytics», которые я попробовал, нажал вышеприведенное приложение на рынок, загрузив его на свой Nexus One (после удаления предыдущей версии приложения). Я создал ссылку, используя страницу google, с которой я связан в начале этого сообщения.

http://www.google.com/url?sa=D&q=http://market.android.com/search%3Fq%3Dpname:com.package.app%26referrer%3Dutm_source%253Dgoogle%2526utm_medium%253Dcpc%2526utm_term%253Drunning%25252Bshoes%2526utm_content%253Dcontent1%2526utm_campaign%253Dslogan&usg=AFQjCNFctwqk1WgWl0bhiIBNVqy3U4OPRw

Я подключил logcat к моему Nexus One, пока я загружаю приложение из этой ссылки, я не вижу никаких журналов из «googleanalytics» или «myapp». Остальная часть библиотеки аналитики Google работает для моего приложения. IE. Я вижу записи в аналитике google о попаданиях страниц и т. Д. Однако все источники трафика – «Прямой трафик». Я не понимаю, что происходит. Кто-нибудь знает, что я могу сделать неправильно?

Solutions Collecting From Web of "Отслеживание рефералов Android не работает"

Как это часто бывает, я нашел свой собственный ответ. Моя проблема была в моем AndroidManifest.xml

В моем манифесте было следующее:

 <manifest> <application> </application> <receiver> </receiver> <uses-sd/> </manifest> 

Тэг приемника находился в неправильном месте. Это должно выглядеть так

 <manifest> <application> <receiver> </receiver> </application> <uses-sd/> </manifest> 

Теперь я вижу журналы, которые я ожидаю, когда устанавливаю приложение. Через несколько часов, надеюсь, у Google Analytics также будут данные.

Я довольно много исследовал реферальный трекер с аналитикой для Android. Вам не нужно размещать приложение на рынке, вы можете просто отправить намерение трансляции.

 Intent i = new Intent("com.android.vending.INSTALL_REFERRER"); i.setPackage(com.package.yourapp) //referrer is a composition of the parameter of the campaing i.putExtra("referrer", referrer); sendBroadcast(i); 

Для действия может быть только один BroadcastReceiver. В вашем AndroidManifest.xml у вас есть два прослушивания com.android.vending.INSTALL_REFERRER .

Если вы хотите, чтобы ваш получатель и получатель Google Analytics оба обрабатывали намерение, сделайте ваш приемник подклассом AnalyticsReceiver, например:

 import com.google.android.apps.analytics.AnalyticsReceiver; class Receiver extends AnalyticsReceiver { @Override void onReceive(Context context, Intent intent) { super.onReceive(context, intent); // Add your custom handling here } } 

Затем убедитесь, что ваш единственный приемник в AndroidManifest.xml:

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