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,已经给我们提供了这样获得下载参数的方式,是通过安装广播来获得:
以上的代码需要写到AndroidMenifest.xml文件中,另外需要在你的应用程序里面写一个广播的接收器:
官方文档:
https://developers.google.com/analytics/devguides/collection/android/devguide
如果你是第一次了解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
相关文章推荐
- 超过7000款恶意软件通过Android第三方应用商店传播
- 超过7000款恶意软件通过Android第三方应用商店传播
- 案例:如何不通过第三方软件实现蓝牙与手机的内存卡交互
- afinal - afinal 是一个android的 orm 和 ioc 框架。通过afinal的finalAcitivity,finalBitmap,finalDB,finalHttp,开发android应用将更加简单。 - Google Project Hosting
- Android平台下Facebook,Google service, 新浪微博接入第三方应用SSO授权教程
- android获取应用信息_区分第三方预装软件
- 如何通过cocos creator发布原生android应用
- 通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统?
- 如何通过wifi调试手机上的android应用
- 如何通过无线网络真机调试android应用
- 如何在android应用程序中拷贝第三方资产目录下的数据库文件到应用私有目录下
- 通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统
- android开发仿照第三方app打开方式,如何将你的app显示在打开列表,并且将文件复制到你的app应用内
- android 如何通过包名打开其他应用
- Android应用软件开发如何盈利
- 通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统?
- 【Android应用开发】-(17)获取Google天气预报通过Xml和JSON解析数据
- 浅谈如何通过互联网推广软件产品
- Android应用打开第三方软件
- 1.6.2 如何下载Android Market的应用软件