从我的iPhone应用程序拨打电话

时间:2010-07-19 16:05:00

标签: iphone objective-c phone-call url-scheme

我已经实现了通过点击我酒店的一排描述性表格来拨打电话的能力;我通过在方法“didSelectRowAtIndexPath”中编写以下代码来使用URL方案:

NSString *phoneNumber=element.phone;                                       
[NSString *phoneNumberScheme = [NSString stringWithFormat:@"tel:%@ ", phoneNumber];
NSlog(phoneNumberScheme);                      
phoneNumberScheme = [phoneNumberScheme stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumberScheme]];

没有错误!使用NSlog,我确认该号码已正确读取,因此确实如此(确实在控制台上显示电话:1-408-555-5555)。问题是什么都没发生!!!

此时(也基于我在网上看到的内容)我怀疑我无法在模拟器上测试这个东西!我做错了什么或者我不能在模拟器上测试这个“URL方案”?!

3 个答案:

答案 0 :(得分:5)

要扩展seanny94的答案:模拟器不支持很多iOS的URL方案,包括电话,地图,Youtube和SMS应用程序。对于没有手机功能的iPod touch和iPad等设备也是如此;在通过-openURL:使用任何网址方案之前,您应该使用-canOpenURL:检查是否支持该方案,该方案将返回YESNO,具体取决于当前设备是否支持该网址你正在使用的计划。

答案 1 :(得分:2)

您无法在模拟器中测试电话(或任何基于电话的功能)。没有支持它。

答案 2 :(得分:0)

试试这个有用的代码

删除代码的空格

NSString *trimmedString = [yourNumberString stringByReplacingOccurrencesOfString:@" " withString:@""];

确认后的电话代码

NSString *phoneNumber = [@"telprompt://" stringByAppendingString:trimmedString];

直接致电代码

NSString *phoneNumber = [@"tel://" stringByAppendingString:trimmedString];
NSLog(@"Number : %@",phoneNumber);
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];