我正试图在iPhone应用程序中发起呼叫.
此相关代码按预期工作并打开Safari:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.apple.com"]];
Run Code Online (Sandbox Code Playgroud)
但是,当我用tel URL替换http URL时,生成的代码不会调用手机应用程序:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:3035551212"]];
Run Code Online (Sandbox Code Playgroud)
不会生成异常或警报(在模拟器或设备上).
知道我的调用可能出现什么问题?
谢谢.
ben*_*ord 44
iphone将使用下面列出的任一格式拨号. 但是,如果你在模拟器中,它将无能为力. 我花了30分钟的时间才想到这一点.
[[UIApplication sharedApplication]
openURL:[NSURL URLWithString:@"tel://15415551234"]];
[[UIApplication sharedApplication]
openURL:[NSURL URLWithString:@"tel:15415551234"]];
[[UIApplication sharedApplication]
openURL:[NSURL URLWithString:@"tel:1-541-555-1234"]];
Run Code Online (Sandbox Code Playgroud)
正如@bentford所说,当你试图点击联系人应用程序上的手机时,模拟器确实显示警报,这可能是因为应用程序检查设备是否tel:
支持该协议而生成的警报或不.
添加到他写的内容中,您可能还希望添加支持以转义任何特殊字符或空格,如:
NSString *phoneStr = [NSString stringWithFormat:@"tel:%@",[self.contactDetails objectForKey:@"phone"]];
NSString *escaped = [phoneStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:escaped]];
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你.
干杯.
(
而)
实际上是没有问题的,如果你使用的stringByAddingPercentEscapesUsingEncoding
是由samiq建议.同去的+
,/
和空间.它是一个URL,因此转义似乎很自然.
如果我猜对了tel:
,如果你正确逃脱,Apple的常规电话号码识别将在方案处理程序中使用.
(缺少声誉使其成为评论)
归档时间: |
|
查看次数: |
36117 次 |
最近记录: |