2013-12-23 137 views
17

我在10.9的OS X Server 3.0.1中使用Profile Manager將我的企業應用程序推送到運行iOS7的受管設備。這運行良好,我也能夠推動設備配置設置。使用MDM通過NSUserDefaults配置企業應用程序

我的路障是如何獲取Apple示例項目ManagedAppConfig中提供的信息,並將其應用於由Profile Manager分發的應用程序。

ManagedAppConfig提供了一個簡單的plist,用於將數據放入應用程序的NSUserDefaults中,然後用於應用​​程序配置;但是,如何使用MDM將此數據字典放入NSUserDefaults中並沒有給出方向。

我明顯錯過了一條關於如何向管理應用程序的NSUSerDefaults發送plist數據的信息,但到目前爲止,我的搜索沒有結果。配置文件管理器有可能嗎?有沒有我還沒有找到的OS X服務器的另一種方式?

這裏有ManagedAppConfig從蘋果的doc報價:

「ManagedAppConfig」演示如何實現在iOS應用程序管理應用 配置和反饋的支持。這個 功能允許移動設備管理(MDM)服務器將 按字典順序推送到託管應用程序的NSUserDefaults中,以用於遠程配置設置的 目的。

這裏的示例plist出現數據的兩片以某種方式放置在應用程序的NSUserDefaults的:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>serverURL</key> 
    <string>http://developer.apple.com/</string> 
    <key>disableCloudDocumentSync</key> 
    <true/> 
</dict> 
</plist> 

docs for NSUserDefaults甚至經由MDM提到的配置,但是沒有具體給出。

如果您的應用程序支持託管環境中,你可以使用NSUserDefaults的 對象,以確定哪些偏好設置是由 管理員爲用戶的利益進行管理。託管環境 對應於計算機實驗室或教室,其中管理員或教師可能希望以特定方式配置系統。在 這些情況下,教師可以建立一套默認的偏好並強制這些偏好對用戶。如果以這種方式管理首選項 ,則應用程序應禁止用戶通過禁用任何適當的控件來編輯 該首選項。

我的下午一直在追求這個難以捉摸的信息而沒有成功,所以我請求社區的幫助。任何人都可以指向我需要使用MDM將數據字典粘貼到NSUserDefaults的信息嗎?

很多謝謝。

+1

你能夠得到這個工作?如果遵循ManagedAppConfig項目中的指導方針,那麼這項工作將適用於大多數MDM? – Heinrich

+0

任何人都可以幫助使用airwatch mdm解決方案。我正在嘗試在Airwatch中配置mdm以發送url,portnumber。 – Durgaprasad

回答

13

我寫了一篇關於如何去測試Apple的ManagedAppConfig的小博客文章。

http://tomasmcguinness.com/2014/03/07/exploring-apples-managedappconfig-demo/

披露:這篇文章介紹如何使用www.testmdmapp.com,我已經寫了。

+0

當我嘗試使用您的blogpost配置應用程序時,我收到的消息應用程序不受管理。您可以給我一些建議嗎? – Imran

+1

只能配置通過MDM安裝的應用程序。在你的情況下,你必須首先使用TestMDM安裝你的應用程序,然後執行配置步驟。 – tomasmcguinness

+0

@tomasmcguinness感謝您的回答。我們在iOS 8中遇到了託管應用程序配置的一些奇怪問題:http://stackoverflow.com/questions/29231487/ios-8-mdm-managed-app-configuration-doesnt-work。你知道這件事嗎? – alexey

6

從MDM服務器下推的託管應用程序配置更改出現在NSUSerDefaults中,因此您可以添加一個觀察者以便對NSUserDefaults所做的任何更改發出警報。從MDM服務器下推的託管應用程序配置字典存儲在名爲:​​

的密鑰中您的應用程序還可以將包含反饋的字典發送到MDM服務器。作爲反饋發送回MDM服務器的字典必須存儲在此密鑰中com.apple.feedback.managed

爲了測試所有這些,您需要一臺由MDM服務器管理的設備,並且該應用程序必須由支持ApplicationConfiguration設置和ManagedApplicationFeedback命令的MDM服務器。

示例應用程序的readme.txt文件建議查看WWDC 2013會話301「擴展您的應用程序以供企業和教育使用」以獲得此應用程序的演示。

+3

任何具有NSUserDefaults的iOS應用程序都可以通過MDM進行配置,還是需要採取額外的步驟才能實現?我寫了一個應用程序,我將提供給客戶,他們希望通過MobileIron將應用程序首選項推送給用戶。 – Heinrich

+0

我是否需要專門擁有與我的應用捆綁的ManagedAppConfig.plist?示例應用程序在項目中顯示一個示例應用程序,但文檔說該文件僅用於通過MDM進行發送。 –

3

讀取配置(SWIFT 3):

if let managedConf = UserDefaults.standard.object(forKey: "com.apple.configuration.managed") as? [String:Any?] { 
    if let serverURL = managedConf["serverURL"] as? String{ 
     return serverURL 
    } 
} 
if let serverURL = Bundle.main.object(forInfoDictionaryKey: "serverURL") as? String { 
    return serverURL 
} 
return "https://apple.com/" 

,你可以看到 - 在應用需要手動啓用從MDM束配置讀取。

P,S: 只有受管理的應用可以獲取這些配置。