2013-12-23 58 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: 只有受管理的应用可以获取这些配置。