Google Compaign-如何通过第三方软件推广你的android应用
一个成功的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";@Overridepublic void onReceive(Context context, Intent intent) {// Workaround for Android security issue:// http://code.google.com/p/android/issues/detail?id=16006try {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 encodingreferrer = URLDecoder.decode(referrer, "x-www-form-urlencoded");} catch (UnsupportedEncodingException e) {return;}// Parse the query string, extracting the relevant dataString[] 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() {@Overridepublic 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
更多相关文章
- 针对Android(安卓)模拟器启动慢的问题,长时间显示 Android(安卓)L
- Android基于IIS的APK下载(三)用JSON传输更新数据
- [置顶] 我的Android进阶之旅------>Android基于HTTP协议的多线程
- android-从音频数据库获取音乐数据
- Android中遍历View的几种方式
- 转:关于android多任务同时下载的一点心得
- Android研究院之应用开发线程池的经典使用
- Android(安卓)XML解析学习——Pull方式
- android的 网络下载和数据持久化