Cobub Razor
Cobub Toaster
其它鏈接
這是本文檔舊的修訂版!
登陸賬號(hào)后,到管理后臺(tái)注冊(cè)應(yīng)用,填寫Android應(yīng)用的相關(guān)信息。App建立成功后,可獲得該App的AppKey以及最新的開發(fā)文檔。
打開放在服務(wù)端的android_sdk, 導(dǎo)入android_sdk到eclipse,打包生成的bin\classes下com文件夾為com.wbkit1.0.jar。
Eclipse用戶右鍵工程根目錄,選擇Properties —>Java Build Path —>libraries,然后點(diǎn)擊Add External JARs…選擇指向 com.wbkit1.0.jar的路徑,點(diǎn)擊OK,即導(dǎo)入成功。
添加應(yīng)用程序的AppKey(必須) 需要先添加應(yīng)用程序獲得的AppKey,將AppKey添加到AndroidManifest.xml的meta-data里。
(注意:字符串必須為’UMS_APPKEY’)
向服務(wù)器發(fā)送用戶的統(tǒng)計(jì)分析數(shù)據(jù)。
獲取手機(jī)的相關(guān)狀態(tài)信息
獲取當(dāng)前用戶的位置信息
訪問Wi-Fi網(wǎng)絡(luò)狀態(tài)信息
獲取最近運(yùn)行任務(wù)信息
向sdcard讀寫文件
讀取程序產(chǎn)生的錯(cuò)誤日志
訪問GSM網(wǎng)絡(luò)信息 AndroidManifest.xml 文件詳細(xì)如下:
<?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應(yīng)用的入口Activity的onCreate()方法中調(diào)用UmsAgent.setBaseURL(String url)方法,注意這個(gè)方法應(yīng)置于所有其他的方法之前。
在可以獲得用戶唯一標(biāo)識(shí)符的地方調(diào)用UmsAgent.bindUserIdentifier(String userID)方法,該方法會(huì)記錄下該標(biāo)示 符,以確定某一用戶在使用該應(yīng)用。該方法后需要調(diào)用UmsAgent.postClientData(Context con)方法(稍后介紹)才能將 數(shù)據(jù)上傳至服務(wù)器,否則只在本地保存該用戶的標(biāo)示符記錄。
在可以獲得用戶tag的地方調(diào)用postTags(final Context context, final String tags),將tag數(shù)據(jù)傳至后臺(tái),以后可用來對(duì)用戶進(jìn)行分類。
在Android應(yīng)用的每個(gè)Activity的onResume方法中調(diào)用UmsAgent.onResume(Context),傳入的參數(shù)為當(dāng)前的context引用,這個(gè)方法將會(huì)自動(dòng)地從AndroidManifest.xml文件里讀取AppKey,并記錄下用戶進(jìn)入該頁面的時(shí)間。不要傳遞全局的application context。
protect void onResume(){ super.onResume(); UmsAgent.onResume(this); }
在Android應(yīng)用的每個(gè)Activity的onPause方法中調(diào)用UmsAgent.onPause(Context),參數(shù)為當(dāng)前activity的context,該方法會(huì)記錄下用戶離開該頁面的時(shí)間。
protected void onPause(){ super.onPause(); UmsAgent.onPause(this); }
在onCreate()調(diào)用UmsAgent.postClientData(Context con)方法,參數(shù)為當(dāng)前上下文對(duì)象,這樣,客戶端數(shù)據(jù)就可以上傳數(shù)據(jù)到服務(wù)器了。
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.setBaseURL("http://192.168.1.204/UMS/index.php?"); UmsAgent.update(this); UmsAgent.onError(this); UmsAgent.setDefaultReportPolicy(this, 1); UmsAgent.bindUserIdentifier(this, "xd.."); UmsAgent.postClientData(this); 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應(yīng)用的所有的activity中都調(diào)用UmsAgent.onResume()和UmsAgent.onPause()方法。如果在某些activity中不添加也可以,但會(huì)造成相應(yīng)Activity的使用時(shí)間等相關(guān)信息統(tǒng)計(jì)不到。
確認(rèn)AppKey已經(jīng)正確的寫入Androidmanifest.xml
確認(rèn)所需的權(quán)限都已經(jīng)添加
確認(rèn)所有的Activity中都調(diào)用了onResume和onPause方法
確認(rèn)測(cè)試手機(jī)或者模擬器已成功連入網(wǎng)絡(luò)
SDK可以幫您捕捉用戶在使用應(yīng)用過程中出現(xiàn)的異常退出(FC),并將錯(cuò)誤報(bào)告發(fā)送給服務(wù)器,錯(cuò)誤報(bào)告包含應(yīng)用程序版本、操作系統(tǒng)版本和設(shè)備型號(hào)以及程序出現(xiàn)異常時(shí)的Stacktrace,這些數(shù)據(jù)將幫助您調(diào)試應(yīng)用程序的錯(cuò)誤。我們提供兩種方式報(bào)告錯(cuò)誤信息,一種是我們自動(dòng)捕獲的錯(cuò)誤信息,一種是開發(fā)者自己傳遞的錯(cuò)誤
前者,您需要在AndroidManifest.xml里面添加權(quán)限android.permission.READ_LOGS,并且在程序的Main Activity(應(yīng)用程序入口)的onCreate方法里調(diào)用UmsAgent.onError(Context)
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); UmsAgent.onError(this);
后者需要開發(fā)者調(diào)用UmsAgent.onError(Context,String)方法,在第二個(gè)參數(shù)中傳入自己捕獲的錯(cuò)誤信息。
除了基本統(tǒng)計(jì)分析功能外,SDK還支持您自定義的事件的統(tǒng)計(jì)分析,例如您可以統(tǒng)計(jì)廣告點(diǎn)擊次數(shù)或者視頻被播放的次數(shù)等等,這里我們將提供幾個(gè)簡(jiǎn)單而通用的接口:
UmsAgent.onEvent(Context context,String event_id)
在您需要發(fā)送事件報(bào)告的代碼段,調(diào)用如下方法就可以向服務(wù)器發(fā)送事件記錄,將統(tǒng)計(jì)event_id對(duì)應(yīng)事件發(fā)送次數(shù),變化趨勢(shì),例如廣告點(diǎn)擊,短信發(fā)送量等等。參數(shù)context為當(dāng)前context的引用,event_id為當(dāng)前統(tǒng)計(jì)事件的ID。
比如,監(jiān)測(cè)應(yīng)用程序里廣告的點(diǎn)擊次數(shù),事件ID為“ad_click”。那么需要在程序里每次廣告點(diǎn)擊時(shí)調(diào)用UmsAgent.onEvent(this,“ad_click“)通知服務(wù)器一個(gè)廣告點(diǎn)擊事件發(fā)生。
UmsAgent.onEvent(Context context,String event_id,String label)
除了能夠統(tǒng)計(jì)event_id所對(duì)應(yīng)事件的發(fā)生次數(shù),變化趨勢(shì)外,還能統(tǒng)計(jì)事件中具體標(biāo)簽所占的比例,label為當(dāng)前標(biāo)簽,同樣這里的event_id字符串中也不能有空格。
例如:在應(yīng)用程序中省份對(duì)應(yīng)一個(gè)event_id,每個(gè)城市對(duì)應(yīng)一個(gè)label,這樣我們可以再生成的統(tǒng)計(jì)表中看到不同城市的比例。
對(duì)于程序中的某些可能被頻繁觸發(fā)的事件,開發(fā)者可以再程序中維護(hù)一個(gè)計(jì)數(shù)器,這樣事件被多次觸發(fā)只需要生成一個(gè)消息,這個(gè)消息包括該事件被觸發(fā)的次數(shù),這里我們重載了之前的兩個(gè)接口:
UmsAgent.onEvent(Context context,String event_id,int acc)
UmsAgent.onEvent(Context context,String event_id,String label,int acc)
acc:對(duì)應(yīng)事件被觸發(fā)的次數(shù)。
這里我們除了可以對(duì)某個(gè)事件的發(fā)生次數(shù)統(tǒng)計(jì)外,增加了一個(gè)針對(duì)事件下某一標(biāo)簽的價(jià)值的保存和統(tǒng)計(jì)。重載方法如下:
UmsAgent.onEvent(Context context,String event_id,String label,double value)
例如 event_id代表一個(gè)“下單”事件,那么label可以標(biāo)記為某個(gè)“訂單號(hào)”,而value就為該“訂單號(hào)”的金額(即價(jià)值)。
不同的發(fā)布渠道,對(duì)應(yīng)著不同的appkey,統(tǒng)計(jì)結(jié)果可以使您很好的了解有多少用戶從聯(lián)想樂園或者Google android market 下載到您的應(yīng)用程序。
這個(gè)功能將幫助您把新版的Android應(yīng)用程序推送給用戶,您只需修改AndroidManifest.xml中的VersionCode,并把應(yīng)用程序的apk文件上傳到服務(wù)器。
android.permission.WRITE_EXTERNAL_STORAGE
在Android應(yīng)用程序的入口Activity的onCreate()方法中調(diào)用UmsAgent.update(this),應(yīng)用程序?qū)⒆詣?dòng)檢測(cè)服務(wù)端是否有新的版本。
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); UmsAgent.update(this); }
考慮到用戶流量的限制,目前我們默認(rèn)在Wi-Fi介入情況下才進(jìn)行自動(dòng)提醒。
每次更新Android應(yīng)用程序,您只需要修改VersionCode,把Android應(yīng)用程序的apk文件上傳到服務(wù)器。UmsAgent.update()方法會(huì)判斷是否有新版應(yīng)用程序,如果發(fā)現(xiàn)可更新的應(yīng)用程序安裝包,會(huì)提示用戶是否更新。用戶選擇更新后,安裝包會(huì)下載安裝更新。(按照version code來檢測(cè)是否需要更新)
應(yīng)用程序每次只會(huì)在啟動(dòng)時(shí)向服務(wù)器發(fā)送一次消息,在應(yīng)用程序過程中產(chǎn)生的所有消息都會(huì)在下次啟動(dòng)時(shí)候發(fā)送。如果應(yīng)用程序啟動(dòng)時(shí)處在不聯(lián)網(wǎng)狀態(tài),那么消息將會(huì)緩存在本地,下次再嘗試發(fā)送。
應(yīng)用程序每產(chǎn)生條消息時(shí),就立即發(fā)送到服務(wù)器
在Android應(yīng)用程序的入口Activity中調(diào)用UmsAgent.setDefaultReportPolicy(Context,int),參數(shù)int可取值0或者1,其中1表示實(shí)時(shí)發(fā)送,0表示啟動(dòng)時(shí)發(fā)送。
UmsAgent.updateOnlineConfig(Context)
在Android應(yīng)用程序的入口Activity的onCreate()方法中調(diào)用。SDK將聯(lián)網(wǎng)檢測(cè)您的在線配置,將這些信息保存在本地。你也可以通過下面的方法讀取您的自定義參數(shù)。
UmsAgent.updateOnlineConfig(Context context,String key) 其中key為在網(wǎng)站上編輯好的key,返回值是對(duì)應(yīng)的value ,如果沒有讀到相應(yīng)的value將返回空字符串。