以编程方式validationMDMconfiguration文件(configuration)是否已成功推送到iOS设备?

我正在编写一个iOS客户端应用程序,向请求转发的服务器发送请求,并请求通过外部MDM(AirWatch)将更新的configuration文件推送到我的设备。 我相信configuration文件显示在Settings -> General -> Profiles 。 当MDM完成处理configuration文件推送(发送或排队,我不确定)后,它会响应呼叫服务器说'是configuration文件被推送'谁响应我的客户端应用程序的响应。

问题是configuration文件实际上被推送/安装在设备上需要大约30秒,而Web服务响应比这短得多。 所以我的客户端应用程序认为已经安装了configuration文件,它允许应用程序在configuration文件仍然不可用时继续。 我希望能够检测configuration文件何时成功推送到我的设备,并不允许应用程序继续,直到之后。 我的另一种select是popup一个说明configuration文件被成功推送,但我仍然需要检测正在安装的configuration文件。

在stackoverflow上的大部分2013年问答似乎说,它是不可能的查询configuration文件,但我想知道是否有任何变通的人最近尝试过。 我想到了以下几种可能性 – 但是我不知道哪个是首选的,或者如果iOS7(甚至2014年12月2日)甚至可能。

  1. 查询已安装的configuration文件,find我需要的configuration文件(从我见过的大多数问答中听不到;不知道iOS7的更新是否改变了这一点)
    • 如果我知道我正在寻找的确切configuration文件名称呢?
  2. 为MDM推送添加通知监听器
    • 使用registerForRemoteNotificationTypes / didReceiveRemoteNotificationdidFinishLaunchingWithOptions
    • MDM推送可能发生在我的应用程序之外,所以沙盒可能会阻碍
    • 你可以听MDM正在使用的端口吗?
  3. 监听configuration文件configuration设置的更改
  4. 在服务器上添加一个请求,以查询设备的安assembly置文件,并在向客户端发送响应之前调用该请求
  5. 通过在configuration文件中包含自签名证书并进行validation来执行证书validation
    • 似乎有点hacky,我不确定我的MDM是否允许我这样做
  6. 使用可达性方法

作为一个说明,我已经看了下面的链接加上更多:

  • WWDC 2013 MDM幻灯片 – 没有看到任何突出的东西
  • iOS获取已安装的configurationconfiguration文件
  • validation/检查是否在iPhone上安装了configuration文件 (从2010年开始)

提前致谢!

您的应用程序无法确定是否已安assembly置configuration文件,因为不存在允许应用程序查询其已安assembly置文件的(公共)API,也无法确定MDM推送通知是否已发送到设备。 您将不得不依靠您的MDM(AirWatch)来确定configuration文件已经安装。

当AirWatch将configuration文件推送到设备时,将会收到确认,该configuration文件已经安装,但直到AirWatch重新查询所有安装的configuration文件,才会报告已安assembly置文件。 我所看到的是,在AirWatch发送configuration文件安装命令后不久,它将重新查询设备上的configuration文件列表,以便轮询几次服务器并等待,直到看到configuration文件已安装。 我并没有在AirWatch REST API中花费太多时间,但我认为这是可能的。

除此之外,我能看到的唯一的另一个select是让您使用Reachability来检测VPN隧道是否正在build立。