使用itms-service链接中的任何链接进行应用分发

时间:2011-12-07 12:55:21

标签: ios distribution

我想在itms-service链接中使用与直接链接到.plist文件不同的链接,但似乎iOS没有调用它。

<a href="itms-services://?action=download-manifest&
url=http://example.com/app.plist">Install App</a>

这样可行,但是如果我尝试调用输出.plist的脚本,我看不到网络服务器上的请求。

<a href="itms-services://?action=download-manifest&
url=http://example.com/
checksomething?param=test">Install App</a>

有人知道为什么吗?

也许iOS检查链接是否包含.plist,如果链接不存在则不会调用链接?


好的,我现在知道将URL传递给iOS失败了:

if ([[UIApplication sharedApplication]canOpenURL:url]) {
    [[UIApplication sharedApplication]openURL:url];
    return NO;
}

也许NSURL对象需要单独的参数。

2 个答案:

答案 0 :(得分:9)

问号是保留字符。您需要将其编码为%3F。同样适用于等号 - 它应该是%3D

答案 1 :(得分:0)

如果您使用的是PHP 5,则urlencode()&amp; http_build_query()可以为你逃避特殊字符做很多艰苦的工作。这些函数还可以避免某些GET参数名称/值对可能具有需要安全传输的敏感字符的问题,例如

<?php
    $base_url = "http://example.com/checksomething";
    $data = Array("param" => "test", "dangerous" => ":?&= are some sensitive chars");
    $itms_url = "itms-services://?action=download-manifest&url=" . urlencode($base_url . "?" . http_build_query($data));
?>

<a href="<?=$itms_url;?>">Install App</a>