【问题标题】:Make a call from my iPhone application从我的 iPhone 应用程序拨打电话
【发布时间】:2010-07-19 16:05:00
【问题描述】:

我已经实现了通过点击我酒店的一行描述性表格视图来拨打电话的功能;我通过在方法“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,我验证了该数字被正确读取,并且确实如此(确实在控制台上出现 tel:1-408-555-5555)。问题是什么都没有发生!!!

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

【问题讨论】:

  • @"tel:%@ " 末尾有一个空格。 [@"tel:" stringByAppendingString:phoneNumber] 也比较干净。
  • 我的和你的语法有什么区别?谢谢

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


【解决方案1】:

扩展 seanny94 的回答:模拟器不支持很多 iOS 的 URL 方案,包括用于电话、地图、Youtube 和 SMS 应用程序的 URL 方案。 iPod touch 和 iPad 等不具备电话功能的设备也是如此。在通过-openURL: 使用任何URL 方案之前,您应该使用-canOpenURL: 检查是否支持该方案,这将返回YES 或NO,具体取决于当前设备是否支持您正在使用的URL 方案。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      试试这个有用的代码

      删除代码中的空格

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

      确认后调用代码

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

      直接调用代码

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多