5

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

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

2013 年关于 stackoverflow 的大部分问答似乎都说无法查询配置文件,但我想知道人们最近是否尝试过任何变通方法。我想到了以下可能性 - 但我不知道哪个是首选,或者 iOS7 是否有可能(截至 2014 年 2 月 12 日)。

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

作为说明,我查看了以下链接以及更多内容:

提前致谢!

4

1 回答 1

4

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

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

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

于 2014-02-18T03:59:40.797 回答