Ios 带有字符串tel://*#06#的URL在Swift中返回零

Ios 带有字符串tel://*#06#的URL在Swift中返回零,ios,swift,Ios,Swift,我在Swift 4.x中使用以下代码: let url = URL(string: "tel://*#06#") 这使得url为零。只是这个数字有点问题。有人能告诉我如何解决这个问题吗?为什么这在一开始就是个问题。根据苹果的文档: 为了防止用户恶意重定向电话或更改电话或帐户的行为,电话应用程序支持电话方案中的大部分(但不是全部)特殊字符。具体来说,如果URL包含*或#字符,则手机应用程序不会尝试拨打相应的电话号码。 请注意,对于其他字符,您可以使用addingPercentEncoding方法

我在Swift 4.x中使用以下代码:

let url = URL(string: "tel://*#06#")

这使得url为零。只是这个数字有点问题。有人能告诉我如何解决这个问题吗?为什么这在一开始就是个问题。

根据苹果的文档:

为了防止用户恶意重定向电话或更改电话或帐户的行为,电话应用程序支持电话方案中的大部分(但不是全部)特殊字符。具体来说,如果URL包含*或#字符,则手机应用程序不会尝试拨打相应的电话号码。

请注意,对于其他字符,您可以使用
addingPercentEncoding
方法对特殊字符进行转义,该方法返回原始字符串的正确转义版本

例如:

let encoding = phoneNumberString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)

正如@Ketan Ordera所建议的,即使在您使用URL编码复制URL之后,您也不能在iOS中运行USSD代码

要调用,请使用下一个函数:

 static func callPhone (phone:String){

        guard let number = URL(string: "telprompt://" + phone) else { return }
        UIApplication.shared.open(number)
    }

这个答案可能会对您有所帮助