如何在Android中使用谷歌有望得到引荐? [英] how to get referrer using google track in android?

查看:114
本文介绍了如何在Android中使用谷歌有望得到引荐?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想实现安装引荐曲目,并希望在后端数据库引用参数和存储我见过很多exmple或质疑作为喜欢的获取Android的谷歌Analytics(分析)引荐标记或<一href="http://stackoverflow.com/questions/7233875/android-google-analytics-campaign-tracking-not-appearing">Android谷歌Analytics(分析)的广告系列跟踪未出现,但没有得到一个方法我已经生成的链接并尝试code

 包SimpleDemo.ReferralTrack;

   进口java.io.UnsupportedEncodingException;
   进口java.net.URLDe codeR;
   进口的java.util.HashMap;
   进口的java.util.Map;

   进口android.content.BroadcastReceiver;
   进口android.content.Context;
   进口android.content.Intent;
   进口android.content.Shared preferences;
   进口android.os.Bundle;

  公共类ReferralReceiver扩展的BroadcastReceiver
   {
@覆盖
公共无效的onReceive(上下文的背景下,意图意图)
{
    //解决方法对于Android的安全问题:HTTP://$c$c.google.com/p/android/issues/detail ID = 16006
    尝试
    {
        最终捆绑额外= intent.getExtras();
        如果(临时演员!= NULL){
            extras.containsKey(空);
        }
    }
    赶上(最终例外五){
        返回;
    }

    地图&LT;字符串,字符串&GT; referralParams =新的HashMap&LT;字符串,字符串&GT;();

    //返回如果这是不正确的意图。
    如果(!intent.getAction()。等于(com.android.vending.INSTALL_REFERRER)){// $ NON-NLS-1 $
        返回;
    }

    字符串引荐= intent.getStringExtra(推荐人); // $ NON-NLS-1 $
    如果(引荐== NULL || referrer.length()== 0){
        返回;
    }

    尝试
    {//删除所有URL编码
        引荐= URLDe coder.de code(引荐,X WWW的形式,urlen codeD); // $ NON-NLS-1 $
    }
    赶上(UnsupportedEncodingException E){返回; }

    //解析查询字符串,提取相关数据
    的String [] PARAMS = referrer.split(&安培;); // $ NON-NLS-1 $
    对于(字符串参数:PARAMS)
    {
        的String []对= param.split(=); // $ NON-NLS-1 $
        referralParams.put(对[0],配对[1]);
    }

    ReferralReceiver.storeReferralParams(背景下,referralParams);
}

私人最终静态的String [] EXPECTED_PARAMETERS = {
    utm_source
    utm_medium
    utm_term,
    的utm_content
    utm_campaign
};
私人最终静态字符串preFS_FILE_NAME =ReferralParamsFile;

/ *
 *商店在应用程序的共享preferences转诊参数。
 *重写此功能和retrieveReferralParams(),如果
 *不同的存储机制是preferred。
 * /
公共静态无效storeReferralParams(上下文的背景下,地图&LT;字符串,字符串&GT; PARAMS)
{
    共享preferences存储= context.getShared preferences(ReferralReceiver preFS_FILE_NAME,Context.MODE_PRIVATE。);
    共享preferences.Editor编辑器= storage.edit();

    对于(字符串键:ReferralReceiver.EXPECTED_PARAMETERS)
    {
        字符串值= params.get(密钥);
        如果(值!= NULL)
        {
            editor.putString(键,值);
        }
    }

    editor.commit();
}

/ *
 *返回从共享preferences拉到市场推荐参数的地图。
 * /
公共静态地图&LT;字符串,字符串&GT; retrieveReferralParams(上下文的背景下)
{
    HashMap的&LT;字符串,字符串&GT; PARAMS =新的HashMap&LT;字符串,字符串&GT;();
    共享preferences存储= context.getShared preferences(ReferralReceiver preFS_FILE_NAME,Context.MODE_PRIVATE。);

    对于(字符串键:ReferralReceiver.EXPECTED_PARAMETERS)
    {
        字符串值= storage.getString(键,NULL);
        如果(值!= NULL)
        {
            params.put(键,值);
        }
    }
    返回PARAMS;
}
}
 

之后,我已经尝试在我的活动

 共享preferences preferences = preferenceManager.getDefaultShared preferences(DemoActivity.this);
              串referrers1 = preferences.getString(ga_campaign,0);
              地图&LT;字符串,字符串&GT; retrieveReferralParams = ReferralReceiver.retrieveReferralParams(DemoActivity.this);
              串referrers2 = retrieveReferralParams.get(utm_source);
              串referrers3 = retrieveReferralParams.get(utm_medium);
              串referrers4 = retrieveReferralParams.get(utm_term);
              串referrers5 = retrieveReferralParams.get(的utm_content);
              串referrers6 = retrieveReferralParams.get(utm_campaign);
              tv.setText(referrers1 ++ referrers2 ++ referrers3 ++ referrers4 ++ referrers5 ++ referrers6 +);
 

按钮点击,但没有得到期望的输出

我想是这样的。

<$p$p><$c$c>"https://play.google.com/store/apps/details?id=com.lifestreet.android.TestInstallationIntent&referrer=bb%3DAAAAAAAAAA&feature=search_result%22"  答    引荐= BB

任何帮助,我非常AP preciated 先谢谢了。

解决方案

不知道,谷歌可以发送任意信息。尝试使用生成器来创建的URL。

<一个href="https://developers.google.com/analytics/devguides/collection/android/devguide#google-play-builder" rel="nofollow">https://developers.google.com/analytics/devguides/collection/android/devguide#google-play-builder

I want to implement install referrer track and want referrer parameter and store in back end database i have seen many exmple or question as on like Get Android Google Analytics referrer tag or Android Google Analytics Campaign tracking not appearing but not get a way i have generated links to and try the code

   package SimpleDemo.ReferralTrack; 

   import java.io.UnsupportedEncodingException;
   import java.net.URLDecoder;
   import java.util.HashMap;
   import java.util.Map;

   import android.content.BroadcastReceiver;
   import android.content.Context;
   import android.content.Intent;
   import android.content.SharedPreferences;
   import android.os.Bundle;

  public class ReferralReceiver extends BroadcastReceiver
   {
@Override
public void onReceive(Context context, Intent intent)
{
    // 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
    {    // Remove any url encoding
        referrer = URLDecoder.decode(referrer, "x-www-form-urlencoded"); //$NON-NLS-1$
    }
    catch (UnsupportedEncodingException e) { return; }

    // Parse the query string, extracting the relevant data
    String[] params = referrer.split("&"); // $NON-NLS-1$
    for (String param : params)
    {
        String[] pair = param.split("="); // $NON-NLS-1$
        referralParams.put(pair[0], pair[1]);
    }

    ReferralReceiver.storeReferralParams(context, referralParams);
}

private final static String[] EXPECTED_PARAMETERS = {
    "utm_source",
    "utm_medium",
    "utm_term",
    "utm_content",
    "utm_campaign"
};
private 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 : ReferralReceiver.EXPECTED_PARAMETERS)
    {
        String value = params.get(key);
        if(value != null)
        {
            editor.putString(key, value);
        }
    }

    editor.commit();
}

/*
 * Returns a map with the Market Referral parameters pulled from the sharedPreferences.
 */
public static Map<String, String> retrieveReferralParams(Context context)
{
    HashMap<String, String> params = new HashMap<String, String>();
    SharedPreferences storage = context.getSharedPreferences(ReferralReceiver.PREFS_FILE_NAME, Context.MODE_PRIVATE);

    for(String key : ReferralReceiver.EXPECTED_PARAMETERS)
    {
        String value = storage.getString(key, null);
        if(value != null)
        {
            params.put(key, value);
        }
    }
    return params;
}
}

After that i have try in my activity

 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(DemoActivity.this);
              String  referrers1 =preferences.getString("ga_campaign", "0");
              Map<String, String> retrieveReferralParams=ReferralReceiver.retrieveReferralParams(DemoActivity.this);
              String  referrers2= retrieveReferralParams.get("utm_source");
              String  referrers3= retrieveReferralParams.get("utm_medium");
              String  referrers4= retrieveReferralParams.get("utm_term");
              String  referrers5= retrieveReferralParams.get("utm_content");
              String  referrers6= retrieveReferralParams.get("utm_campaign");
              tv.setText(referrers1+" "+referrers2+" "+referrers3+" "+referrers4+" "+referrers5+" "+referrers6+" ");

on button click but not get desired output

i want something like from

"https://play.google.com/store/apps/details?id=com.lifestreet.android.TestInstallationIntent&referrer=bb%3DAAAAAAAAAA&feature=search_result%22"  
 Ans     

   referrer=bb

any help me highly appreciated Thanks in advance.

解决方案

Not sure that Google lets you send arbitrary information. Try using the generator to create the url.

https://developers.google.com/analytics/devguides/collection/android/devguide#google-play-builder

这篇关于如何在Android中使用谷歌有望得到引荐?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆