如何在Android中使用谷歌有望得到引荐? [英] how to get referrer using google track in 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屋!