1. 友盟推送服務如何統計App卸載
首先需要澄清一點的是,友盟統計分析服務不會統計,也不能統計設備上App卸載的信息的,友盟統計分析服務只會針對集成友盟統計分析SDK的App提供類似新增、日活、留存等基本指標,或者是開發者自定義的一些統計信息,如自定義事件等。
統計卸載信息其實是在友盟推送SDK裡面做的,並且當前統計到的卸載信息也已經部分應用在了消息推送服務裡面。接下來就提問者感興趣的如何統計卸載設備,以及我們目前如何使用這部分卸載信息簡單給大家講一講,太細節的東東就不便透露了。當然,我們的卸載只是針對android平台來做的,iOS上由於蘋果的限制,卸載統計從技術上是很難實現的。
先來說說友盟推送是如何統計卸載:
如果一個設備上有多個集成友盟推送SDK的App的話(注意,必須是集成了友盟推送SDK的App),我們把這些個App稱為一個群組或者聯盟,同一個群組內的App在推送的通道上是做了很多互保和優化工作的,比如長連接通道就是在這多個App之間共享的。
同一個群組裡面的App,如果有某個App發生卸載行為的話,那麼這個卸載事件就可以被群組里其它沒有卸載的App所知曉,該卸載事件就可以上報給伺服器端,伺服器端就可以知道哪台設備上哪個App被卸載了。同一個群組內的App之間互相檢測卸載是一種常用的手段,但是這個要依賴於設備上集成友盟推送SDK的App有很多個,形成一個群組,如果只有1個App集成了友盟推送的話,那麼這種手段是無法捕獲到卸載的。 群組內的App越多,卸載統計收集的效果越好。
寫到這里,肯定有一部分開發者要問,如果設備上只有1個集成友盟推送SDK的App的話,那麼如何統計到這個App是否被卸載了呢? 這種情況下,我們只能判斷到一部分卸載的情況,外加一些其它的輔助判斷信息。
那麼哪部分可以統計到呢? 其實還是要依賴於App群組了,假設之前這個設備上只有App A集成了友盟推送,並且A被卸載了,假設後續又安裝了集成友盟推送SDK的App B,那麼如果給App A發消息,消息送達設備後(因為App B在,所以消息走的是B建立長連通道), 會嘗試投遞給App A,因為A已經被卸載了,所以投遞是不成功的,App B就能感知到這一事件,因此也可以把該卸載信息上報回友盟伺服器,伺服器也就知道該設備上A App已經被卸載了,其實還是要依賴於設備上的App群組功能。
如果該台設備上後續一直沒能有集成友盟推送SDK的App被安裝,那麼我們只能通過粗糙的看多少天不活躍,比如180天不活躍的App,我們認為這台設備上App已經被卸載了(有一定的偏差,比如某些工具類App,有可能打開頻率就非常低),這個不一定準確,但是根據活躍度做用戶分層多少也能看出來App的健康度。
接下來再談談為什麼推送服務要收集設備上App的卸載信息的:
這個其實是和推送的一個硬指標「送達率」戚戚相關的,對於卸載的App,消息肯定是下發不了的,所以在評估送達率的時候,得把這部分卸載的量踢掉,否則在評估和計算送達率的時候,會導致送達率的下降或者不準確。
舉個簡單地例子,假設某個App有100W的裝機量,過了一段時間有20W的卸載(根據我們的觀察,20%的卸載率就算平均水平了),那麼一次發送任務加入送達了40W的App,那麼最終的送達率應該是 40W/(100W-20W) = 50%, 而不是 40W/100W = 40%。 卸載設備的統計越准確,對於最終送達率的評估效果越好。
最後我們來說說卸載統計在友盟推送服務中的應用:
首先在每次推送任務的時候,對於提交過來的device-token,我們會做一次清理,把卸載設備清理掉,所以有時候App開發者或者App運營人員會發現,他們提交的發送總數和友盟後台顯示的當次發送數對不上,那就是因為友盟後台已經剔除掉了當次發送任務中的卸載設備了。
其次,當前的卸載統計我們還在進一步的分析和評估中,如果我們收集到的卸載設備數量足夠准確,足夠全面的時候,我們會把這個功能開放出來,放到統計分析系統裡面供App開發者和運營人員來做參考。
2. android 友盟分享與統計可以一起寫嗎
友盟(Umeng),2010年4月在北京成立,是中國最專業、最有數據凝聚力的移動開發者服務平台。友盟以移動應用統計分析為產品起點,發展成為提供從基礎設置搭建-開發-運營服務的整合服務平台,致力於為移動開發者提供專業的數據統計分析、開發和運營組件及推廣服務。2013年10月推出"一站式"解決方案,服務包含移動應用統計分析以及細分行業的移動游戲統計分析、社會化分享組件、消息推送、自動更新、用戶反饋、錯誤分析等產品。
友盟提供iOS、Android和Windows Phone等多平台服務。目前,國內主流開發者大多是友盟的用戶,已有超34萬計的移動應用從友盟服務中獲益。
3. android 6.0 的友盟統計實時日誌沒有
總體來說,友盟裡面的東西還是不錯的,這段時間,一直在用友盟,感觸最深的就是 做分享的時候,有的Android機型是不可以的分享的,直接報錯,我用的是友盟的4.3 有一部手機是Android5.0的 當分享sina時 報錯 找了各種資料 最後改動了一個文件類,同事幫忙解決了 ( ^_^ ) 有一個華為手機 分享QQ空間 直接手機無響應,這是個別的手機,方正Android機型太多了 太多奇葩了 有的人可能會說用ShareSDK 我感覺不錯用哪個第三方 ,遇到問題了都要解決的 我們做這個項目之前用過推送和更新版本,所以直接用了友盟分享,總之 還是不錯的。
配置友盟許可權和方法
[html] view plain print?
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<!-- Permission for Unit Test -->
<uses-permission android:name="android.permission.GET_TASKS"
4. android友盟統計怎麼使用
建一個umeng專用的文件夾在工程里,然後寫一下方法,我是這么寫的 public static void start(Activity activity){ //顯示上傳過程 //com.umeng.analytics.MobclickAgent.setDebugMode(true); //發送錯誤報告 com.umeng.analytics.MobclickAgent.onError(activity); //自動更新 com.umeng.analytics.MobclickAgent.updateOnlineConfig(activity); //talking 初始化 TCAgent.init(activity); }
5. android集成了友盟統計再用uncrashexceptionhandler會有沖突嗎
不會沖突的
6. android 友盟統計有什麼用
統計的維度很多,不過最基本的新增用戶和啟動次數。關於這個,可能就需要涉及到Android的activity的生命周期和狀態改變。為了更好的理解,做了個簡單的代碼嘗試。
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e(TAG,"enter onCreate」);
}
protectedvoid onStart() {
super.onStart();
Log.e(TAG,"onStart");
}
7. android 怎麼更新友盟sdk
友盟自動更新服務已經不再提供啦,以下為官方說明:
「這個服務因為目前面臨N多非技術的挑戰,導致我們很難再從技術層面維護好這個服務:
iOS: 第三方自動更新服務已經被蘋果官方嚴格禁止了,集成第三方自動更新服務(如友盟+自動更新)的App在審核階段會被大概率的拒絕。蘋果官方數次要求友盟及早把iOS平台的更新服務停掉。在iOS新版本的系統上,其實應用更新已經是默認的功能了,所以第三方更新功能作用就不大了,沒有太多存在意義了。
Android: 面臨的問題比較多,比如應用市場(除了Google Play之外,國內也有越來越多的市場渠道會對集成友盟自動更新插件的App審核拒絕)、部分系統廠商的限制(系統廠商可能會禁止掉非系統的更新,導致友盟更新組件報錯或者拋異常)以及部分運營商的攔截(我們的下載CDN鏈接在某些地區的運營商會被禁止訪問),甚至APK的存儲服務還會面臨政策上的風險。」
8. 友盟統計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)
9. android 友盟統計提交mappiing文件,什麼時候能看到錯誤定位
2.選擇「應用統計分析」,下載SDK,裡面集成很多統計,我們只需要兩個(收集錯誤,啟動在線統計)
3.配置到自己的工程
(1)manifest.xml
<uses-permission Android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<!-- Caution! Do not change this app key. It is only for demo usage. -->
<meta-data
android:name="UMENG_APPKEY"
android:value="55ca9f0e67e58e4ad70060ac" > //換成你自己在上面申請的
</meta-data>
<meta-data
android:name="UMENG_CHANNEL"
android:value="Umeng" >
</meta-data>
( 2 )在activity裡面
private Context mContext;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.umeng_example_analytics);
mContext = this;
MobclickAgent.setDebugMode(true);
MobclickAgent.openActivityDurationTrack(false);
MobclickAgent.updateOnlineConfig(this);
}
然後再重寫三個方法
@Override
public void onResume() {
super.onResume();
MobclickAgent.onResume(mContext);
}
@Override
public void onPause() {
super.onPause();
MobclickAgent.onPause(mContext);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
///對於好多應用,會在程序中殺死 進程,這樣會導致我們統計不到此時Activity結束的信息,
///對於這種情況需要調用 'MobclickAgent.onKillProcess( Context )'
///方法,保存一些頁面調用的數據。正常的應用是不需要調用此方法的。
MobclickAgent.onKillProcess( mContext );
int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);
return true;
}
return super.onKeyDown(keyCode, event);
}