在 iPad 中检查应用程序的配置文件

Check App's provisioning profile in iPad

我们正在测试一个场景,iPad 似乎一直采用新的配置文件,即使我们安装的应用程序是使用旧配置文件签名的。

我们的配置文件将于本月底到期。所以,我们更新了它,它应该由 MDM 推动。我们想在这样做之前对其进行测试,因此我们尝试复制该场景。我们生成了一个签署到旧 PP 的 iPa,通过 MDM 推送并下载它。现在,如果我们将 iPad 的日期更改为未来的日期,它应该会崩溃,因为 PP 无效。但是,它仍然有效。

我们尝试通过 crashlytics 使用新更新的 PP 安装应用程序,它按照我们的预期运行。现在,我们尝试通过 MDM 对其进行测试,即使您将其更改为未来的日期,它也能正常工作。

我们怀疑 iPad 某处存储了我们应用的新 PP,它取代了导致应用一直运行的旧 PP。

我的问题是,我们可以检查iPad中安装的特定应用程序的PP吗?如果我们删除应用程序,它不会从 iPad 中删除吗?我们可以从 iPad 手动删除 PP 吗?如果可以,怎么做?

非常感谢任何帮助。

配置文件是一个文件,用于确认 Apple 对设备 Z 上的应用程序开发人员开发人员 Y 对应用程序 X 的 运行 权限。X 也可以是一组应用程序,但对于生产案例通常它只是一个应用程序 ID。 Z也可以是一组设备,生产中通常是这样。

将 PP 视为一种由 Apple 签署的任何人都可以验证的证书。

Can we check the PP of a particular App installed in iPad?

我认为 PP 的副本位于应用程序包内,因此如果您可以备份设备并以某种方式提取它,您可能会在那里找到它。 (另见 How to find out what profile was used for building *.ipa file?

Does it not get deleted from the iPad if we delete the app?

可能不会,至少不会总是这样。它们被安装到一些特殊系统的位置。

Can we delete the PP manually from iPad?

“设置”应用有一个部分 "General > Profiles and Device management" 通常有一个已安装配置文件的列表(请参阅 https://apple.stackexchange.com/questions/221052/ios-9-2-my-general-profiles-and-device-management-is-gone )。我不知道关于它的确切规则,但在我的 2 台设备上,这个 "Profiles and Device management" 部分是隐藏的。 有些人还提到,如果您使用 Xcode 将设备连接到 Mac,那么在 "Devices" tool/pane 中您还可以获得已安装配置文件的列表(请参阅 https://forums.developer.apple.com/thread/45086).

从您的描述来看,您的旧版应用和新版应用似乎都可以正常工作,因为系统已经为它们(在新版应用中)找到了一个有效的 PP,并保存了它。

为了详细说明@battlemonstr 的回答,配置文件在打包时与 .ipa 捆绑在一起(在 embedded.mobileprovision 文件中),以便 iOS 设备可以在上安装 PP安装应用程序时的设备。从 .ipa 安装后,嵌入式 PP 无关紧要 - 它只是安装在设备上的另一个 PP。当您第一次尝试 运行 应用程序时,iOS 将检查设备上是否存在允许应用程序 运行 的有效 PP。它可以是与应用程序一起安装的那个,但没有理由必须是。换句话说,已安装的应用程序没有任何要求它使用 .ipa 文件中与其捆绑在一起的 PP 的内容。

当您删除应用程序时,它不会触及设备上安装的 PP。因此,如果您之前安装了该应用程序的一个版本,并且它有一个直到年底才过期的嵌入式 PP,那么使用已经过期的 PP 安装新版本的应用程序不会阻止该应用程序 运行ning,因为设备有一个 PP,该 PP 对应用程序有效,直到年底才会过期。

您可以在 Xcode 台设备 window 中看到设备上的配置文件。右击设备然后 select "Show Provisioning Profiles..." 请注意 iOS 会尝试清理不时过期的旧配置文件,因此一些旧的可能会消失。

您可以通过 "Windows/Device and Simulators"

查看 iOS 设备上的应用程序安装了哪些 PP,并根据需要删除它们

然后右键单击您的设备,然后select "Show Provisioning Profiles..."

然后您可以根据需要从那里添加或删除。

确保在启动前关闭 iOS 设备上的应用程序(双击主屏幕按钮并向上滑动您的应用程序),否则它只会使用内存中的应用程序,它将像您最近安装之前一样工作.