在iOS 5及以上版本中,在tel: URI中发送#和*字符的方法

3
最近我们注意到,在iOS 5.1中,使用包含#或*字符的tel: URI调用[[UIApplication sharedApplication] openURL:url]现在可以拨号了。
例如:NSURL *url = [NSURL URLWithString:@"tel:15555551212,,1234#"];
文档似乎没有更新以指示这是现在允许的。在iOS 4.x中仍然不起作用。我们正在测试看看这个何时发生了变化。有人知道苹果是否已经正式改变了其从应用程序拨打这些字符的政策吗?
2个回答

4
改变似乎允许在逗号或分号后面加上 # 和 *,即在通话连接后发送DTMF。逗号会等待几秒钟,而分号则让用户决定何时通过例如“拨打123”按钮发送它。假定通过通话发送DTMF是安全的,因为它不会被解释为服务/USSD/等代码。
根据运营商的不同,仍有可能将其用于恶意目的,但这取决于用户在负载完成之前没有结束通话(例如,如果您知道正确的号码,可以删除某些语音邮件)。

非常有用!但我遇到了这个问题:[NSURL URLWithString:@"tel:08001111111,0111312#,,,,9154#"]; -> 可以工作 [NSURL URLWithString:@"tel:08001111111,0111312#,,,,9154#,1"]; -> 无法工作,你有什么想法吗? - fvisticot

0

tc描述的更改确实发生了。同时,我们通过在DTMF电话号码结尾处添加“+”来限制其结束,这导致了DTMF故障。
因此,像tel://1234567,12345+这样的URL在iPhone 5上无法使用,但即使在iOS6上,它也可以在iPhone4(s)上正常工作。
有效的电话URL代码:

NSString * baseTel = @"12345";
NSString * ext = @"54321";
NSString * telStr = [NSString StringWithFormat:@"tel://%@,%@#",$baseTel,$ext];
NSURL * theUrl = [NSURL URLWithString:[telStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

这个程序会拨打12345并在接通后播放DTMF 54321#。


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