在iOS设备上安装以编程方式下载的ipa

时间:2015-12-29 00:12:32

标签: ios iphone ipa

我正在以编程方式下载ipa文件(我的应用程序的企业版)并提示用户安装它。

问题类似于Download and install an ipa from url on iOS,但不同之处在于我的情况下已经下载了ipa。

我针对上述问题的解决方案尝试了以下变体:

  • 修改plist以包含本地下载的ipa的URL。

```

<?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>file://{path-to-local-ipa}</string>
                </dict>
            </array>
            <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>com.yourCompany.productName</string>
                <key>bundle-version</key>
                <string>1</string>
                <key>kind</key>
                <string>software</string>
                <key>title</key>
                <string>productName</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>

```

  • 更新itms链接以指向本地更新的plist文件 - itms-services://?action=download-manifest&url=file://{path-to-local-plist}

但是,当使用[[UIApplication sharedApplication] openURL:itmsLink]打开itms链接时,它无法正常工作,并且错误地显示 Cannot install applications because the certificate for (null) is not valid

这是关于Facebook如何为dogfooding分发其内部应用程序的。想要做类似的事情,以便在下载应用程序后提示用户安装应用程序,从而提高其安装的周转率。

1 个答案:

答案 0 :(得分:0)

您应首先检查您的证书和捆绑ID。错误消息提供了足够的信息,你看到有一个'null',这意味着你的应用程序没有包ID?检查应用的捆绑包ID,证书设置,配置文件设置,以确保它们彼此匹配。

您可以尝试验证您的应用的一件事是,打开Xcode-Window-Devices,选择连接到您的macbook的iPhone设备,然后将刚存档的ipa拖到应用区域,看看它是否可以安装。如果可以,请检查您的URL的捆绑标识符是否与您的应用相同。你应该好好去。

我们做类似你的事情。我们还通过内部分发分发我们的应用程序。

我们将检查是否有版本,我们将弹出UIAlertView并要求用户更新。用户可以单击“确定”按钮,它将自动开始下载和安装。

OK按钮的代码如下:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (alertView == updateAlert){
        if (buttonIndex == 1 || _forceUpdate) {
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:Download_URL]];
        }
    }
}

在您的情况下,Download_URL可以是itms-services://?action=download-manifest&url=file://{path-to-local-plist}