【问题标题】:Possible to read the enterprise iOS download link plist from within the app?可以从应用程序中读取企业 iOS 下载链接 plist 吗?
【发布时间】:2015-10-22 10:31:34
【问题描述】:

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

是否甚至可以从应用程序内的下载链接访问/读取 Plist?如果有,怎么做?

【问题讨论】:

  • 请看一下这个 [stackoverflow 链接][1] [1]:stackoverflow.com/questions/9530075/…
  • @JavierCalatravaLlavería 是 .IPA 中内置的 app-info.plist;我需要的是与公共 URL 一起提供的 plist,以便从中下载 .IPA。
  • @AlexanderWallaceMatchneer 你可以考虑使用像 Branch.io 这样的工具。您可以创建自定义 URL,以便在安装后将数据传递到您的应用程序。它确实适用于私人托管的 IPA。使用它的两个问题:1)您必须使用他们的 SDK 2)您添加到 URL 的任何内容都将发送到 Branch.io。
  • @AlexanderWallaceMatchneer 您是否设法弄清楚如何做到这一点?

标签: ios objective-c ios-enterprise


【解决方案1】:

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

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

如果您找到解决方案,请发表评论,我有兴趣看到。

【讨论】:

    【解决方案2】:

    有一种方法可以从应用程序中读取企业下载链接(但我确定您不会要求下载和读取文件的代码),但无法显示某些内容根据索引页面或清单文件上的参数在应用程序中有所不同,无需更改 IPA 本身。

    很遗憾,已安装的 App 不知道从中下载它的清单文件或索引页面。

    编辑参考/来源

    标题为“将您的应用程序导出到 App Store 之外进行测试”的部分下方的此链接:Exporting Your App for Testing (iOS, watchOS),讨论了清单文件,但没有提及从 Web 部署到应用程序的任何数据链。

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

    【讨论】:

    • 是否有任何链接/来源/技术说明可以支持此答案?
    【解决方案3】:

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

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

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

    然后您的应用可以预先填写用户信息。

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

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

    【讨论】:

    • 哪些设备 ID? afaik Apple 从 iOS 5 或 6 开始将设备 ID 更改为每个应用程序、每个安装。您如何从浏览器中获取它?
    • 如果设备 UUID 不再可用,您可以从 JavaScript 创建 GUID。请参阅此处了解如何操作:stackoverflow.com/questions/105034/…
    • 那么浏览器和应用程序如何生成相同的 guid?
    • 下载页面将创建 GUID。应用程序将通过创建 UIWebView 重新创建 GUID,并执行将重新创建 GUID 的 JavScript。
    • 但是...创建 GUID 使用 Math.random() ?
    【解决方案4】:

    我能想到两个选择:

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

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多