编程验证MDM配置文件已成功推送到iOS设备?

6
我正在编写一个 iOS 客户端应用程序,该应用程序向服务器发送请求,服务器转而通过外部 MDM(AirWatch)请求将更新的配置文件推送到我的设备。我相信该配置文件会显示在“设置 -> 通用 -> 描述文件”中。当 MDM 完成处理配置文件推送(已发送或已排队,我不确定)时,它会响应调用服务器,表示“是的,已推送配置文件”,该服务器会将该响应回显到我的客户端应用程序中。
问题在于,配置文件实际上需要约 30 秒才能被推送/安装到设备上,而 Web 服务响应远远短于此。因此,我的客户端应用程序认为已安装了配置文件,并允许该应用程序继续运行,而配置文件仍然不可用。我想能够检测到配置文件何时成功地推送到我的设备上,并在此之后才允许应用程序继续运行。我的另一个选择是制作一个弹出窗口,显示配置文件已成功推送,但我仍然需要检测配置文件是否已安装。
stackoverflow 上大多数 2013 年的问答似乎都说无法查询配置文件,但我想知道是否有任何最近尝试过的解决方法。我考虑了以下可能性-但我不知道哪种方法更好,或者是否在 iOS7 中可能实现(截至 2014 年 2 月 12 日)。
1. 查询已安装的配置文件以获取所需的配置文件 (从我看到的大多数问答来看似乎不可能;不知道 iOS7 的更新是否改变了这一点) - 如果我知道我正在寻找的确切配置文件名称会怎样?
2. 添加 MDM 推送的通知侦听器 - 使用 registerForRemoteNotificationTypes / didReceiveRemoteNotification 或 didFinishLaunchingWithOptions。 - MDM 推送可能发生在我的应用程序之外,因此沙盒可能会妨碍 - 您可以监听 MDM 使用的端口吗?
3. 监听配置文件设置的更改
4. 在向客户端发送响应之前,在服务器上添加一个查询设备已安装的配置文件的请求。
5. 通过在配置文件中包含自签名证书并验证它来进行证书验证 - 看起来有点像 hacky,我不确定我的 MDM 是否允许我这样做
6. 使用 reachability 方法
作为注释,我已查看了以下链接和更多内容:

提前感谢!


我假设你所提到的配置文件是指设备配置文件(例如密码要求),而不是在iOS 7中可用的托管应用程序设置。这正确吗? - lidsinker
@lidsinker 正确,这是一个VPN设置/配置文件,用于在我的应用程序之外使用。 - aspergillusOryzae
1个回答

5
您的应用程序无法确定配置文件是否已安装,因为没有(公共)API可供应用程序查询其已安装的配置文件,也无法确定MDM推送通知是否已发送到设备。您必须依靠您的MDM(AirWatch)来确定配置文件是否已被安装。当AirWatch将配置文件推送到设备时,它将收到一个确认消息,表明配置文件已经被安装,但直到AirWatch重新查询所有已安装的配置文件后,它才会报告配置文件已被安装。我所看到的是,在AirWatch发送配置文件安装命令后不久,它将重新查询设备上的配置文件列表,因此只需轮询服务器几次并等待直到您看到配置文件已安装即可。我没有详细研究过AirWatch REST API,但我认为这是可能的。除此之外,我唯一能想到的选择是使用Reachability来检测VPN隧道是否正在设置。

我已经向Airwatch支持进行了验证,最好的选择是重新查询设备上安装的配置文件,并且他们最初的Web服务响应仅表明配置文件推送已在其系统中排队,而不是实际发送/安装。再次感谢! - aspergillusOryzae

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接