我想在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对象需要单独的参数。
答案 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>