一、umeng产品介绍
1.开发组件
?社会化组件
集成多个应用平台的分享功能,类似于SHareSDK,但是功能不如ShareSDK强大,Umeng的强大在于数据统计。
?用户反馈组件
友盟提供的用户反馈组件和服务,可以帮助开发者与用户顺畅地进行双向互动。
?自动更新组件
如果发布的市场渠道比较多,更新版本的工作就比较繁琐。友盟提供的自动更新组件可以实现多渠道的同步更新,让用户及时使用最新的产品。
?消息推送
帮助开发者建立与用户直接沟通的渠道。将app的版本更新、通知等消息主动的推送给用户,让用户可以在第一时间内获取相关信息,有效提升用户的活跃度和忠诚度。
2.统计分析
这个是Umeng的优势和强大之处。
?统计分析
友盟统计分析平台是国内最大的移动开发应用统计分析平台。帮助应用开发商分析和统计用户属性和用户行为数据,以便开发商利用数据进行产品、运营、推广策略的决策。
?移动推广效果分析
友盟移动推广效果分析可以帮助开发者准确统计各个渠道的广告点击、激活、转化率、留存等数据,帮助开发者有效评估各个渠道的广告转化效果以及渠道价值。
?游戏统计分析
友盟游戏统计分析为很多游戏开发者提供了开箱即用的一站式解决方案,针对不同阶段的游戏运营需求,提供全方位的支持,无论是从用户获取,用户质量,还是用户行为,用户付费等,友盟都提供了标准的运营指标和模型来展开深度的追踪分析。
二、个人需求
正在开发的项目chinabuye已经在google play上线,为了统计用户数据信息,了解产品的使用情况以及用户的喜好,就需要用到数据统计。
一开始本来想使用google analytics做数据统计的,但是研究了几天,连集成都有问题。反映到测试部,测试部推荐使用adjust第三方数据统计,集成到项目中,这个集成挺快的,按照开发文档集成,挺顺利的,用了几个星期,当时项目也在做推广,数据量还是有的,测试部反映不是很好。
测试部要求还是使用google analytics进行数据统计,项目本身呢也是在google play上线的,使用google自带的数据统计功能,应该会挺好的。没办法,开始去研究谷歌数据统计,没想到还真的找出之前问题所在,研究出来了怎么使用google analytics进行数据统计了。
对此还是有点小小体会,现在拿出来分享一下。如果使用到了google services的相关功能,一定要先在开发账户中授权API,也就是有权去使用这项功能了。但是如何把项目和账户信息关联起来呢,这里就要用到SHA1指纹证书和包名,在开发者账户中注册一个API Key,将这个key配置到项目文件中。
<meta-data android:name="com.google.android.gms" android:value="AIzaSyDnmz6-aXCaLI7KCXYht13szZmShoyG2S4" /> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
那一段字符串就是API Key。这样就把项目和开发者账户关联在一起了。如果已经配置好了这个信息,还想用到google services的其它功能如:Googleplus、google analytics等,只需要授权开通API即可。
为了做推广,后期需要在其它市场上发布app,测试部要求还用google analytics进行数据统计,看了一下后台的结果,可怜的发现,google暂时只支持google play和Itunes俩个渠道,有图有真相:
没办法,只好使用第三方统计来统计各个渠道的数据了。于是,还是选择了友盟,在这之前,我已经推荐过使用友盟,但是测试部坚持使用国外的,没办法,还是来研究一下友盟的数据统计是怎么使用的。
三、添加应用和测试设备
1.添加应用信息
是为了获得api key,将项目和Umeng关联起来。在这之前,我需要注册一个友盟的账号。
添加应用时,应用名称无特殊要求,见名知意即可,建议用渠道+项目名称,容易区分。
2.添加测试设备
是为了拥有一个测试环境,将自己测试用的设备注册到测试设备列表中即可。这样,在测试设备上运行产生的数据,就不会污染真实的数据,而且测试数据是及时发送的,开发者可以及时的查看和验证测试数据。
添加测试设备信息的时候,需要用到一个Umeng要求的格式的设备信息的json字符串。这个字符串可以通过下载友盟客户端,用测试设备扫描二维码获得。也可以通过在测试设备上运行一个方法获得。
3.如何获得设备信息json字符串?
随意新建一个项目,在MainActivity中添加一个方法如下:
public static String getDeviceInfo(Context context) { try { org.json.JSONObject json = new org.json.JSONObject(); android.telephony.TelephonyManager tm = (android.telephony.TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); String device_id = tm.getDeviceId(); android.net.wifi.WifiManager wifi = (android.net.wifi.WifiManager) context.getSystemService(Context.WIFI_SERVICE); String mac = wifi.getConnectionInfo().getMacAddress(); json.put("mac", mac); if (TextUtils.isEmpty(device_id)) { device_id = mac; } if (TextUtils.isEmpty(device_id)) { device_id = android.provider.Settings.Secure.getString(context.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID); } json.put("device_id", device_id); return json.toString(); } catch (Exception e) { e.printStackTrace(); } return null; }
并调用这个方法
private static final String TAG = "Umeng"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.e(TAG, "json" +getDeviceInfo(this)); }
由于获取设备信息,是需要权限的,所以还需要配置权限信息:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
运行完后,在控制台,过滤一下,就可以获得设备信息,如下:
12-23 09:19:53.424: E/Umeng(1357): json<span style="color:#FF6666;">{"device_id":"000000000000000","mac":"08:00:27:80:7c:2a"}</span>
这样,一切准备工作就ok了!