用iPhone编程实现拨打USSD代码

8

如何以编程方式拨打iPhone的USSD代码?

我搜索并发现,iOS 7已经出于安全原因封锁了使用USSD代码,在iOS 7以下的 iPhone 上我们可以手动拨打USSD代码,但不可以以编程方式拨打。

有没有任何想法,我们是否可以像这样以编程方式调用USSD:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:\*123* <2334555>#"]]?


1
为了以后的参考,启动Xcode并测试那一行代码会比在这里询问更快。 - neilco
2个回答

13

包含 * 或 # 字符的号码无法拨打。出于安全原因,苹果不允许在拨号字符串中使用它们。

Apple 文档中写道:

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


我也阅读了苹果网站,但我感到困惑,因为我可以用代码拨打*1#,这怎么可能? - Saeed Rahmatolahi

0

不可以使用openURL来编程拨打USSD代码。这样做会返回NO


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接