Android 推荐跟踪不起作用
Posted
技术标签:
【中文标题】Android 推荐跟踪不起作用【英文标题】:Android referral tracking does not work 【发布时间】:2011-06-07 07:10:32 【问题描述】:我正在尝试让 android 推荐跟踪工作。我正在关注我在这里找到的唯一文档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");
/* */
/* */
请注意记录“googleanalytics”的两行 36 和 38 我已尝试将上述应用程序推向市场,将其下载到我的 Nexus One 上(在卸载应用程序的先前版本后)。我已经使用我在这篇文章开头链接到的谷歌页面生成了一个链接
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”的任何日志。谷歌分析库的其余部分确实适用于我的应用程序。 IE。我在谷歌分析上看到了关于页面点击等的记录。但是所有的流量来源都是“直接流量”。我不知道发生了什么。有没有人 对我可能做错了什么有任何见解?
【问题讨论】:
突出显示您的代码并点击 框以正确显示它,不要放在引号中。 您或其他人似乎已经这样做了。感谢您指出这一点。 另外,您不能让多个广播接收器接收相同的事件。如果你想这样做,你必须创建一个接收器,它将它传递给所有其他人 【参考方案1】:通常情况下,我找到了自己的答案。我的问题出在我的 AndroidManifest.xml 中
我的清单中有以下内容:
<manifest>
<application>
</application>
<receiver>
</receiver>
<uses-sd/>
</manifest>
接收者标签放错了位置。它应该是这样的
<manifest>
<application>
<receiver>
</receiver>
</application>
<uses-sd/>
</manifest>
现在,我在安装应用程序时看到了预期的日志。希望在几个小时内 Google Analytics 也能获得数据。
【讨论】:
【参考方案2】:我已经探索了很多带有 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);
【讨论】:
【参考方案3】:一个动作只能有一个广播接收器。在您的 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>
【讨论】:
您能告诉我更多关于 Analytics Receiver 的信息吗?我在任何地方都找不到课程。以上是关于Android 推荐跟踪不起作用的主要内容,如果未能解决你的问题,请参考以下文章