友盟如何添加测试设备
① android友盟集成测试需要生成apk么
看一些博客的流程是需要生成apk的,如下:
1、安装DeviceID.apk(用来查看设备信息专)
2、安装成功后,在设备上打开属(推荐 海马玩模拟器)
3、软件会自动获取到 IMEI 和WIFI MAC Address ,这两个值在友盟的后台需要用到
4、在友盟的 集成测试后台 中添加设备,如下图所示
输入获取到的device_id,mac,例如:{"device_id":"xxxx","mac_address":"xxxx"} 名称:填设备名称
注:前提是应用已集成友盟SDK
5、打包APK,安装好在模拟器上,启动APP,在友盟的后台日志就会实时刷新,如下图所示
② umeng ios推送怎么添加title和内容
可以在Debug模式下输出的logcat中看到Device Token,也可以使用下面的方法来获取Device Token。
帮用户确定是没有内替换包名导致的容错误,附上二个问题的答案
device token获取的办法:
String device_token = UmengRegistrar.getRegistrationId(context)
说明
Device Token为友盟生成的用于标识设备的id,长度为44位,不能定制和修改。同一台设备上每个应用对应的Device Token不一样。
获取Device Token的代码需要放在mPushAgent.enable();后面,注册成功以后调用才能获得Device Token。
如果返回值为空, 说明设备还没有注册成功, 需要等待几秒钟,同时请确保测试手机网络畅通。
③ 友盟统计的用户活跃度是怎么定义的
Android 统计分析 SDK使用指南
1. 建立App,下载SDK
登录你的帐号后,看到友盟的管理后台,点击"+添加新应用",进入新应用信息填写的页面。
App建立成功后,可以获得该App的AppKey,以及最新的开发指南和SDK文件。
可在 这里 下载SDK,包含开发文档,demo程序和jar包。
说明:在新应用信息填写中,请尽量填写真实的信息。您可以通过友盟统计分析平台的特性节省重复建立App的时间。
如果您要对App不同的发布渠道进行统计,不需要创建新App,请使用分发渠道分析,通过分发渠道分析,您可以更方便的对比数据。
2. 实现基本的使用基本统计实现本的页面跳转,机型,分辨率,地理位置 …的统计1. 导入umeng-sdk*.jar(简称SDK)下载最新版sdk的zip包,解压将其中的umeng-sdk.jar释放到本地目录,Eclipse用户右键您的工程根目录,选择Properties -> Java Build Path -> Libraries, 然后点击 Add External JARs... 选择指向 Analytics_Android_SDK_*.jar的路径,点击OK,即导入成功。
2. 配置 AndroidManifest.xml<manifest……><application ……> ……<activity ……/><meta-dataandroid:value="YOUR_APP_KEY"android:name="UMENG_APPKEY"></meta-data><meta-dataandroid:value="Channel ID"android:name="UMENG_CHANNEL"/></application><uses-sdkandroid:minSdkVersion="4"></uses-sdk><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission><uses-permissionandroid:name="android.permission.INTERNET"></uses-permission><uses-permissionandroid:name="android.permission.READ_PHONE_STATE"></uses-permission><uses-permissionandroid:name="android.permission.READ_LOGS"></uses-permission></manifest>说明:
META-DATA 用途
UMENG_APPKEY 用来定位该应用程序的唯一性。
UMENG_CHANNEL 用来标注应用推广渠道,区分新用户的来源来查看统计,您可以使用20位以内的英文和数字为渠道定名,替换value中的"Channel ID"。详见渠道统计。
权限 用途
INTERNET(必须) 允许应用程序联网,以便向我们的服务器端发送数据。
READ_PHONE_STATE(必须) 获取用户手机的IMEI,用来唯一的标识用户。(如果您的应用会运行在无法读取IMEI的平板上,我们会将mac地址作为用户的唯一标识,请添加权限: android.permission.ACCESS_WIFI_STATE )
ACCESS_NETWORK_STATE 检测网络状态,友盟SDK 1.6版本新增权限。
READ_LOGS 如果您想获得客户端crash的报告, 需要添加这个权限。具体见【使用错误报告】。
WRITE_EXTERNAL_STORAGE 如果您使用了友盟自动更新提醒功能,需添加这个权限,为了将更新的APK临时存在SD卡里。
3. 添加代码
添加引用: import com.umeng.analytics.MobclickAgent
注册 Activity: 在每个Activity的onResume方法中调用 MobclickAgent.onResume(Context), onPause方法中调用
MobclickAgent.onPause(Context)
publicvoid onResume() { super.onResume(); MobclickAgent.onResume(this);}publicvoid onPause() { super.onPause(); MobclickAgent.onPause(this);}API:public void onResume(Context context)
context 当前Activity的引用,这里请不要将全局的application context传入。
public void onPause(Context context)
context 当前Activity的引用,这里请不要将全局的application context传入。
API说明:
void onResume(Context context)
context 当前Activity引用
void onPause(Context context)
context 当前Activity引用
说明:
方法将会自动地从AndroidManifest.xml文件里读取Appkey。
确保在所有的activity中都调用 MobclickAgent.onResume() 和MobclickAgent.onPause()方法,这两个调用将不会阻塞应用程序的主线程,也不会影响应用程序的性能。
注意如果您的Activity之间有继承或者控制关系请不要同时在父和子Activity中重复添加onPause和onResume方法,否则会造成重复统计(eg.使用TabHost、TabActivity、ActivityGroup时)。
一个应用程序在多个activity之间连续切换时,将会被视为同一个session(启动)。
当用户两次使用之间间隔超过30秒时,将被认为是两个的独立的session(启动),例如用户回到home,或进入其他程序,经过一段时间后再返回之前的应用。
4. 测试
确认所需的权限都已经添加:INTERNET, READ_PHONE_STATE, (READ_LOGS, WRITE_EXTERNAL_STORAGE)
确认APPKEY已经正确的写入Androidmanifest.xml
确认所有的Activity中都调用了onResume和onPause方法
确认测试手机(或者模拟器)已成功连入网络
启动应用程序,几分钟之后您应该已经可以看到相应的报表.
3. 使用错误报告友盟统计分析工具,还可以帮助您捕捉用户在使用应用程序过程中出现的异常退出(FC), 并在应用程序下次启动时将错误报告发送给服务器。
1. 自动捕获异常退出(FC)
在AndroidManifest.xml里面添加权限android.permission.READ_LOGS
在程序的Main Activity(应用程序入口)的onCreate方法里调用MobclickAgent.onError(Context).
publicvoid onCreate(Bundle savedinstanceState) { super.onCreate(savedInstanceState); MobclickAgent.onError(this); ...}API:public void onError(Context context)
context 当前Activity的引用
说明:错误报告包含应用程序版本,操作系统版本和设备型号以及程序出现异常时的Stacktrace,这些数据将帮助您修正应用程序的Bug。
2. 手动发送错误报告如果您自己捕获了程序中的异常,但是依然希望,将这次异常信息发送到友盟的服务器,您可以调用下面的函数。
MobclickAgent.reportError(Context context,String error) API:public void reportError(Context context, String error)
context 当前Activity的引用
error 开发者手动捕获的错误信息
说明:手动发送的异常信息和自动捕获的异常信息一样,都会展示在错误报告面板。
4. 使用自定义事件除了基本统计分析功能外,我们还支持您自定义的事件分析,例如您可以统计游戏中通过不同关卡的人数,广告的点击次数或者视频被播放的次数等等。 使用自定义事件功能请先在网站应用管理后台(设置->编辑自定义事件)中添加相应的自定义事件后,服务器才会对相应的自定义事件请求进行处理。
1. 事件数量统计1. 在您希望跟踪的代码部分,调用如下方法:MobclickAgent.onEvent(Context context, String event_id);API:public void onEvent(Context context, String event_id)
context 当前Activity的引用
event_id 为当前统计的事件ID,注意要先在友盟网站上注册此事件ID。
示例:统计微博应用中“转发"事件发生的次数,那么在“转发"的函数里调用
MobclickAgent.onEvent(this, "Forward") 2. 记录事件的不同属性及取值,调用如下方法:MobclickAgent.onEvent(Context context, String event_id, Map<String,String>; map);API:public voidonEvent(Context context, String event_id, Map map)
context 当前Activity的引用
event_id 为当前统计的事件ID,注意要先在友盟网站上注册此事件ID。
map 为当前事件的属性和取值集合(key-value)
示例:MobclickAgent.onEvent(LoginActivity.this, "sinaLogin");
新浪用户登陆海知笔记
3. 考虑事件在一个属性上的取值,可以调用如下方法:MobclickAgent.onEvent(Context context, String event_id, String label);API:public void onEvent(Context context, String event_id, String label)
context 当前Activity的引用
event_id 为当前统计的事件ID,注意要先在友盟网站上注册此事件ID.
label 事件的一个属性描述
示例:统计游戏中“死亡"事件发生的关卡数,那么可以在死亡的函数里调用
MobclickAgent.onEvent(this, "player_dead","level");2. 事件时长统计有的事件是持续发生的,需要记录其持续的时间,这里提供两种解决方法。
1. 在事件开始和结束时分别调用onEventBegin和 onEventEnd两个函数。MobclickAgent.onEventBegin(Context context, String event_id);...MobclickAgent.onEventEnd(Context context, String event_id);API:public voidonEventBegin(Context context, String event_id)
public void onEventEnd(Context context, String event_id)
context 当前Activity引用
event_id 为当前统计的事件ID,注意要先在友盟网站上注册此事件ID.
public void onEventBegin(Context context, String event_id, String label)
public void onEventEnd(Context context, String event_id, String label)
context 当前Activity引用
event_id 为当前统计的事件ID,注意要先在友盟网站上注册此事件ID.
label 事件的一个属性描述
示例:跟踪播放音乐事件发生的总时间,在音乐播放开始时调用:
MobclickAgent.onEventBegin(this, "music_play");在音乐播放结束时调用:
MobclickAgent.onEventEnd(this, "music_play");2. 跟踪时长的事件包含多个属性,在事件开始和结束时分别调用onKVEventBegin和 onKVEventEnd两个函数MobclickAgent.onKVEventBegin(Context context, String event_id, Map<String,String> map, String ekvFlag);...MobclickAgent.onKVEventEnd(Context context, String event_id, String ekvFlag);API:public void onKVEventBegin(Context context, String event_id, Map map, String ekvFlag)
context 当前Activity引用
event_id 为当前统计的事件ID,注意要先在友盟网站上注册此事件ID.
map 为当前事件的属性和取值集合(key-value)
ekvFlag 事件标示符
public void onKVEventEnd(Context context, String event_id, String ekvFlag)
context 当前Activity引用
event_id 为当前统计的事件ID,注意要先在友盟网站上注册此事件ID
ekvFlag 事件标示符,ekvFlag 和 event_id 一起标示一个唯一事件,并不会被统计;对于同一个事件,在onKVEventBegin和onKVEventEnd 中要传递相同的event_id 和 flag
示例跟踪每种类型的音乐播放了多久,在音乐播放开始时调用
Map<String,String> music = new HashMap<String,String>(); music.put("type", "popular"); music.put("artist", "JJLin"); music.put("User_status", "registered");MobclickAgent.onKVEventBegin(this, "music",music,"m7");在音乐播放结束时调用:
MobclickAgent.onKVEventEnd(this, "music",music,"m7");3. 自己计算并上传event时长,在您想跟踪时长的代码部分,调用如下方法:MobclickAgent.onEventDuration(Context context, String event_id, long ration);orMobclickAgent.onEventDuration(Context context, String event_id,String label, long ration)orMobclickAgent.onEventDuration(Context context, String event_id, Map<String, String> map, long ration)API:public void onEventDuration(Context context, String event_id, long ration)
public void onEventDuration(Context context, String event_id,String label, long ration)
context 当前Activity引用
event_id 为当前统计的事件ID,注意要先在友盟网站上注册此事件ID
label 事件的一个属性描述
ration 事件持续时长,单位毫秒,您需要手动计算并传入时长,作为事件的时长参数
public void onEventDuration(Context context, String event_id, Map map, long ration)
context 当前Activity引用
event_id 为当前统计的事件ID,注意要先在友盟网站上注册此事件ID
map 为当前事件的属性和取值集合(key-value)
ration 事件持续时长,单位毫秒,您需要手动计算并传入时长,作为事件的时长参数
说明
时长是友盟统计的一个新功能,使用过程中可能会出现一些常见的错误,开发者应该尽量的避免,这里有一些可能出错的案例。
每个event的key不能超过10个,event ID、map中key和value都不能使用特殊字符,且长度不能超过255个字符(否则将截取前255个字符),“id", “ts", “"是保留字段,不能作为event ID及key的名称
5. 使用分发渠道分析有时需要统计应用程序的分发渠道,例如有多少用户来从联想乐园下载了您的应用,又有多少用户通过Google android market下载到您的应用程序。您只需要在AndroidManifest.xml里添加meta-data,并将 value属性修改为对应的发布渠道名。
配置AndroidManifest.XML添加下面代码
<application ……><activity ……/><meta-dataandroid:value="Channel ID"android:name="UMENG_CHANNEL"/></application>当然,这需要您在不同渠道发布应用程序时,重新编译打包。
说明
不要改变'UMENG_CHANNEL',修改'Channel ID'为您的渠道名称,注意不能是纯数字(eg.value="AndroidMarket")。
每台设备只记录第一次统计到的渠道,您如果在测试的时候发现渠道统计到的设备数量不增加,很可能是因为您用同一个设备修改过渠道号,您换一台设备测试即可。
6. 使用在线配置功能这个功能目前可以帮你在网站上动态配置两种类型的参数:
自定义key-value型的键值对
数据发送策略
在程序的入口Activity的OnCreate()方法中调用
publicvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MobclickAgent.updateOnlineConfig(this);}API:public voipdateOnlineConfig(Context context)
④ 友盟-推送-IOS-IOS如何获取设备的 DeviceToken
方法1:在 中添加抄如下语袭句
NSLog(@"%@",[[[[deviceToken description] : @"<" withString: @""] : @">" withString: @""] : @" " withString: @""]);
方法2:在 didFinishLaunchingWithOptions:NSDictionary *)launchOptions中 开启UMessage的Log,然后寻找deviceToken的字段
//for log
[UMessage setLogEnabled:YES];
以上任一方式都可在控制台获取一个长度为64的测试设备的DeviceToken串
⑤ 友盟推送的测试模式什么
友盟消息推送提供了“测试模式”和“正式模式”两种推送方式。“正式模式”,顾名思义,在该模式下消息会发送给线上真实用户;而”测试模式”是为便于开发者测试,允许开发者向测试库中添加测试设备,消息只会发送给测试库中的设备,以免影响线上用户。试想一种场景,如果你的App已经上线了,开发人员在测试的时候随便编辑了一条test消息,一不小心发给了线上真实用户(小编相信大家的手机上一定收到过类似的莫名其妙的通知消息),作为用户,不知道这条消息到底意味着什么,对这个App的认可度可能会下降,更严重的是用户会直接卸载app。这个时候就体现出了测试模式的价值了,只有添加到测试库中的设备才会收到测试消息。
那既然测试模式这个设计如此有意义,该如何使用呢?很简单,先获取到设备的device token(不知道怎么获取devicetoken?android,IOS),之后在网站上添加测试设备(见图1)。接下来就可以随意来发测试消息了。当在测试模式下测试没问题了,想把这条测试消息发到正式模式,但重新在“正式模式”下编辑一遍总归还是有些麻烦,没关系,我们很贴心的在测试模式下设计了“模式转换”的功能(见图2),会自动跳转到正式模式下发送消息。根据我们后台的统计,90%以上的用户在发送正式消息之前,会先选择在测试模式下发消息,测试没问题之后,再在正式模式下发送消息到线上用户。
需要注意的是,对于Android平台来说,测试设备是正式设备的一个子集;而对于iOS平台而言,测试模式对应APNs的开发环境(sandbox), 正式模式对应APNs的生产环境(prod),测试设备和正式设备完全隔离,所以在iOS平台下发送消息,一定要注意开发/生产证书的问题。下一次,我们会重点给大家介绍苹果的开发和生产证书。
⑥ ios umeng 推送 怎么测试
可以在Debug模式下输出的logcat中看到Device Token,也可以使用下面的方法来获取Device Token。
帮用户确定是没有替回换包名导致的错误,附答上二个问题的答案
device token获取的办法:
String device_token = UmengRegistrar.getRegistrationId(context)
说明
Device Token为友盟生成的用于标识设备的id,长度为44位,不能定制和修改。同一台设备上每个应用对应的Device Token不一样。
获取Device Token的代码需要放在mPushAgent.enable();后面,注册成功以后调用才能获得Device Token。
如果返回值为空, 说明设备还没有注册成功, 需要等待几秒钟,同时请确保测试手机网络畅通。
⑦ 友盟-推送-Andorid-“标签(tag)”是什么,如何使用自定义标签
友盟推送支持的筛选维度有“版本”、“渠道”、“地域”、“用户活跃度”等,还有一个叫做“标签”,“标签”是什么含义呢?该如何使用呢? 今天我们和大家聊聊这个话题。
先解释下什么是“标签”:
提问者问到的“标签”其实指的是App开发者结合自有的业务逻辑对该App的终端用户打的“标签”,我们也称tag,这些“标签”是App自己的标签(举个简单的例子,App根据终端用户是否注册,可以给用户打上“注册账号”和“未注册账号”的标签),第三方开发平台是无法直接提供这样的标签的(但是可以开放打标签接口,让App开发者把标签数据回传到第三方服务器上),因为具体的业务逻辑是在App这边的。 第三方开放平台能提供的维度也仅是在用户协议范围内可以收集的字段,比如“版本”、“渠道”、“机型”、“操作系统”等信息,这些维度可以认为是静态的维度,其实App开发者自己也可以收集这些字段,只不过交给第三方平台来做数据收集、存储和计算更为方便,有兴趣的读者可以了解一下友盟推送收集的用户协议字段: 友盟 | 隐私政策。
下面我们给大家提供一些有代表性的垂直领域App结合自有业务逻辑给终端用户打标签的思路,希望对大家有帮助:
体育类App可以根据终端用户看过的节目类型,给终端用户打上“足球”、“篮球”等类目标签。
儿童类App可以根据儿童的年龄分布,给终端用户打上“0~1岁”、“1~3”岁、“3~5”岁之类的年龄结构标签。
电商类App可以根据用户的购买习惯推算出用户性别,给终端用户打上“男”、“女”标签。
餐饮类App可以根据用户的下单记录以及点评,给终端用户打上“川菜”、“粤菜”、“韩国料理”等标签。
……
App自有的标签体系对精细化运营来说是必需的,App运营人员可以根据这些用户标签来做精准推送、广告定向投放、活动邀请等运营活动。既然标签这么有用,接下来我们和大家聊聊如何在友盟推送中使用“标签”维度,顺带也回答了提问者的第二个问题。
再来谈谈如何在友盟推送中使用“标签”:
上文提到过虽然第三方开放平台无法直接给App开发者提供“标签”维度,但是可以开放打标签的接口,让开发者把标签数据回传到第三方服务器上。下面给大家讲讲友盟推送开放接口的形式,以及开发者如何使用开放的接口来把标签数据回传到友盟服务器端:
图中,黄色部分表示友盟推送提供的模块儿,绿色部分部分表示App开发者自己的模块儿。
方式1(推荐方式): App端直接调用友盟推送SDK提供的tag接口,由SDK负责把标签数据回传到友盟后端服务器。 后期tag(标签)的存储、计算等逻辑都由友盟后端服务器来负责。这种方式是推荐的方式,绝大部分开发者都采用这种打tag的方式。SDK端提供的调用接口有如下几个:
mPushAgent.getTagManager().
添加标签
public Result add(String... tags)
删除标签
public Result delete(String... tags)
清除所有标签
public void reset()
获取服务器端的所有标签
public List<String> list()
具体用法请参照我们的集成文档: 友盟消息推送Android文档
方式2: 开发者在自己的服务器上通过调用友盟服务器端提供的开放接口将该标签数据回传到友盟后端服务器,效果和方式1一样。 有这种需求的开发者不是太多,所以我们的文档上没有把这个接口列出来,有需求的开发者可以联系msg-support at umeng dot com来获取这个接口的文档。
通过方式1或者方式2,开发者就把和自己App业务相关的标签属性维度放在友盟平台上了,这样友盟推送间接的提供了“标签”维度,和其它静态维度一样,“标签”可以和这些维度一块儿来使用(App自身业务逻辑结合友盟数据属性),也可以单独来使用(纯App自身业务逻辑),开发者可以利用这些综合维度来做更精准的推送,从而获得更好的推送效果了。关于“精准推送”,感兴趣的读者可以参考我之前写过的一篇文章: 友盟陈漠沙:“精准推送”是怎样炼成的? - 友盟专栏 - 知乎专栏
开发者在使用标签的过程中,可能会碰到这样的问题,就是明明在SDK端已经调用了标签接口,但是在友盟推送后台网站上并没有显示出刚刚打的标签。这里需要和大家解释一下为什么“标签”不能及时展现在我们的网站上,其实还是要区分一下“正式模式”和“测试模式”两种case的,在“测试模式”下,测试设备的标签是及时出现在网站后台的;在“正式模式下”,大概会有5~10分钟的延迟。这是因为数据量规模决定的,测试设备数量少,所以我们能做到实时处理,线上真实设备数据量庞大,计算节点在计算的时候,会有一定的延迟。 所以开发者在集成测试阶段,如果要测试tag功能的话,建议先把测试的设备在“测试模式”下添加为测试设备。关于“测试模式”的更多介绍,请参考友盟推送“测试模式”介绍。
最后,欢迎大家关注友盟消息推送的官方微博账号"友盟推送",我们的官微会定期和大家share一些技术干货。
⑧ 友盟-推送-Andorid-“Alias”是什么, 该如何使用
不少开发者在使用友盟推送的时候,对的用法和使用场景不是太理解,这篇文章给大家普及一下Alias相关的内容:
我们先从产品层面上对Alias的设计思想说起,这样能帮助大家更好的理解和使用Alias。在我们官方文档里面,Alias的定义是: "设备别名,将别名与设备做绑定,便于部分App开发者使用自有账号或者第三方账号体系来做消息推送"。定义里面涉及到几个重要的点:
首先,Alias是和设备绑定的,友盟推送对设备的标识是device-token,也就是说,Alias与友盟device-token是绑定对应的。从这个层面来讲,Alias可以是开发者的账号系统(包括第三方账号体系),也可以是开发者自己对设备的标识体系(如安卓设备上的imei+mac),或者是其它的开发者能保证唯一性的ID体系,这些都是由开发者自己决定的。提问中问到是否可以把Alias理解为账号系统,狭义上讲可以这么理解,实际上,友盟推送赋予了Alias更多的灵活性。
其次,结合到越来越多的App提供第三方社交平台账号登陆的特点,我们在Alias的设计上也充分考虑到了账号的需求,所以在官方文档中,我们提到在使用Alias的时候,必须要关联一个alias_type, 如果是开发者自定义的alias(包括自有账号系统),这个alias_type是可以随便定义的;如果是用了第三方账号系统,我们预提供了20多种主流的开放平台的账号类型,如新浪微博(SINA_WEIBO), 微信(WEIXIN)等。填写alias_type的作用是,友盟推送会和友盟社会化分享服务做数据上的打通,更好的从数据层面发挥价值,为开发者服务。说到这里,我们再次精确一下Alias的概念,即别名(Alias)+别名类型(alias_type)与设备的绑定。
最后,我们来聊聊Alias的用法,这个也是开发者们非常关心的。我们Alias的绑定操作是在SDK端提供的,开发者只需要在SDK端调用mPushAgent.addAlias(alias, alias_type)这个接口,友盟推送SDK就负责把alias+alias_type与友盟的device-token做绑定,将绑定关系回传到友盟后端服务器。之后开发者就可以根据自有业务逻辑,调用友盟服务器端接口,根据Alias来做个性化推送了。由此来看,Alias的作用是能让开发者结合自有的账号(此处需要理解成广义的账号)体系,来做更个性化、精细化的推送。下图是一个简化的Alias架构,帮助大家理解Alias的用法:
关于Alias的相关接口,我们的友盟消息推送Android文档提供了非常丰富的接口供开发者调用:
[Java] 纯文本查看 复制代码
?
1
2
3
4
5
添加Alias
mPushAgent.addAlias("[email protected]", ALIAS_TYPE.SINA_WEIBO);
移除Alias
mPushAgent.removeAlias("[email protected]", ALIAS_TYPE.SINA_WEIBO);
注意,在App服务器端调用友盟服务器端接口做推送的时候,一定不要忘了传入alias_type的参数。
关于Alias基本的话题差不多解释清楚了,最后再和大家深入聊聊Alias用作账号系统涉及到多账号多设备登陆的问题,这个时候,alias_type就派上用场了,相信看过这个章节后,大家会对我们Alias的设计机制有更深入的理解:
1. 多个账号登陆同一台设备,具体还要细分为两种case:
如果是同一个alias_type,那么以最后绑定的alias为准。举个例子: (alias_A, alias_type_A)先做了绑定,之后(alias_B, alias_type_A)后做了绑定,那么,如果这个时候给alias_A发消息,设备是不会收到消息的,因为在友盟推送后台device-token是和最后登陆的alias_B做绑定的。这个在实际业务场景中也成立,最后一个登录的账号才是这台设备当前真实的用户。
如果不是同一个alias_type, 那么前后两个绑定的alias均生效。举个例子: (alias_A, alias_type_A)先做了绑定,之后是(alias_B, alias_type_B)做了绑定,那么不管是给alias_A发消息,还是给alias_B发消息,设备均能收到消息。因为alias_type变化之后,友盟推送后台确定不了这是同一个用户(eg: 同一个用户使用不同平台的账号登录),还是不同的用户(不同的用户,使用不同的账号登录),友盟只能简单的判定这两个不同alias_type的账号是两个不同的账号。这种场景是需要特别注意的,建议开发者在实际的集成过程中尽量避免这种使用场景。
2. 同一个账号登录多台设备:
这种情况处理起来就比较简单了,即一个alias和多个device-token做绑定。如果给这个alias发消息,我们会给所有和这个alias绑定的设备都去推送消息。
开发者在具体使用过程中,可能会想到Alias做了绑定(addAlias)或者解除(removeAlias)之后,多长时间能在后端生效。 Alias接口,是一个实时的接口,不管是在“测试模式”下,还是在“正式模式”下,都是实时生效的。不过在集成测试阶段,还是建议开发者把手头的设备添加到"测试模式"下的测试设备集合里面,关于“测试模式”的更多介绍,请参考友盟推送“测试模式”介绍。
⑨ 怎么在友盟上添加一个产品只能支持1个平台呢多个平台怎么办
Windows 8 是由微软公司开发的,具有革命性变化的操作系统。该系统旨在让人们的日常电脑操作更加简单和快捷,为人们提供高效易行的工作环境。Windows8将支持来自Intel、AMD和ARM的芯片架构。也就是说,下一代Windows系统还将支持来自NVIDIA、高通和德州仪器等合作伙伴的ARM系统。微软表示,这一决策意味着Windows系统开始向更多平台迈进,包括平板机。测试历史 win8 M3 2010年10月:Windows 8 Milestone1 (build7850) 2011年1月11日:Windows 8 Milestone2 (build7955) 2011年2月28日:Windows 8 Milestone3(build7980) beta版本正在研发中,预计将于2011年9月份问世 依照现在微软对于Win8的开发速度,Windows 8最快将于2012年6-7月发布RTM版 版本注解 Milestone:具有“里程碑”之意,是操作系统添加功能的阶段 Beta:系统软件评测版(有“发送反馈信息”链接) Preview Release To Manufacture :发布制造商预览版,在“发布候选版”之前编译完 Release Candidate (RC):发布候选版 Release To Manufacture (RTM):发布制造商版 谈到微软操作系统的命名规则, 微软Windows平台策略全球副总裁Mike Nash表示,微软之前在中国的命名有三种方法:一种是按照年份来命名,如我们熟悉的Windows 98、Windows 2000.但微软并不是每年都会推出新品,所以这种方法并不合适,微软后来放弃了这种命名方法. 微软后来采用了比较有内涵的命名方式,如Vista, 在英文中,“Vista”的含义就是“令人愉悦的风景”.但是,类似于Vista的命名外行人看不懂,所以他们现在也放弃了这种命名方法. 最后,微软采用了最简单的方法,就是用版本号来命名,这也是为什么外界猜测Windows 7下一个版本命名为Windows 8的原因.如今这一说法得到了梁念坚的证实. 该系统由微软剑桥研究院和苏黎世理工学院联合全新开发,专为现在和未来的多核心(Multi-Core)、众核心(Many-Core)处理器环境而设计,通过在各个核心之间建立一条网络总线来从根本上提升系统效率和性能。和很多媒体的误传不同,Barrelfish跟Windows 8并没有什么直接关系,二者属于不同的项目。 在硬件水平飞速发展和性能需求不断提升的同时,现有操作系统的内核架构已经无法很好地高效利用相应资源,特别是存在资源共享机制的局限。Barrelfish则通过自己的总线在处理器核心之间传递信息,并采用类似数据库的方式来跟踪可用硬件资源。 Barrelfish其实并非什么秘密研究项目,相关开发人员已经在全球奔波了一年时间,进行宣传讲解,不过直到本月中旬,第一批代码才公布出来。 据一位听过演讲的相关人士解释,Barrelfish不再通过驱动程序将应用软件与硬件设备完全隔离,而是存在一个某种数据库,其中可以找到大量有关硬件的低级信息。系统内核则是单线程和非抢占的。调度和信息传递相结合,信息到达后就直接激活等待中的线程。它还用到了一些微核(microkernel)概念,在保护空间内运行驱动程序。 有消息称这套系统会是完全免费、开源的,因为据开发人员说,它包含了一些“遵从不同BSD类开源协议”的BSD第三方库,但考虑到微软和开源社区的长期对立关系,这一点还有待观察,而且现在发布的原型是有微软和苏黎世理工学院的版权的。 编辑本段早期规划 Windows 8已经进入早期规划阶段,在Vista发布两年多后,微软终于向我们展示了下一代操作系统Windows 7,据悉,微软已正式发布Windows 7 ,那么Windows 7的下一代操作系统(暂且称之为Windows 8)处于什么阶段呢? 关于这个问题,微软Windows Server团队高级项目主管Soni Meinke接受了相关采访,虽然并未透露过多细节,但是她表示下下一代Windows操作系统已经进入了计划编制阶段,而她的工作就是和不同的客户及合作伙伴进行沟通,与他们探讨该计划和策略。 Meinke说:“我一直在积极参与Windows 8早期阶段的策划,主要是和客户进行沟通,我们基本上是直接面见客户,深入地了解他们对Windows服务器今后的需求,Windows 8的具体开发日期还不确定,目前大部分的精力仍然放在Windows 7上。在Windows 7的开发周期中我们始终在听取合作伙伴的意见,而且我们希望将这一策略纳入Windows 8的早期规划中。” 她补充说,“TAP(Technology Adoption Program)团队和Windows Server客户咨询团队也是我们这一组的成员。”虽然微软目前并没有公布任何关于其下下一代Windows服务器和操作系统的细节,不过很高兴看到他们已经开始了它的筹划工作,看起来,微软从Vista的失利中吸取的经验为其后版本操作系统的开发起到了一定的指导作用。 就在不久之前,网络上出现过一些关于windows8的相关消息。 这些仅仅只是少量的泄露图片,具体是不是真的还很难说。 目前,可以确定的就是,微软已经开始着手Windows 8的研发,并计划于2012年正式发布Winodws 8,而GUI和NUI的变革将会成为Windows 8改进的重点。 编辑本段全新功能 虽然Windows 7发布了,不过微软早在windows 7发布之前就开始了Windows 8的前期准备工作,而且一些重大功能改进也即将进行开发。 在一则招聘启事中微软表示:“下一代Windows的全新关键性功能正在开发,其中包括Cluster支持和一种新的复制方式,其核心引擎也将被重写,以提供大量的性能改进。我们也将很快启动Windows 8的开发,其功能革新中将包括分支机构的文件存取方式的彻底改变。” Windows 8中的诸多创新功能都和分布式文件文件系统复制(DFSR)服务有关,多个复制引擎将会通过多个服务器执行工作进而简化文件夹同步过程。从这里可以看出,这一功能改进不仅涉及到Windows 8客户端还和Windows 8服务器有关。 在Windows 7和Windows Server 2008 R2中微软为加快企业网络中大型文件的访问和存储提供了BranchCache功能,不知道Windows 8中所提的这一功能是否只是BranchCache的进一步研发。 微软另外还补充道:“DFSR是微软最重要的文件复制引擎,也是我们分支机构策略和文件服务器的主要组成部分,它可以覆盖数千台服务器并复制数百TB的数据。我们已经在Windows Live Messenger、Windows Meeting Spaces(Vista)和Windows Server 2008中Branch Office的文件共享功能中应用到了该技术。通过使用先进的On-The-Wire差分压缩,DFSR技术节省了微软IT人员和客户近80%的宽带占用。” 去年3月份微软Windows Server团队高级项目主管Soni Meinke在接受采访时透露,Windows 8已经进入早期规划阶段,而近日微软管理和服务器部门技术人员Anders Vindberg证实,微软目前已经创建了12支Windows 8开发团队。在这12支开发团队中,大约有8至9个团队正在围绕管理功能进行开发。 早在去年4月份的时候,微软就开始公开为Windows 8招聘管理功能和分布式文件系统复制(DFSR)引擎开发人员,并且透露Windows 8文件存取方式将彻底改变。下一代Windows的全新关键性功能包括Cluster支持和一种新的复制方式,核心引擎也将被重写。 再来看一些近期出现的关于Windows 8功能改进方面的消息:休眠/恢复/集成编程接口将进行调整,使得新系统可以整合和利用新的TLZ文件压缩引擎;新增PatchGuard内核补丁防护,该功能可以强化系统安全,阻止黑客和病毒对系统内核的攻击。 关于Windows 8服务器方面,还记得微软曾在去年计划将Dublin应用程序服务器整合到Windows Server中,但是没有指明具体时间,根据最近的一些资料,Windows 8的服务器版本中将整合Dublin,除此之外微软也正在为Windows 8服务器版本开发新的功能使其成为更强大的数据中心操作系统,这也符合微软目前极力推广公众云托管和个人云服务的计划。 编辑本段用户期望更佳的网络支持 Windows Vista中的网络和共享中心以及网络映射功能很不错,当然,Windows 7中的HomeGroup功能也很不错。但Windows 7跟Linux和Mac组成网络时,那将会是很痛苦的一件事。因此,希望WIndows 8能立即识别并与Linux和Mac组成网络。 提供真正的家庭多媒体共享支持 我们都知道,电视很快就将走向衰退了,而电脑,尤其是有了Windows Media Center的存在,在家庭娱乐中的地位会越来越重要。因此,我认为在Windows 8有必要实现与电视、音箱以及其他多媒体设备之间的共享。当然,现在也可以实现这样的功能,但过程有点过于复杂了。 改进任务栏和多任务切换 Windows 7中的超级任务栏可以说是Mac Dock和Windows传统任务栏的结合体。它既可以用来放置程序快捷方式,也可以用来切换窗口。但有时候这两者会很容易就混淆。因此,我觉得在Windows 8中,微软应该再次对其进行改进,将这两者更完美地结合在一起。 更智能、更人性化 Windows 8应该实现可以根据用户习惯对系统自身进行调节。比如,如果系统检测到用户经常使用某个控制面板项目,那么,系统应该将此项目置顶显示。当然,这只是个例子,在这方面。微软可以实现很多想法。 运行Mac OS X Mac OS X允许用户安装Windows作为双系统,微软应该同样也允许在Windows中安装Mac OS X作为双系统。 编辑本段改进特性全面走向声控操作系统 使用过Windows Vista和Windows7的声控功能吗?如果你用过,一定会对其强大的声音识别能力印象深刻吧。如果你还没有用过,那还不赶紧去体验一下?如果你和我一样,藏着一个疑问,那就问出来吧:如此强大的声控功能,为什么没有大规模运用,而仅仅是龟缩在辅助功能中呢?我想:可能是这项声控技术还在研究阶段,尚没有完全走向成熟,一旦成熟,立刻就会推出市场,成为微软操作系统的新招牌。Windows8,就有可能是第一个大规模运用声控的操作系统。 全面走向触屏操作系统 多点触屏技术是Windows7的一个亮点。但很可惜,市场上没有这么多且廉价的支持多点触屏的显示器,使得这个亮点形同虚设。而且从视频上来看,手指也仅仅第二个鼠标而已。Windows的界面历来都是为鼠标而设计的,怎么可能会适合手指呢?所以,我们又把希望寄托在了Windows8身上,因为Windows8的推出,有可能正赶上多点触屏显示器大规模上市。只要微软坚持在Windows8里加入并强化多点触屏技术,Windows 8就有可能成为一款真正的触屏操作系统。 向云迈进 “近几年云计算被炒得火热,各种以云平台为依托的云服务,如雨后春笋般不断的吸引着观众的眼球,似乎云时代的来临变得不可阻止。云计算的特点是弱化了终端功能,以互联网为根基,为用户提供各种在线云服务,凡是可以连接互联网的终端,基本都可以通过在线租赁各种软硬件资源从而实现各种应用,这种可租赁的资源甚至包括操作系统,而微软的Windows Azure云计算操作系统便是在这样一种需求中诞生的。 云计算模式使得未来的云时代需要一种基于Web的操作系统,这种系统依靠分布在各地的数据中心提供运行平台,而应用这种系统平台则通过互联网。这种架构模式使得在未来的云计算时代,强大的终端将变得不再必要。我们甚至仅仅依靠一个显示屏、一个鼠标和一个键盘就可是实现今天终端能实现的一切功能,当然,这种情况是需要很高的网络带宽才能实现的。微软的Windows Azure的云操作系统,就是在这样一种思路下开发并发布的,该系统也是微软试图像今天主宰个人操作系统市场一样,主宰未来的云操作系统市场,并为未来云计算之战抓取战略筹码。” Windows 8将会推出云服务器版,这表示Windows 8的云服务器版将有可能会是Windows Azure,这代表Windows 8会与云计算有直接关系,因为这项技术有太多诱人之处(最大的诱惑大概就是,云计算能显著减少操作系统对计算机的配置要求,Windows系列的操作系统一直有配置要求过高的诟病),让传统操作系统与云共处也不是一个坏主意吧。 USB 3.0 目前有消息称,新一代的Windows 7 SP1已经开始支持USB 3.0接口。这条消息已经得到Intel的证实,它会随Windows 7 SP1让操作系统源生支持。这是一个好消息。而坏消息是Windows 8就要来了。微软预计Windows 8将会在2012年发布……这是否会导致世界末日还是未知之数。不过Intel的史蒂夫·皮德森认为,像是USB 3.0这样的超高速接口显然需要一定的时间酝酿市场份额和普及率。至少要再过1至2年才能达成主流。尽管有明显迹象表明今年的USB 3.0设备也会井喷,但是整个行业现在还是USB 2.0的天下。 Internet Explorer 9 据国外媒体报道新的Internet Explorer 9不会支持Windows 8,但是Internet Explorer 10会原生支持Windows 8。目前Internet Explorer 9只支持Vista和windows 7系统。 全新反盗版机制 据微软透露,该公司将在Windows 8新版操作系统中实施新的反盗版措施,同时,细心的媒体还发现微软开始招募高级开发人员,开发“新的反黑客机制”和驱动,以防止非法复制。 微软希望实行新反盗版措施的原因是现有的技术并不能满足预期,Windows 7精心设计的反盗版防线很容易就被攻破。 此外,微软还在招募一些有关Windows SKU的员工队伍,该工作是用来确定不同的Windows版本应该保留哪些内容,这表明微软依然希望通过发布类似于“家庭版”“商业版”等不同SKU来细分Windows用户。 目前有关于Windows 8反盗版的措施细节还并不清楚,但微软暗示它将采取非常不同的方式,完成时间大约是2011年夏季。 全平台支持 在CES 2011上,微软总裁鲍尔默表示Windows 8将会支持全平台,也就是说将来Windows 8将可以在ARM平台上运行。微软推出这个举措可以说是迫不得已,眼看着Google和苹果慢慢蚕食着移动设备市场,而自己却无能为力,实在是非常着急,因此微软才推出这个功能,希望用Windows 8扳回一局。 编辑本段全新界面 Windows 8 操作系统的32位和64位版本的用户界面不会使用同一个,而是两个不同的界面。Windows8italia指出,Windows 8的主要用户界面代号为“风”(Wind),仅支持拥有独立显卡的高端笔记本和台式机。“风”界面需要约170MB的显存,而且只能在64位Windows 8系统上激活,拥有完整3D效果。 编辑本段推出时间 根据惯例和已知的微软官方产品路线图,Windows 8将在2012年面世。令人好奇的是微软会如何定性Windows 8,Windows 7被微软定性为重大发布(Major Release),Windows Server 2008 R2是中间性升级(Release Update),而Windows 8 Server则定性在重大发布,那么Windows 8是否也是一次重大发布呢?大家知道Windows 7既有64位版本又有32位版本,不过Windows Server 2008 R2却只有64位版本,这也表明了微软摒弃32位的打算,早在去年8月份时微软通信部主管Christopher Flores就表示,在64位CPU架构的推动下,64位的Windows将成为操作系统主流。 现在,Windows 8已经完成了M1的编译,系统界面与Windows 7还相差不多。按照微软的开发计划Windows 8 M3已经正在开发中,将于2011年春季完成M3的开发。2011年下半年将发布Windows 8 beta,而Windows 8 RTM则将要在2012年夏季或秋季发布。 编辑本段官方表态微软博客称Windows 8还有两年才能上市 10月25日消息,微软在荷兰官网发表博客称,Windows 8还有两年才能上市。 不久前,Windows 7刚刚迎来一岁生日。微软也在美国网站刊文,称Windows 7销售一年已经出售2.4亿份,但没有提到Windows 8何时上市。对于荷兰网站提到的时间,微软代表周日拒绝,也没有对博客进行详细说明,此后微软官方删除了该文章,拒绝向外透露任何关于下一代操作系统的信息。 微软Windows 7部门高级副总裁史蒂文辛诺夫斯基(Steven Sinofsky)在谈及未来的Windows计划时,没有作出。尽管微软桌面团队已经缄默,不过微软服务器团队去年说,Windows Server的推出要到2012年,这会晚于桌面版。 据今年6月的一份资料显示,下一版本的Windows会包括一个应用商店,类似于苹果和其它移动设备商。上周,苹果在发布会上表示会将应用商店植入到Mac机中,时间在90天内。 资料还显示微软会提高系统启动时间,提高节能效率,并将与制造商紧密合作对各自的电脑进行更好的区分。尽管这些都是必须做的事,不过,如果微软无法确定苹果的举动,Windows 8可能需要两年之久才能推出。 Windows 7于2009年10月推出,在Vista推出两年半之后。微软CEO鲍尔默曾承诺,以后的Windows发布时间不会再推迟。 微软证实Windows 8云同步功能 此前,云同步一直是猜测的,如今微软已证实该功能。然而,直到未来公开测试版发布,我们才能真正看见它(因为这实际上需要一个Windows Live ID来激活内部服务)。这同时也表明微软将在Windows 8中加入更多其他产品。 泄秘事件 在NVIDIA发布的驱动NVIDIA Quadro显卡265.90驱动中,有网友发现了其中对Windows8的支持,同时也泄露了两个秘密:仍支持32位和Windows NT 6.2的系统内核Windows Update:微软加入了一个选项让用户决定是否允许自动打完补丁自动重启。 Windows 8的Windows Update截图研发消息 Windows 8可能出现的新功能 1.更好的备份; 2.windows store应用程序商店; 3.人脸识别登陆; 4.更佳的语音识别; 5.更佳的防病毒能力; 6.更快的开机速度。 泄漏截图系伪造 年中发布beta 据国外媒体报道,微软官方表示将于2011年1月初公布Windows 8信息,日前有外媒泄漏了Windows 8截图,后经证实为Windows Small Business Server 2011 RTM截图。 目前,微软公司正在对Windows 8进行dogfood(内部测试)。同时,微软已经与处理器和显卡合作商共享了Windows 8开发计划。 不过,微软官方对Windows 8开发一直闭口不谈。根据以往的开发惯例,微软很可能将在Windows 7正式上市(2009年10月22日)3年后发布Windows 8。 来自可信渠道的消息称,Windows 8已经结束Milestone 1开发阶段,2011年上半年Windows 8将由M2阶段进入M3阶段。 Embedded嵌入式系统
⑩ 友盟统计怎么算新增用户 android
Android 统计分析 SDK使用指南
1. 建立App,下载SDK
登录你的帐号后,看到友盟的管理后台,点击"+添加新应用",进入新应用信息填写的页面。
App建立成功后,可以获得该App的AppKey,以及最新的开发指南和SDK文件。
可在 这里 下载SDK,包含开发文档,demo程序和jar包。
说明:在新应用信息填写中,请尽量填写真实的信息。您可以通过友盟统计分析平台的特性节省重复建立App的时间。
如果您要对App不同的发布渠道进行统计,不需要创建新App,请使用分发渠道分析,通过分发渠道分析,您可以更方便的对比数据。
2. 实现基本的使用基本统计实现本的页面跳转,机型,分辨率,地理位置 …的统计1. 导入umeng-sdk*.jar(简称SDK)下载最新版sdk的zip包,解压将其中的umeng-sdk.jar释放到本地目录,Eclipse用户右键您的工程根目录,选择Properties -> Java Build Path -> Libraries, 然后点击 Add External JARs... 选择指向 Analytics_Android_SDK_*.jar的路径,点击OK,即导入成功。
2. 配置 AndroidManifest.xml<manifest……><application ……> ……<activity ……/><meta-dataandroid:value="YOUR_APP_KEY"android:name="UMENG_APPKEY"></meta-data><meta-dataandroid:value="Channel ID"android:name="UMENG_CHANNEL"/></application><uses-sdkandroid:minSdkVersion="4"></uses-sdk><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission><uses-permissionandroid:name="android.permission.INTERNET"></uses-permission><uses-permissionandroid:name="android.permission.READ_PHONE_STATE"></uses-permission><uses-permissionandroid:name="android.permission.READ_LOGS"></uses-permission></manifest>说明:
META-DATA 用途
UMENG_APPKEY 用来定位该应用程序的唯一性。
UMENG_CHANNEL 用来标注应用推广渠道,区分新用户的来源来查看统计,您可以使用20位以内的英文和数字为渠道定名,替换value中的"Channel ID"。详见渠道统计。
权限 用途
INTERNET(必须) 允许应用程序联网,以便向我们的服务器端发送数据。
READ_PHONE_STATE(必须) 获取用户手机的IMEI,用来唯一的标识用户。(如果您的应用会运行在无法读取IMEI的平板上,我们会将mac地址作为用户的唯一标识,请添加权限: android.permission.ACCESS_WIFI_STATE )
ACCESS_NETWORK_STATE 检测网络状态,友盟SDK 1.6版本新增权限。
READ_LOGS 如果您想获得客户端crash的报告, 需要添加这个权限。具体见【使用错误报告】。
WRITE_EXTERNAL_STORAGE 如果您使用了友盟自动更新提醒功能,需添加这个权限,为了将更新的APK临时存在SD卡里。
3. 添加代码
添加引用: import com.umeng.analytics.MobclickAgent
注册 Activity: 在每个Activity的onResume方法中调用 MobclickAgent.onResume(Context), onPause方法中调用
MobclickAgent.onPause(Context)
publicvoid onResume() { super.onResume(); MobclickAgent.onResume(this);}publicvoid onPause() { super.onPause(); MobclickAgent.onPause(this);}API:public void onResume(Context context)
context 当前Activity的引用,这里请不要将全局的application context传入。
public void onPause(Context context)
context 当前Activity的引用,这里请不要将全局的application context传入。
API说明:
void onResume(Context context)
context 当前Activity引用
void onPause(Context context)
context 当前Activity引用
说明:
方法将会自动地从AndroidManifest.xml文件里读取Appkey。
确保在所有的activity中都调用 MobclickAgent.onResume() 和MobclickAgent.onPause()方法,这两个调用将不会阻塞应用程序的主线程,也不会影响应用程序的性能。
注意如果您的Activity之间有继承或者控制关系请不要同时在父和子Activity中重复添加onPause和onResume方法,否则会造成重复统计(eg.使用TabHost、TabActivity、ActivityGroup时)。
一个应用程序在多个activity之间连续切换时,将会被视为同一个session(启动)。
当用户两次使用之间间隔超过30秒时,将被认为是两个的独立的session(启动),例如用户回到home,或进入其他程序,经过一段时间后再返回之前的应用。
4. 测试
确认所需的权限都已经添加:INTERNET, READ_PHONE_STATE, (READ_LOGS, WRITE_EXTERNAL_STORAGE)
确认APPKEY已经正确的写入Androidmanifest.xml
确认所有的Activity中都调用了onResume和onPause方法
确认测试手机(或者模拟器)已成功连入网络
启动应用程序,几分钟之后您应该已经可以看到相应的报表.
3. 使用错误报告友盟统计分析工具,还可以帮助您捕捉用户在使用应用程序过程中出现的异常退出(FC), 并在应用程序下次启动时将错误报告发送给服务器。
1. 自动捕获异常退出(FC)
在AndroidManifest.xml里面添加权限android.permission.READ_LOGS
在程序的Main Activity(应用程序入口)的onCreate方法里调用MobclickAgent.onError(Context).
publicvoid onCreate(Bundle savedinstanceState) { super.onCreate(savedInstanceState); MobclickAgent.onError(this); ...}API:public void onError(Context context)
context 当前Activity的引用
说明:错误报告包含应用程序版本,操作系统版本和设备型号以及程序出现异常时的Stacktrace,这些数据将帮助您修正应用程序的Bug。
2. 手动发送错误报告如果您自己捕获了程序中的异常,但是依然希望,将这次异常信息发送到友盟的服务器,您可以调用下面的函数。
MobclickAgent.reportError(Context context,String error) API:public void reportError(Context context, String error)
context 当前Activity的引用
error 开发者手动捕获的错误信息
说明:手动发送的异常信息和自动捕获的异常信息一样,都会展示在错误报告面板。
4. 使用自定义事件除了基本统计分析功能外,我们还支持您自定义的事件分析,例如您可以统计游戏中通过不同关卡的人数,广告的点击次数或者视频被播放的次数等等。 使用自定义事件功能请先在网站应用管理后台(设置->编辑自定义事件)中添加相应的自定义事件后,服务器才会对相应的自定义事件请求进行处理。
1. 事件数量统计1. 在您希望跟踪的代码部分,调用如下方法:MobclickAgent.onEvent(Context context, String event_id);API:public void onEvent(Context context, String event_id)
context 当前Activity的引用
event_id 为当前统计的事件ID,注意要先在友盟网站上注册此事件ID。
示例:统计微博应用中“转发"事件发生的次数,那么在“转发"的函数里调用
MobclickAgent.onEvent(this, "Forward") 2. 记录事件的不同属性及取值,调用如下方法:MobclickAgent.onEvent(Context context, String event_id, Map<String,String>; map);API:public voidonEvent(Context context, String event_id, Map map)
context 当前Activity的引用
event_id 为当前统计的事件ID,注意要先在友盟网站上注册此事件ID。
map 为当前事件的属性和取值集合(key-value)
示例:MobclickAgent.onEvent(LoginActivity.this, "sinaLogin");
新浪用户登陆海知笔记
3. 考虑事件在一个属性上的取值,可以调用如下方法:MobclickAgent.onEvent(Context context, String event_id, String label);API:public void onEvent(Context context, String event_id, String label)
context 当前Activity的引用
event_id 为当前统计的事件ID,注意要先在友盟网站上注册此事件ID.
label 事件的一个属性描述
示例:统计游戏中“死亡"事件发生的关卡数,那么可以在死亡的函数里调用
MobclickAgent.onEvent(this, "player_dead","level");2. 事件时长统计有的事件是持续发生的,需要记录其持续的时间,这里提供两种解决方法。
1. 在事件开始和结束时分别调用onEventBegin和 onEventEnd两个函数。MobclickAgent.onEventBegin(Context context, String event_id);...MobclickAgent.onEventEnd(Context context, String event_id);API:public voidonEventBegin(Context context, String event_id)
public void onEventEnd(Context context, String event_id)
context 当前Activity引用
event_id 为当前统计的事件ID,注意要先在友盟网站上注册此事件ID.
public void onEventBegin(Context context, String event_id, String label)
public void onEventEnd(Context context, String event_id, String label)
context 当前Activity引用
event_id 为当前统计的事件ID,注意要先在友盟网站上注册此事件ID.
label 事件的一个属性描述
示例:跟踪播放音乐事件发生的总时间,在音乐播放开始时调用:
MobclickAgent.onEventBegin(this, "music_play");在音乐播放结束时调用:
MobclickAgent.onEventEnd(this, "music_play");2. 跟踪时长的事件包含多个属性,在事件开始和结束时分别调用onKVEventBegin和 onKVEventEnd两个函数MobclickAgent.onKVEventBegin(Context context, String event_id, Map<String,String> map, String ekvFlag);...MobclickAgent.onKVEventEnd(Context context, String event_id, String ekvFlag);API:public void onKVEventBegin(Context context, String event_id, Map map, String ekvFlag)
context 当前Activity引用
event_id 为当前统计的事件ID,注意要先在友盟网站上注册此事件ID.
map 为当前事件的属性和取值集合(key-value)
ekvFlag 事件标示符
public void onKVEventEnd(Context context, String event_id, String ekvFlag)
context 当前Activity引用
event_id 为当前统计的事件ID,注意要先在友盟网站上注册此事件ID
ekvFlag 事件标示符,ekvFlag 和 event_id 一起标示一个唯一事件,并不会被统计;对于同一个事件,在onKVEventBegin和onKVEventEnd 中要传递相同的event_id 和 flag
示例跟踪每种类型的音乐播放了多久,在音乐播放开始时调用
Map<String,String> music = new HashMap<String,String>(); music.put("type", "popular"); music.put("artist", "JJLin"); music.put("User_status", "registered");MobclickAgent.onKVEventBegin(this, "music",music,"m7");在音乐播放结束时调用:
MobclickAgent.onKVEventEnd(this, "music",music,"m7");3. 自己计算并上传event时长,在您想跟踪时长的代码部分,调用如下方法:MobclickAgent.onEventDuration(Context context, String event_id, long ration);orMobclickAgent.onEventDuration(Context context, String event_id,String label, long ration)orMobclickAgent.onEventDuration(Context context, String event_id, Map<String, String> map, long ration)API:public void onEventDuration(Context context, String event_id, long ration)
public void onEventDuration(Context context, String event_id,String label, long ration)
context 当前Activity引用
event_id 为当前统计的事件ID,注意要先在友盟网站上注册此事件ID
label 事件的一个属性描述
ration 事件持续时长,单位毫秒,您需要手动计算并传入时长,作为事件的时长参数
public void onEventDuration(Context context, String event_id, Map map, long ration)
context 当前Activity引用
event_id 为当前统计的事件ID,注意要先在友盟网站上注册此事件ID
map 为当前事件的属性和取值集合(key-value)
ration 事件持续时长,单位毫秒,您需要手动计算并传入时长,作为事件的时长参数
说明
时长是友盟统计的一个新功能,使用过程中可能会出现一些常见的错误,开发者应该尽量的避免,这里有一些可能出错的案例。
每个event的key不能超过10个,event ID、map中key和value都不能使用特殊字符,且长度不能超过255个字符(否则将截取前255个字符),“id", “ts", “"是保留字段,不能作为event ID及key的名称
5. 使用分发渠道分析有时需要统计应用程序的分发渠道,例如有多少用户来从联想乐园下载了您的应用,又有多少用户通过Google android market下载到您的应用程序。您只需要在AndroidManifest.xml里添加meta-data,并将 value属性修改为对应的发布渠道名。
配置AndroidManifest.XML添加下面代码
<application ……><activity ……/><meta-dataandroid:value="Channel ID"android:name="UMENG_CHANNEL"/></application>当然,这需要您在不同渠道发布应用程序时,重新编译打包。
说明
不要改变'UMENG_CHANNEL',修改'Channel ID'为您的渠道名称,注意不能是纯数字(eg.value="AndroidMarket")。
每台设备只记录第一次统计到的渠道,您如果在测试的时候发现渠道统计到的设备数量不增加,很可能是因为您用同一个设备修改过渠道号,您换一台设备测试即可。
6. 使用在线配置功能这个功能目前可以帮你在网站上动态配置两种类型的参数:
自定义key-value型的键值对
数据发送策略
在程序的入口Activity的OnCreate()方法中调用
publicvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MobclickAgent.updateOnlineConfig(this);}API:public voipdateOnlineConfig(Context context)