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";

	@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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值