以编程方式验证MDM配置文件(配置)是否已成功推送到iOS设备?

时间:2014-02-13 01:06:18

标签: ios objective-c provisioning-profile mdm configuration-profile

我正在编写一个iOS客户端应用程序,该服务器向服务器发送请求,该服务器转身并请求通过外部MDM(AirWatch)将更新的配置文件推送到我的设备。我相信个人资料会显示在Settings -> General -> Profiles中。当MDM完成处理配置文件推送(发送或排队,我不确定)时,它会响应主叫服务器说“是推送配置文件”,它回应了我对客户端应用程序的响应。

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

关于stackoverflow的2013 Q& A大部分似乎都说不可能查询配置文件,但我想知道是否有人最近尝试过的解决方法。我想到了以下可能性 - 但我不知道哪个是首选,或者甚至可以使用iOS7(截至2014年12月12日)。

  1. 查询我需要的安装配置文件(听起来不可能 从我见过的大多数Q& A;不知道iOS7的更新是否已更改 这个)
    • 如果我知道我要查找的确切个人资料名称怎么办?
  2. 为MDM推送添加通知侦听器
    • 使用registerForRemoteNotificationTypes / didReceiveRemoteNotificationdidFinishLaunchingWithOptions
    • MDM推送可能发生在我的应用程序之外,因此沙盒可能会妨碍
    • 你能收听MDM正在使用的端口吗?
  3. 收听配置文件配置设置的更改
  4. 在服务器上添加请求以查询设备以查找已安装的配置文件,并在向客户端发送响应之前调用该请求
  5. 通过在配置文件中包含自签名证书并进行验证来进行证书验证
    • 似乎有点hacky,我不确定我的MDM是否允许我这样做
  6. 使用可达性方法
  7. 作为一个说明,我查看了以下链接以及更多内容:

    提前致谢!

1 个答案:

答案 0 :(得分:4)

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

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

除此之外,我能看到的唯一其他选项是你可以使用Reachability来检测是否正在设置VPN隧道。