可以从应用程序中读取企业 iOS 下载 link plist 吗?

Possible to read the enterprise iOS download link plist from within the app?

我想分发一个企业 iOS 应用程序,以便在用户打开它时,它已经显示了他们的姓名和其他信息,即使 .ipa 与每个其他用户下载。我认为我可以通过为用户提供特定于他们的应用程序下载 URL 并生成所需的企业下载 plist 来包含一些用户数据来做到这一点,但我的问题是:

甚至可以从应用程序中 access/read 下载 link Plist 吗?如果可以,怎么做?

有一种方法可以从应用程序中读取企业下载 link(但我确定您不需要下载和读取文件的代码),但是在不改变 IPA 本身的情况下,无法根据索引页或清单文件上的参数在 App 中显示不同的内容。

不幸的是,安装的应用不知道从中下载它的清单文件或索引页。

编辑参考资料/来源

这个 link 在标题为 "Exporting Your App for Testing Outside the App Store" 的部分下:Exporting Your App for Testing (iOS, watchOS),讨论了清单文件,但没有提及从 Web 部署到应用程序的任何数据链。

我还与 Apple 的一位高级顾问进行了交谈,他确认没有任何机制可以让 App 知道该 App 的安装位置。

不,这是不可能的。 Plist 用于 iOS 查找下载路径、版本和应用程序名称等信息,以便 iOS 知道什么提示给用户。

您的代码只有在应用程序安装到设备上后才能执行,那时它不再有关于该 plist 的信息。并且应用程序无法找到其下载路径信息。

我可以想到两个选项:

  1. 您可以创建 "personalized" 个 IPA。换句话说,当用户请求下载 IPA 时,您的服务器将生成一个包含所有用户信息的 plist,将文件保存在 IPA 中,并且 运行 codesign。然后将 IPA 提供给用户。
  2. 使用 MDM 将信息直接注入 NSUserDefaultshttps://developer.apple.com/library/ios/samplecode/sc2279/Introduction/Intro.html

我能想到的唯一方法是向所有用户发送相同的 link(examplesite.com/ios/download),并向他们发送唯一的用户标识符 "SG5JD5J"。首次下载并打开应用程序时,提示用户输入其唯一的用户识别码。此时您的应用程序可以更新其 plist 并进入应用程序。

不幸的是,您想要这样做的方式需要 私人 API 的 越狱 iOS 设备 这样你就可以查看网络浏览器的历史记录,找到你的 URL (示例站点。com/ios/download),最后有一个唯一标识符,并根据需要更新 plist。

如果您找到解决方案,请发表评论,我很想看到。

如果 IPA 尚未安装在设备中,则无法读取任何文件。

您可以做的是从您的网站获取用户信息,即让用户在您的下载页面中填写表格。然后将数据与您可以从下载页面生成的 GUID 一起保存到您的服务器。

安装应用程序后 运行,应用程序应重新创建 GUID,然后查询您的服务器以查找与 GUID 关联的用户信息。

您的应用随后可以预填用户信息。

挑战在于您的下载页面如何创建一个 GUID,该 GUID 也将由已安装的应用程序重新创建?那么您可以使用浏览器信息创建 GUID。查看如何使用浏览器信息创建 GUID:

https://andywalpole.me/#!/blog/140739/using-javascript-create-guid-from-users-browser-information