用户工具

站点工具


差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

razor:android-developer-guide [2015/09/15 10:12]
cobub
razor:android-developer-guide [2017/07/14 11:18]
行 1: 行 1:
-~~Title:​Android 开发者指南 - 开源移动应用运营平台 - 移动统计、移动推送解决方案 - Cobub 移动开发者中心~~ 
-{{description>​Android 开发者指南}} 
-{{keywords>​Cobub Razor,​开源移动应用分析,​移动分析,​移动应用分析,​开发者指南,​android}} 
-====== Android 开发者指南 ====== 
  
-====== 1   ​基本设置指南 ====== 
- 
-===== 1.1   ​注册应用,获取AppKey,下载开发文档 ===== 
- 
-登陆账号后,到管理后台注册应用,填写Android应用的相关信息。App建立成功后,可获得该App的AppKey以及最新的开发文档。 
- 
-===== 1.2   ​Android SDK使用步骤 ===== 
-==== 1.2.1   ​导入Cobub的SDK jar包 ==== 
- 
-打开下载文件中的sdk\android_sdk目录,​ 导入SDK项目到eclipse(或其它IDE),打包生成jar包。 
- 
-Eclipse用户右键工程根目录,选择Properties —>​Java ​ Build Path —>​libraries,然后点击Add External JARs…选择指向上述生成的jar包文件的路径,点击OK,即导入成功。 
- 
-==== 1.2.2    配置AndroidManifest.xml ==== 
-添加应用程序的AppKey(必须) 
-需要先添加应用程序获得的AppKey,将AppKey添加到AndroidManifest.xml的meta-data里。 
- 
-(注意:字符串必须为’**UMS_APPKEY**’) 
- 
-    * 添加权限**android.permission.INTERNET**(必须) 
-向服务器发送用户的统计分析数据。 
- 
-    * 添加权限**android.permission.READ_PHONE_STATE**(必须) 
-获取手机的相关状态信息 
- 
-    * 添加权限**android.permission.ACCESS_FINE_LOCATION**(必须) 
-获取当前用户的位置信息 
- 
-    * 添加权限**android.permission.ACCESS_WIFI_STATE**(必须) 
-访问Wi-Fi网络状态信息 
- 
-    * 添加权限**android.permission.GET_TASKS**(必须) 
-获取最近运行任务信息 
- 
-    * 添加权限**android.permission.WRITE_EXTERNAL_STORAGE**(必须) 
-向sdcard读写文件 
- 
-    * 添加权限**android.permission.READ_LOGS**(必须) 
-读取程序产生的错误日志 
- 
-    * 添加权限**android.permission.ACCESS_NETWORK_STATE**(必须) 
-访问GSM网络信息 
-AndroidManifest.xml 文件详细如下: 
-<code xml> 
-   <?​xml version="​1.0"​ encoding="​utf-8"?>​ 
-<​manifest xmlns:​android="​http://​schemas.android.com/​apk/​res/​android"​ 
-    package="​com.example.sdktest"​ 
-    android:​versionCode="​4"​ 
-    android:​versionName="​4.0.2"​ > 
- 
-    <​uses-sdk 
-        android:​minSdkVersion="​9"​ 
-        android:​targetSdkVersion="​17"​ /> 
- <​uses-permission android:​name="​android.permission.READ_PHONE_STATE"/>​ 
-    <​uses-permission android:​name="​android.permission.ACCESS_FINE_LOCATION"/>​ 
-    <​uses-permission android:​name="​android.permission.ACCESS_WIFI_STATE"/>​ 
-    <​uses-permission android:​name="​android.permission.GET_TASKS"/>​ 
-    <​uses-permission android:​name="​android.permission.WRITE_EXTERNAL_STORAGE"/>​ 
-    <​uses-permission android:​name="​android.permission.READ_LOGS"/>​ 
-    <​uses-permission android:​name="​android.permission.INTERNET"/>​ 
-    <​uses-permission android:​name="​android.permission.ACCESS_NETWORK_STATE"/>​ 
-    ​ 
-    <​application 
-        android:​allowBackup="​true"​ 
-        android:​icon="​@drawable/​ic_launcher"​ 
-        android:​label="​@string/​app_name"​ 
-        android:​theme="​@style/​AppTheme"​ > 
-        <​activity 
-            android:​name="​com.example.sdktest.MainActivity"​ 
-            android:​label="​@string/​app_name"​ > 
-            <​intent-filter>​ 
-                <action android:​name="​android.intent.action.MAIN"​ /> 
- 
-                <​category android:​name="​android.intent.category.LAUNCHER"​ /> 
-            </​intent-filter>​ 
-        </​activity>​ 
-        ​ 
-         <​meta-data android:​name="​UMS_APPKEY"​ android:​value="​填写获取到的key"/>​ 
-    </​application>​ 
- 
-</​manifest>​ 
-</​code>​ 
-==== 1.2.3   ​添加代码 ==== 
-添加引用 
-**import com.wbtech.ums.UmsAgent;​** 
- 
-  * 初始化Ums对象 
-在Android应用的入口Activity的onCreate()方法中调用UmsAgent.init(Context context, String url)方法,**注意这个方法应置于所有其他的方法之前**。url为自行安装的Cobub Razor服务端地址,注意地址以index.php?​结束,如"​http://​demo.cobub.com/​razor/​index.php?"​。 
- 
-  * 获取用户ID 
-在可以获得用户唯一标识符的地方(如登录界面)调用UmsAgent.bindUserid(Context context, String userID)方法,该方法会记录下该标示符(如app应用的用户名,手机号或邮箱等标识用户唯一性的id),该函数会将设备与用户id的关系发至服务端保存。 
- 
-  * 绑定tag 
-在可以获得用户tag的地方调用postTags(final Context context, final String tags),将tag数据传至后台,以后可用来对用户进行分类。 
- 
-  * 注册Activity 
-在Android应用的每个Activity的onResume方法中调用**UmsAgent.onResume(Context)**,​传入的参数为当前的context引用,这个方法将会自动地从AndroidManifest.xml文件里读取AppKey,​并记录下用户进入该页面的时间。不要传递全局的application context。 
-<code java> 
-protect void onResume(){ 
-   ​super.onResume();​ 
-   ​UmsAgent.onResume(this);​ 
-} 
-</​code>​ 
- 
-在Android应用的每个Activity的onPause方法中调用**UmsAgent.onPause(Context)**,​参数为当前activity的context,​该方法会记录下用户离开该页面的时间。 
-<code java> 
-protected void onPause(){ 
-   ​super.onPause();​ 
-   ​UmsAgent.onPause(this);​ 
-} 
-</​code>​ 
- 
-在onCreate()调用**UmsAgent.postClientData(Context con)**方法,参数为当前上下文对象,这样,客户端数据就可以上传数据到服务器了。 
-<code java> 
-public void onCreate(Bundle savedInstanceState) { 
- super.onCreate(savedInstanceState);​ 
- setContentView(R.layout.activity_main);​ 
- UmsAgent.postClientData(this);​ 
-} 
-</​code>​ 
-代码样例: 
-<code java> 
-public void onCreate(Bundle savedInstanceState) { 
-    super.onCreate(savedInstanceState);​ 
-    setContentView(R.layout.activity_main);​ 
-    button = (Button) findViewById(R.id.button1);​ 
-    UmsAgent.init(context,"​http://​192.168.1.204/​UMS/​index.php?"​);​ 
-    UmsAgent.update(this);​ 
- 
-    UmsAgent.setDefaultReportPolicy(this,​ SendPolicy.REALTIME);​ 
-    UmsAgent.bindUserid(this,​ "​cobub"​);​ 
- 
-    button.setOnClickListener(new OnClickListener() { 
- 
-       ​@Override 
-       ​public void onClick(View v) { 
-          // TODO Auto-generated method stub 
-          UmsAgent.onEvent(MainActivity.this,​ "​eventid"​);​ 
-          UmsAgent.onEvent(MainActivity.this,​ "​event_id",​ "​label",​ 30.0); 
-       } 
-    }); 
- 
-} 
-</​code>​ 
-1.2.4   ​集成说明 
- 
-建议在Android应用的所有的activity中都调用UmsAgent.onResume()和UmsAgent.onPause()方法。如果在某些activity中不添加也可以,但会造成相应Activity的使用时间等相关信息统计不到。 
- 
-==== 1.2.5   ​注意事项 ==== 
- 
-    * AppKey 
-确认AppKey已经正确的写入Androidmanifest.xml 
- 
-    * 权限 
-确认所需的权限都已经添加 
- 
-    * API使用 
-确认所有的Activity中都调用了onResume和onPause方法 
- 
-    * 联网检查 
-确认测试手机或者模拟器已成功连入网络 
- 
-====== 2   ​高级基本设置指南 ====== 
- 
-===== 2.1   ​错误报告 ===== 
- 
-SDK可以帮您捕捉用户在使用应用过程中出现的异常退出(FC),并将错误报告发送给服务器,错误报告包含应用程序版本、操作系统版本和设备型号以及程序出现异常时的Stacktrace,这些数据将帮助您调试应用程序的错误。我们提供两种方式报告错误信息,一种是我们自动捕获的错误信息,一种是开发者自己传递的错误 
- 
-前者,您需要在AndroidManifest.xml里面添加权限**android.permission.READ_LOGS**,​并且在程序的Main Activity(应用程序入口)的onCreate方法里调用UmsAgent.onError(Context) 
-<code java> 
-public void onCreate(Bundle savedInstanceState) { 
-   ​super.onCreate(savedInstanceState);​ 
-   ​setContentView(R.layout.activity_main);​ 
-   ​UmsAgent.onError(this);​ 
-</​code>​ 
- 
-后者需要开发者调用**UmsAgent.onError(Context,​String)**方法,在第二个参数中传入自己捕获的错误信息。 
- 
-===== 2.2   ​自定义事件 ===== 
- 
-除了基本统计分析功能外,SDK还支持您自定义的事件的统计分析,例如您可以统计广告点击次数或者视频被播放的次数等等,这里我们将提供几个简单而通用的接口: 
-<code java> 
-UmsAgent.onEvent(Context context,​String event_id)</​code>​ 
-在您需要发送事件报告的代码段,调用如下方法就可以向服务器发送事件记录,将统计event_id对应事件发送次数,变化趋势,例如广告点击,短信发送量等等。参数context为当前context的引用,event_id为当前统计事件的ID。 
- 
-比如,监测应用程序里广告的点击次数,事件ID为“ad_click”。那么需要在程序里每次广告点击时调用UmsAgent.onEvent(this,​“ad_click“)通知服务器一个广告点击事件发生。 
-<code java> 
-UmsAgent.onEvent(Context context,​String event_id,​String label)</​code>​ 
-除了能够统计event_id所对应事件的发生次数,变化趋势外,还能统计事件中具体标签所占的比例,label为当前标签,同样这里的event_id字符串中也不能有空格。 
- 
-例如:在应用程序中省份对应一个event_id,​每个城市对应一个label,这样我们可以再生成的统计表中看到不同城市的比例。 
- 
-对于程序中的某些可能被频繁触发的事件,开发者可以再程序中维护一个计数器,这样事件被多次触发只需要生成一个消息,这个消息包括该事件被触发的次数,这里我们重载了之前的两个接口: 
-<code java> 
-UmsAgent.onEvent(Context context,​String event_id,​int acc)</​code>​ 
-<code java> 
-UmsAgent.onEvent(Context context,​String event_id,​String label,int acc)</​code>​ 
-acc:对应事件被触发的次数。 
- 
-这里我们除了可以对某个事件的发生次数统计外,增加了一个针对事件下某一标签的价值的保存和统计。重载方法如下: 
-<code java> 
-UmsAgent.onEvent(Context context,​String event_id,​String label,​double value)</​code>​ 
-例如 event_id代表一个“下单”事件,那么label可以标记为某个“订单号”,而value就为该“订单号”的金额(即价值)。 
- 
-===== 2.3 调试 ===== 
- 
-Cobub Android SDK提供了调试的功能,提供尽可能多的日志信息,以确定可能出现的问题。 
-调用以下函数,可以打开调试功能,sdk所有上报的数据可以在logcat中显示。**注意:请在产品正式发布时,关闭该功能。** 
-<code java> 
-UmsAgent.setDebugEnabled(true);​ 
-</​code>​ 
- 
-Log的不同等级,可以通过以下函数设置: 
-<code java> 
-UmsAgent.setDebugLevel(UmsAgent.LogLevel);​ 
-</​code>​ 
-LogLevel分为Info,Debug,Warn,Error和Verbose。 
- 
-====== 3   ​应用程序更新 ====== 
- 
-===== 3.1   ​上传APK ===== 
- 
-这个功能将帮助您把新版的Android应用程序推送给用户,您只需修改AndroidManifest.xml中的VersionCode,并把应用程序的apk文件上传到服务器。 
- 
-===== 3.2   ​添加权限 ===== 
- 
-**android.permission.WRITE_EXTERNAL_STORAGE** 
- 
-===== 3.3   ​基本功能 ===== 
-在Android应用程序的入口Activity的onCreate()方法中调用**UmsAgent.update(this)**,应用程序将自动检测服务端是否有新的版本。 
-<code java> 
-public void onCreate(Bundle savedInstanceState) { 
-   ​super.onCreate(savedInstanceState);​ 
-   ​setContentView(R.layout.activity_main);​ 
-   ​UmsAgent.update(this);​ 
-} 
-</​code>​ 
-考虑到用户流量的限制,目前我们默认在Wi-Fi介入情况下才进行自动提醒。 
-===== 3.4   ​机制说明 ===== 
- 
-每次更新Android应用程序,您只需要修改VersionCode,把Android应用程序的apk文件上传到服务器。UmsAgent.update()方法会判断是否有新版应用程序,如果发现可更新的应用程序安装包,会提示用户是否更新。用户选择更新后,安装包会下载安装更新。(按照version code来检测是否需要更新) 
- 
-====== 4  数据发送 ====== 
- 
-===== 4.1   ​模式解释 ===== 
- 
-    * 启动时发送 
-应用程序每次只会在启动时向服务器发送一次消息,在应用程序过程中产生的所有消息都会在下次启动时候发送。如果应用程序启动时处在不联网状态,那么消息将会缓存在本地,下次再尝试发送。 
- 
-    * 实时发送(推荐使用) 
-应用程序每产生条消息时,就立即发送到服务器。这种方式使得计算更及时 
- 
-===== 4.2   ​设置发送模式 ===== 
-在Android应用程序的入口Activity中调用**UmsAgent.setDefaultReportPolicy(Context,​int)**,参数int可取值0或者1,其中1表示实时发送,0表示启动时发送。 
- 
-====== 5   ​使用在线配置功能 ====== 
-<code java> 
-UmsAgent.updateOnlineConfig(Context)</​code>​ 
-在Android应用程序的入口Activity的onCreate()方法中调用。SDK将联网检测您的在线配置,将这些信息保存在本地。你也可以通过下面的方法读取您的自定义参数。 
razor/android-developer-guide.txt · 最后更改: 2017/07/14 11:18 (外部编辑)