Android 我无法跟踪google play的推荐人安装
我正在尝试向flurry报告安装事件 我已经实现了在安装应用程序时调用的ReferralReceiver。 我有地图上的所有参数。 我正在使用我的Flurry代码调用Flurry:Android 我无法跟踪google play的推荐人安装,android,installation,referrer,flurry,Android,Installation,Referrer,Flurry,我正在尝试向flurry报告安装事件 我已经实现了在安装应用程序时调用的ReferralReceiver。 我有地图上的所有参数。 我正在使用我的Flurry代码调用Flurry: FlurryAgent.onStartSession(context, FlurryCode); FlurryAgent.logEvent("Referral", referralParams); FlurryAgent.onEndSession(context); 数据正在存储到SharedReferences,
FlurryAgent.onStartSession(context, FlurryCode);
FlurryAgent.logEvent("Referral", referralParams);
FlurryAgent.onEndSession(context);
数据正在存储到SharedReferences,但不会发送到flurry
有人遇到过这个问题吗
@Override
public void onReceive(Context context, Intent intent)
{
LogManager.Info("ReferralReceiver intent.action=" + intent.getAction());
LogManager.Info("ReferralReceiver intent.DataString=" + intent.getDataString());
LogManager.Info("ReferralReceiver intent.intent=" + intent.toString());
// Workaround for Android security issue: http://code.google.com/p/android/issues/detail?id=16006
try
{
final Bundle extras = intent.getExtras();
if (extras != null) {
extras.containsKey(null);
}
}
catch (final Exception e) {
return;
}
Map<String, String> referralParams = new HashMap<String, String>();
// Return if this is not the right intent.
if (! intent.getAction().equals("com.android.vending.INSTALL_REFERRER")) { //$NON-NLS-1$
return;
}
String referrer = intent.getStringExtra("referrer"); //$NON-NLS-1$
if( referrer == null || referrer.length() == 0) {
return;
}
try
{
referrer = URLDecoder.decode(referrer, "UTF-8");
}
catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
LogManager.Info("ReferralReceiver intent.referrer=" + intent.getStringExtra("referrer"));
SharedPreferences storage = context.getSharedPreferences(ReferralReceiver.PREFS_FILE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = storage.edit();
editor.putString("referrer", referrer);
editor.commit();
try {
if (intent.hasExtra("referrer")) {
String referrers[] = referrer.split("&");
for (String referrerValue : referrers)
{
String keyValue[] = referrerValue.split("=");
if (keyValue.length==2)
{
referralParams.put(keyValue[0], keyValue[1]);
}
}
}
}
catch (Exception e)
{
LogManager.Error(e);
return;
}
ReferralReceiver.storeReferralParams(context, referralParams);
String FlurryCode = SaverrUtils.GetFlurryCode();
FlurryAgent.onStartSession(context, FlurryCode);
FlurryAgent.logEvent("Referral", referralParams);
FlurryAgent.onEndSession(context);
LogManager.Info("New_Install");
}
public final static String PREFS_FILE_NAME = "ReferralParamsFile";
/*
* Stores the referral parameters in the app's sharedPreferences.
* Rewrite this function and retrieveReferralParams() if a
* different storage mechanism is preferred.
*/
public static void storeReferralParams(Context context, Map<String, String> params)
{
SharedPreferences storage = context.getSharedPreferences(ReferralReceiver.PREFS_FILE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = storage.edit();
for(String key : SaverrUtils.EXPECTED_REFERRER_PARAMETERS)
{
String value = params.get(key);
if(value != null)
{
editor.putString(key, value);
}
}
editor.commit();
}
// Referral Parameters
public final static String[] EXPECTED_REFERRER_PARAMETERS = {
"utm_source",
"utm_medium",
"utm_term",
"utm_content",
"utm_campaign",
"referrer"
};
@覆盖
公共void onReceive(上下文、意图)
{
LogManager.Info(“ReferralReceiver intent.action=“+intent.getAction());
LogManager.Info(“ReferralReceiver intent.DataString=“+intent.getDataString());
LogManager.Info(“ReferralReceiver intent.intent=“+intent.toString());
//Android安全问题的解决方法:http://code.google.com/p/android/issues/detail?id=16006
尝试
{
final Bundle extras=intent.getExtras();
如果(附加值!=null){
附加容器(空);
}
}
捕获(最终异常e){
返回;
}
Map referralParams=新的HashMap();
//如果这不是正确的意图,请返回。
如果(!intent.getAction().equals(“com.android.vending.INSTALL_referer”){/$NON-NLS-1$
返回;
}
字符串referer=intent.getStringExtra(“referer”);/$NON-NLS-1$
if(referer==null | | referer.length()==0){
返回;
}
尝试
{
referer=urldecker.decode(referer,“UTF-8”);
}
捕获(不支持DencodingException e1){
//TODO自动生成的捕捉块
e1.printStackTrace();
}
LogManager.Info(“ReferralReceiver intent.referer=“+intent.getStringExtra(“referer”));
SharedReferences存储=context.getSharedReferences(ReferralReceiver.PREFS\u FILE\u NAME,context.MODE\u PRIVATE);
SharedReferences.Editor=storage.edit();
编辑器.putString(“referer”,referer);
commit();
试一试{
if(意图.额外(“推荐人”)){
字符串referers[]=referer.split(“&”);
for(字符串refererValue:referer)
{
字符串keyValue[]=refererValue.split(“=”);
if(keyValue.length==2)
{
referralParams.put(keyValue[0],keyValue[1]);
}
}
}
}
捕获(例外e)
{
LogManager.Error(e);
返回;
}
ReferralReceiver.storeReferralParams(上下文,referralParams);
字符串FlurryCode=saverritls.GetFlurryCode();
onStartSession(上下文,FlurryCode);
FlurryAgent.logEvent(“参考”,参考参数);
FlurryAgent.onEndSession(上下文);
LogManager.Info(“新安装”);
}
公共最终静态字符串PREFS_FILE_NAME=“ReferralParamsFile”;
/*
*将引用参数存储在应用程序的SharedReferences中。
*重写此函数,如果
*首选不同的存储机制。
*/
公共静态void storeReferralParams(上下文上下文,映射参数)
{
SharedReferences存储=context.getSharedReferences(ReferralReceiver.PREFS\u FILE\u NAME,context.MODE\u PRIVATE);
SharedReferences.Editor=storage.edit();
for(字符串键:SaverrUtils。应为\u referer\u参数)
{
字符串值=params.get(键);
if(值!=null)
{
编辑器.putString(键,值);
}
}
commit();
}
//推荐参数
公共最终静态字符串[]应为\u referer\u参数={
“utm_来源”,
“utm_中等”,
“utm_术语”,
“utm_内容”,
“utm_运动”,
“推荐人”
};
我认为flurry在开始/结束会话之间有一个最小的秒数,以便它实际计数。您可以将所有数据保存到共享首选项或文件中,然后在用户启动活动时检查是否已将其提供给flurry。如果是新的,则执行FlurryAgent.logEvent(…)