您的位置:首页 > 大数据 > 人工智能

Google Compaign-如何通过第三方软件推广你的android应用

2012-11-19 13:52 627 查看
一个成功的android产品需要的不仅仅是一个好的构思或者优秀的实现方案,更多的时候需要的是好的推广方式和运营渠道,比如我们的产品需要通过其他产品为我们换流量,在其他的产品中加入我们产品的下载连接,以获得更多的用户下载。Google不仅为android的开发者提供了优秀的app store,更为一个产品的良性发展提供了一种推广自己的手段和方式,即Google Compaign。

如果你是第一次了解Google Compaign,那么请不要被这个词吓倒,其实Google为了方便开发者使用,已经把概念和实现方式抽象到极致,你仅仅需要知道的是如何使用 Google Anylize SDK去完成这个第三方推广工作。

Google Anylize SDK为我们主要提供了两大功能:

1.Track 事件跟踪与统计

2.Compaign 渠道推广

本文只阐述Compaign的使用方式,Track会在以后的文章中讲述。

一、在Google App Store下载应用

现在大部分android手机的rom都是内置Google AppStore的(Google play),下载应用的时候会看到这个画面



当用户点击了安装,那么该应用会下载到用户手机并且执行安装操作。下载的整个操作都是http的方式下载的,也就是说,app store会为每一个用程序的下载提供一个有效的url,一般来说,这个地址的格式是:https://play.google.com/store/apps/details?id=<你的应用程序的packagename,如 com.your.app>



其中第一个参数utm_source 就是我们通常讲的"推广渠道"

最后需要将这些参数和基础的URL生成一个完整的url,google 也提供了一个UrlBuilder:https://developers.google.com/analytics/devguides/collection/android/?hl=zh-CN&csw=1

到此位置我已经讲述了,如何去构建下载的url,包括url中的参数如何定义,那么接下来做的工作是,我的客户端在下载安装之后要获得这些参数,才知道我的客户端是从哪个渠道下载的,是哪个广告商帮助我推广的,这才是最终的目的。

好吧,那么这个问题也很简单,androidSDK,已经给我们提供了这样获得下载参数的方式,是通过安装广播来获得:

<receiver
android:name=".receiver.SystemAlarmServiceReceiver"
android:exported="false" >
<intent-filter>
<action android:name="SYSTEM_TIMER_TRIGGER_ACTION" />
</intent-filter>
</receiver>

以上的代码需要写到AndroidMenifest.xml文件中,另外需要在你的应用程序里面写一个广播的接收器:

/**
* FileName: sdfsdfsdf.java
* @Description: TODO(用一句话描述该文件做什么)
* Copyright: Copyright(C) 2010-2011
* * @version V2.0
* Createdate: 2012-10-26 下午4:32:07
*
* Modification History:
* Date Author Version Discription
* -----------------------------------------------------------------------------------
* 2012-10-26 Qute_Android2.0
* Why & What is modified: <修改原因描述>
*/
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;

/**
* @ClassName: ReferralReceiver
* @Description:Google play Campaign Tracking 系统安装后,第一次启动之前监听时间,并获得URL中的参数信息
* @author: Matrix
* @date: 2012-10-26 下午4:32:07
*
*/
public class ReferralReceiver extends BroadcastReceiver {
public final static String[] EXPECTED_PARAMETERS = { "utm_source", "utm_medium", "utm_term", "utm_content", "utm_campaign" };
public final static String PREFS_FILE_NAME = "ReferralParamsFile";

@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;
}

final 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")) {
return;
}

String referrer = intent.getStringExtra("referrer");
if (referrer == null || referrer.length() == 0) {
return;
}

try { // Remove any url encoding
referrer = URLDecoder.decode(referrer, "x-www-form-urlencoded");
} catch (UnsupportedEncodingException e) {
return;
}

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

ReferralReceiver.storeReferralParams(context, referralParams);

Thread saveGoogleTrackingThread = new Thread() {

@Override
public void run() {
ReferralTracking googleTracking = new ReferralTracking();
googleTracking.uploadReferralInfo(referralParams);
}
};
saveGoogleTrackingThread.start();
}

/*
* 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;
}
}


官方文档:
https://developers.google.com/analytics/devguides/collection/android/devguide
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐