友盟如何添加測試設備
① 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)