根據(jù)2013年蘋果為企業(yè)級MDM提供的文檔 得出以下結論
一佑颇、蘋果MDM可以提供的功能
1粗蔚、概述:
a珍策、基本工作流程
蘋果企業(yè)級MDM方案通過提供一種叫做Configuration Profiles的文件來實現(xiàn)企業(yè)級MDM的安全驗證巾乳;通過IOS MDM COMMAND來實現(xiàn)的各種功能。
這種Configuration Profiles文件實際上是一種XML文件,包含了使設備同企業(yè)級系統(tǒng)協(xié)作的權限。
這種文件是被簽名和加密過的,所以無法改變方援,也無法分享給其他機器。
這種文件被安裝在設備上涛癌,安裝的途徑如下:
a犯戏、使用蘋果官方的「iPhone 配置實用工具.app」創(chuàng)建描述文件,將配置描述文件安裝到通過 USB 端口與電腦連接的設備上拳话;
b先匪、通過電子郵件或網(wǎng)頁分發(fā)配置描述文件;
上述兩種方式是常規(guī)的配置文件安裝方式
企業(yè)級MDM安裝方式如下:
c弃衍、移動設備管理服務器呀非,則可以分發(fā)僅包含服務器配置信息的初始描述文件,然后讓設備以無線方式獲取所有其他描述文件镜盯。
它的工作流程如下:
第一步:將包含了Third-Party MDM Server信息的Configuration Profile發(fā)送到設備岸裙。這將會給用戶呈現(xiàn)哪些信息將會被第三方服務器管理和查詢。
第二步:設備安裝Configuration Profile速缆。
第三步:設備接入降允,第三方服務器驗證設備允許接入。
第四步:第三方服務器通過蘋果推送服務器向設備發(fā)送推送通知艺糜,來通知設備執(zhí)行管理和查詢等操作剧董。(這里涉及到蘋果系統(tǒng)推送通知,后文會介紹)
第五步:設備執(zhí)行完任務后破停,直接與第三方服務器通信翅楼,發(fā)送執(zhí)行結果。
b真慢、IOS MDM COMMAND
在第四步里毅臊,設備執(zhí)行管理和查詢操作是通過IOS MDM COMMAND來實現(xiàn)的,它實現(xiàn)了一種 MDM COMMAND的協(xié)議
所有的指令都是通過plist屬性文件來完成的
比如 下面是一個請求UUID信息的command的plist黑界。它定義了RequestType管嬉、具體的Command指令
請求的響應也是通過plist文件呈現(xiàn)的,如下
蘋果企業(yè)級MDM并不是提供私有API接口园爷,而是將私有API接口的調(diào)用包裝起來宠蚂,僅僅提供這個包裝的接口式撼。
企業(yè)級MDM通過這種方式來保護內(nèi)部API的調(diào)用機制童社。
2、提供的功能
a著隆、設備信息查詢
b扰楼、設備管理
簡單的說 就是提供了以下功能
保證設備安全:遠程鎖定設備呀癣、遠程擦除設備數(shù)據(jù)等
獲取設備信息:如IMEI、UDID等
應用分發(fā):非越獄用戶可以不通過AppStore下載應用程序弦赖、MDM擁有下載安裝app的接口
設備配置:管理員可以通過遠程向iOS設備推送配置文件项栏,配置設備的網(wǎng)絡連接、網(wǎng)絡安全和應用程序設置等
備份和恢復:可以將設備上的數(shù)據(jù)遠程備份到指定的服務器上
二蹬竖、蘋果MDM申請布置流程
1沼沈、基本流程
參考:http://www.reibang.com/p/fef831dfe12c
基本步驟如下
a、申請企業(yè)開發(fā)者賬號币厕;(個人開發(fā)者賬號不能申請MDM證書)(這一步據(jù)說需要至少一個月的時間)
b列另、申請MDM證書;
c旦装、配置MDM服務器页衙,生成Configuration Profile、MDM證書阴绢,并將它們安裝在設備上
d店乐、推送通知,執(zhí)行MDM命令呻袭,獲取結果
2眨八、推送機制
這里順便提一下IOS系統(tǒng)的推送機制(了解的同學可跳過)
蘋果的推送有兩種:本地推送、遠程推送棒妨。這里企業(yè)級MDM推送指令是使用的遠程推送踪古。
a、申請推送證書券腔。這個證書是用來驗證開發(fā)者和對應的開發(fā)應用的伏穆,同時這個證書還用來生成每臺設備的UDID。
b纷纫、app請求使用推送功能枕扫,蘋果推送服務器會通過它的推送證書為這臺設備生成一個UDID發(fā)送給設備。
c辱魁、設備拿到UDID后烟瞧,保存起來,并發(fā)送給自己的服務器存儲起來染簇。
b参滴、每當有遠程推送需求的時候,自己的服務器將向蘋果服務器發(fā)送一個指令锻弓,要給哪臺設備(UDID)發(fā)送怎樣的推送砾赔,然后由蘋果服務器給設備發(fā)送推送通知。(當然,在注冊使用推送的時候暴心,用戶要同意接收這個app的推送通知)
三妓盲、用與不用蘋果MDM的區(qū)別
1、當前實現(xiàn)的demo中介紹
手機狀態(tài)監(jiān)控模塊實現(xiàn)如下:
地理位置同步 模塊實現(xiàn)如下:
應用列表管理模塊實現(xiàn)如下:
2专普、用與不用MDM企業(yè)級的區(qū)別
由于MDM中涉及到的功能基本都是需要使用apple的私有API的悯衬。
而使用私有API的風險如下:
a、不清楚蘋果內(nèi)部調(diào)用這些特定私有API的機制檀夹。也不清楚這些機制會不會隨著版本的變更而變動筋粗。
如,獲取應用管理列表這個功能里炸渡,需要事先獲取LSApplicationWorkspace的defaultworkspace亏狰,然后再在里面獲取每一個應用的信息合集LSApplicationProxy。
如偶摔,短信監(jiān)聽里 需要在IMDaemon中_loadServices里去調(diào)用didReceiveMessage函數(shù)暇唾。直接調(diào)用didReceiveMessage是沒用的。
b辰斋、API隨著系統(tǒng)版本的提升不斷的改變策州。
如,鎖屏API 在IOS5宫仗、6够挂、7中可以調(diào)用GraphicsServices.framework/GraphicsServices中的GSEventLockDevice()函數(shù);在8藕夫、9中GraphicsServices.framework/GraphicsServices已經(jīng)沒有這個函數(shù)了
如孽糖,獲取IMEI函數(shù) 在IOS5、6中可以通過[self?coreTelephonyInfoForKey:@"kCTMobileEquipmentInfoIMEI"];在IOS7中可以通過getValue(@"device-imei");來實現(xiàn) 在IOS8毅贮、9中均失效
可以肯定的是办悟,apple將會逐步完善保護私有API不被泄露使用,同時apple內(nèi)部的API調(diào)用機制不被人知滩褥。
class-dump可以dump出OC函數(shù)病蛉,然而并不能dump出C函數(shù),apple正是逐步將隱私API轉(zhuǎn)換成C函數(shù)瑰煎。
不用蘋果MDM并不是不能夠開發(fā)出企業(yè)級MDM的功能(如上面所述也開發(fā)出來了應用列表管理)铺然,只不過以上的風險使得開發(fā)的難度變得很大,難度主要在
a酒甸、不同IOS版本各種功能的適配
b魄健、搞清楚這些API的調(diào)用機制、這些API的變動需要花費非常多的時間
c插勤、目前系統(tǒng)內(nèi)部并沒有一套完善的解析IOS系統(tǒng)內(nèi)部機制的方法(應該要使用逆向工程)沽瘦;以上開發(fā)出來的功能都是我在網(wǎng)上找的柬甥,網(wǎng)上有的就可以試試,沒有的就沒辦法了
而使用蘋果企業(yè)MDM 仍然無法了解其系統(tǒng)內(nèi)部的機制 原因在IOS MDM COMMAND中有闡述過
使用蘋果企業(yè)MDM 除了第一其垄、二部分介紹的流程外,強調(diào)一點:
它不需要使用app卤橄,僅僅需要在手機上配置描述文件(Configuration Profile)绿满、建立服務器即可。
參考資料:http://blog.csdn.net/zhaoxy_thu/article/details/10473193