3

我想在 iPhone 中拨打类似“##8004664411”的电话号码。

如果我拨打号码“8004664411”,它可以工作。但如果号码包含符号“##”,它就不起作用。

这是我正在使用但不起作用的代码:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://##8004664411"]];

转义字符错了吗?

4

1 回答 1

1

恐怕您根本无法拨打包含 * 或 # 字符的号码。出于安全原因,Apple 似乎不允许在拨号字符串中使用它们。以下是文档的相关部分。

来自苹果的文档

为了防止用户恶意重定向电话或更改电话或帐户的行为,电话应用程序支持 tel 方案中的大多数(但不是全部)特殊字符。具体来说,如果 URL 包含 * 或 # 字符,电话应用程序不会尝试拨打相应的电话号码。如果您的应用程序从用户或未知来源接收 URL 字符串,您还应确保正确转义任何可能不适合 URL 的特殊字符。对于本机应用程序,使用 NSString 的 stringByAddingPercentEscapesUsingEncoding: 方法来转义字符,这将返回原始字符串的正确转义版本。

注意:stringByAddingPercentEscapesUsingEncoding:部分不适用于 * 和 # (我已经尝试过了...)

于 2012-05-29T09:37:46.903 回答