該文檔適用于Cobub Razor 0.7版本。
登陸賬號后,到管理后臺注冊應用,填寫Android應用的相關信息。App建立成功后,可獲得該App的AppKey以及最新的開發文檔。
打開下載文件中的sdk\android_sdk目錄, 導入SDK項目到eclipse(或其它IDE),打包生成jar包。
Eclipse用戶右鍵工程根目錄,選擇Properties —>Java Build Path —>libraries,然后點擊Add External JARs…選擇指向上述生成的jar包文件的路徑,點擊OK,即導入成功。
添加應用程序的AppKey(必須) 需要先添加應用程序獲得的AppKey,將AppKey添加到AndroidManifest.xml的meta-data里。
(注意:字符串必須為’UMS_APPKEY’)
向服務器發送用戶的統計分析數據。
獲取手機的相關狀態信息
獲取當前用戶的位置信息
訪問Wi-Fi網絡狀態信息
獲取最近運行任務信息
向sdcard讀寫文件
讀取程序產生的錯誤日志
訪問GSM網絡信息 AndroidManifest.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>
添加引用 import com.wbtech.ums.UmsAgent;
在Android應用的入口Activity的onCreate()方法中調用UmsAgent.init(Context context, String url)方法,注意這個方法應置于所有其他的方法之前。url為自行安裝的Cobub Razor服務端地址,注意地址以index.php?結束,如“http://demo.cobub.com/razor/index.php?”。
在可以獲得用戶唯一標識符的地方(如登錄界面)調用UmsAgent.bindUserid(Context context, String userID)方法,該方法會記錄下該標示符(如app應用的用戶名,手機號或郵箱等標識用戶唯一性的id),該函數會將設備與用戶id的關系發至服務端保存。
在可以獲得用戶tag的地方調用postTags(final Context context, final String tags),將tag數據傳至后臺,以后可用來對用戶進行分類。
在Android應用的每個Activity的onResume方法中調用UmsAgent.onResume(Context),傳入的參數為當前的context引用,這個方法將會自動地從AndroidManifest.xml文件里讀取AppKey,并記錄下用戶進入該頁面的時間。不要傳遞全局的application context。
protect void onResume(){ super.onResume(); UmsAgent.onResume(this); }
在Android應用的每個Activity的onPause方法中調用UmsAgent.onPause(Context),參數為當前activity的context,該方法會記錄下用戶離開該頁面的時間。
protected void onPause(){ super.onPause(); UmsAgent.onPause(this); }
在onCreate()調用UmsAgent.postClientData(Context con)方法,參數為當前上下文對象,這樣,客戶端數據就可以上傳數據到服務器了。
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); UmsAgent.postClientData(this); }
代碼樣例:
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); } }); }
1.2.4 集成說明
建議在Android應用的所有的activity中都調用UmsAgent.onResume()和UmsAgent.onPause()方法。如果在某些activity中不添加也可以,但會造成相應Activity的使用時間等相關信息統計不到。
確認AppKey已經正確的寫入Androidmanifest.xml
確認所需的權限都已經添加
確認所有的Activity中都調用了onResume和onPause方法
確認測試手機或者模擬器已成功連入網絡
SDK可以幫您捕捉用戶在使用應用過程中出現的異常退出(FC),并將錯誤報告發送給服務器,錯誤報告包含應用程序版本、操作系統版本和設備型號以及程序出現異常時的Stacktrace,這些數據將幫助您調試應用程序的錯誤。我們提供兩種方式報告錯誤信息,一種是我們自動捕獲的錯誤信息,一種是開發者自己傳遞的錯誤
前者,您需要在AndroidManifest.xml里面添加權限android.permission.READ_LOGS,并且在程序的Main Activity(應用程序入口)的onCreate方法里調用UmsAgent.onError(Context)
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); UmsAgent.onError(this);
后者需要開發者調用UmsAgent.onError(Context,String)方法,在第二個參數中傳入自己捕獲的錯誤信息。
除了基本統計分析功能外,SDK還支持您自定義的事件的統計分析,例如您可以統計廣告點擊次數或者視頻被播放的次數等等,這里我們將提供幾個簡單而通用的接口:
UmsAgent.onEvent(Context context,String event_id)
在您需要發送事件報告的代碼段,調用如下方法就可以向服務器發送事件記錄,將統計event_id對應事件發送次數,變化趨勢,例如廣告點擊,短信發送量等等。參數context為當前context的引用,event_id為當前統計事件的ID。
比如,監測應用程序里廣告的點擊次數,事件ID為“ad_click”。那么需要在程序里每次廣告點擊時調用UmsAgent.onEvent(this,“ad_click“)通知服務器一個廣告點擊事件發生。
UmsAgent.onEvent(Context context,String event_id,String label)
除了能夠統計event_id所對應事件的發生次數,變化趨勢外,還能統計事件中具體標簽所占的比例,label為當前標簽,同樣這里的event_id字符串中也不能有空格。
例如:在應用程序中省份對應一個event_id,每個城市對應一個label,這樣我們可以再生成的統計表中看到不同城市的比例。
對于程序中的某些可能被頻繁觸發的事件,開發者可以再程序中維護一個計數器,這樣事件被多次觸發只需要生成一個消息,這個消息包括該事件被觸發的次數,這里我們重載了之前的兩個接口:
UmsAgent.onEvent(Context context,String event_id,int acc)
UmsAgent.onEvent(Context context,String event_id,String label,int acc)
acc:對應事件被觸發的次數。
這里我們除了可以對某個事件的發生次數統計外,增加了一個針對事件下某一標簽的價值的保存和統計。重載方法如下:
UmsAgent.onEvent(Context context,String event_id,String label,double value)
例如 event_id代表一個“下單”事件,那么label可以標記為某個“訂單號”,而value就為該“訂單號”的金額(即價值)。
Cobub Android SDK提供了調試的功能,提供盡可能多的日志信息,以確定可能出現的問題。 調用以下函數,可以打開調試功能,sdk所有上報的數據可以在logcat中顯示。注意:請在產品正式發布時,關閉該功能。
UmsAgent.setDebugEnabled(true);
Log的不同等級,可以通過以下函數設置:
UmsAgent.setDebugLevel(UmsAgent.LogLevel);
LogLevel分為Info,Debug,Warn,Error和Verbose。
這個功能將幫助您把新版的Android應用程序推送給用戶,您只需修改AndroidManifest.xml中的VersionCode,并把應用程序的apk文件上傳到服務器。
android.permission.WRITE_EXTERNAL_STORAGE
在Android應用程序的入口Activity的onCreate()方法中調用UmsAgent.update(this),應用程序將自動檢測服務端是否有新的版本。
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); UmsAgent.update(this); }
考慮到用戶流量的限制,目前我們默認在Wi-Fi介入情況下才進行自動提醒。
每次更新Android應用程序,您只需要修改VersionCode,把Android應用程序的apk文件上傳到服務器。UmsAgent.update()方法會判斷是否有新版應用程序,如果發現可更新的應用程序安裝包,會提示用戶是否更新。用戶選擇更新后,安裝包會下載安裝更新。(按照version code來檢測是否需要更新)
應用程序每次只會在啟動時向服務器發送一次消息,在應用程序過程中產生的所有消息都會在下次啟動時候發送。如果應用程序啟動時處在不聯網狀態,那么消息將會緩存在本地,下次再嘗試發送。
應用程序每產生條消息時,就立即發送到服務器。這種方式使得計算更及時
在Android應用程序的入口Activity中調用UmsAgent.setDefaultReportPolicy(Context,int),參數int可取值0或者1,其中1表示實時發送,0表示啟動時發送。
UmsAgent.updateOnlineConfig(Context)
在Android應用程序的入口Activity的onCreate()方法中調用。SDK將聯網檢測您的在線配置,將這些信息保存在本地。你也可以通過下面的方法讀取您的自定義參數。