【问题标题】:Download inhouse app from another app programmatically以编程方式从另一个应用程序下载内部应用程序
【发布时间】:2016-09-06 12:00:31
【问题描述】:

我们有很多内部应用,并且想要像 AppStore 这样的应用。我们做了一个演示。我们可以打开已安装的应用程序,但未安装在 iPhone 上的应用程序无法从我们的服务器下载到 iPhone。

我们这样做:

if([UIApplication sharedApplication] canOpenURL:..] == false){
    NSString *schemelink = [NSString stringWithFormat:@"itms-services://?action=download-manifest&url=%@",**plist_url**];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:schemelink]]
}

我们为找到原因所做的事情:

  1. 将 plist url 复制粘贴到 Mac Safari 中,然后我检查 plist 并且所有内容都正确(ipa 链接和其他)。他们都在同一条路上。
  2. 复制粘贴只是ipa url。它开始在 Mac 上下载。
  3. itms-services://?action=download-manifest&url=复制粘贴ipa url,它说

没有应用程序设置打开 URL ......ipa 在 App Store 中搜索可以打开此文档的应用程序,或选择计算机上现有的应用程序。

我该如何解决?

.plist:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">
<dict>
    <key>items</key>
    <array>
        <dict>
            <key>assets</key>
            <array>
                <dict>
                    <key>kind</key>
                    <string>software-package</string>
                    <key>url</key>
                    <string>https://....../AppName.ipa</string>
                </dict>
            </array>
            <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>com.company.AppName</string>
                <key>bundle-version</key>
                <string>1.3</string>
                <key>kind</key>
                <string>software</string>
                <key>title</key>
                <string>AppName</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>

【问题讨论】:

  • 您的 manifest.plist 文件是否托管在启用 SSL 的服务器上?如果没有,它将无法正常工作。

标签: ios objective-c in-house-distribution


【解决方案1】:

您的 plist 文件应托管在启用 SSL 的 HTTPS 上,否则您无法安装它。

我附上了一个带有示例数据的示例manifest.plist 文件,您可以使用原始文件进行修改。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>items</key>
    <array>
        <dict>
            <key>assets</key>
            <array>
                <dict>
                    <key>kind</key>
                    <string>software-package</string>
                    <key>url</key>
                    <string>https://127.0.0.0/app/App.ipa</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>display-image</string>
                    <key>url</key>
                    <string>https://127.0.0.0/app/icon57.png</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>full-size-image</string>
                    <key>url</key>
                    <string>https://127.0.0.0/app/icon512.jpg</string>
                </dict>
            </array>
            <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>com.companyname.appname</string>
                <key>bundle-version</key>
                <string>1.0</string>
                <key>kind</key>
                <string>software</string>
                <key>title</key>
                <string>Your application name</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>

将以下所有文件放在服务器上的同一目录中。

  • App.ipa
  • icon57.png
  • icon512.jpg
  • manifest.plist

您的下载 URL 应如下所示。

itms-services://?action=download-manifest&url=https://127.0.0.0/app/manifest.plist

Example Click here to download App.

还要确保您的服务器支持 application/octet-stream for ipa 和 text/xml for plist 的 MIME 类型。

【讨论】:

  • 它们都是正确的,但结果相同;什么都没有:/我将我的 plist 内容添加到问题中。应用上现在没有图标了。
  • 是的,它是启用 SSL 的服务器,并且 MIME 类型相同。
  • 它总是尝试通过 AppStore 下载内部应用
  • 它不应该在 AppStore 上运行,您的下载 URL 是否与示例中指向 .plist 文件的 URL 相同?你有什么错误吗?
  • 您可以做一件事,上传您的 app bundle、plist 和 Dropbox 上的所有内容。将您的下载链接指向那里。如果它工作,那么你的服务器有问题。
猜你喜欢
  • 2013-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-17
  • 2012-03-17
  • 1970-01-01
相关资源
最近更新 更多