【问题标题】:How can I make phone call in iOS?如何在 iOS 中拨打电话?
【发布时间】:2010-10-14 12:37:10
【问题描述】:

如何在 Objective-C 中拨打电话?

【问题讨论】:

  • 如果您在谈论 VOIP,请尝试使用 PJSIP 库 (pjsip.org)。

标签: ios objective-c iphone


【解决方案1】:

您可以拨打电话

https://developer.apple.com/library/archive/featuredarticles/iPhoneURLScheme_Reference/PhoneLinks/PhoneLinks.html

所以这可能会起作用:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:12125551212"]  options:@{} completionHandler:nil];

【讨论】:

  • 我按照你的建议做了,但在 iphone 模拟器中什么也没发生。就像forze一样。应用程序不应该关闭并且电话开始拨号吗?
  • 模拟器没有手机。在设备上检查。
  • @LouFranco 感谢您的提示帮助我
  • 我相信你现在需要做@"tel://5555555555"。如果没有正斜杠,我的就不行了。
  • 我想在应用程序处于后台时拨打紧急求救电话,有谁知道我该怎么做?
【解决方案2】:

这是从我做的一个项目中截取的:

NSString *phoneStr = [NSString stringWithFormat:@"tel:%@",phone_number];
NSURL *phoneURL = [NSURL URLWithString:phoneStr];
[[UIApplication sharedApplication] openURL:phoneURL];

【讨论】:

  • 请使用自动释放,除非您有理由不这样做。您也可以使用stringWithFormat,它已经为您提供了一个自动释放的对象。
  • @Yar - 实际上,请避免自动释放,除非你有理由不这样做。
  • @Abizern,为什么?您担心内存或性能开销吗?在我们获得 ARC(我们已经在 iOS 上获得)或 gc(如在 MacOS 上)之前,自动释放使代码更加简洁,几乎没有开销。除非您处于一个很长的循环中,否则我(以及许多其他人,如果您愿意,我可以引用)相信自动释放更可取。
  • 来自大师 Vincent Gable 的博客:vgable.com/blog/2010/05/19/n-a-r-c ... NARC 在 SO 上已被广泛接受,使用自动释放将使您保持清醒。
【解决方案3】:

了解如何提示用户拨打号码也可能会有所帮助:

NSURL *phoneNumber = [NSURL URLWithString:@"telprompt://13232222222"];
[[UIApplication sharedApplication] openURL:phoneNumber];

telprompt 让用户可以选择在电话拨号之前拨打电话或取消拨打电话。冒号后面的两个正斜杠是可选的。

【讨论】:

  • 你是怎么找到这个的?目前是undocumented。还有,和tel有什么区别吗?两者似乎都提示了。
【解决方案4】:

如果你说的是使用objective-c在iphone上打电话,那么你可以这样做:

NSURL *phoneNumber = [[NSURL alloc] initWithString: @"tel:867-5309"];
[[UIApplication sharedApplication] openURL: phoneNumber];

如果您正在谈论在 mac 上执行此操作,那么就像其他人提到的那样,这是基于诸如 voip、调制解调器、通过星号盒之类的东西进行连接等特定事物的数量。 .

【讨论】:

    【解决方案5】:

    openURL 已弃用。

    现在使用这个:

    UIApplication *application = [UIApplication sharedApplication];
    [application openURL:[NSURL URLWithString: @"tel:12125551212"] options:@{} completionHandler:nil];
    

    【讨论】:

      【解决方案6】:

      删除电话号码中的空格

      NSString *phoneNumberString = @"123 456";
      phoneNumberString = [phoneNumberString stringByReplacingOccurrencesOfString:@" " withString:@""];
      phoneNumberString = [NSString stringWithFormat@"tel:%@", phoneNumberString];
      NSURL *phoneNumberURL = [NSURL URLWithString:phoneNumberString]];
      [[UIApplication sharedApplication] openURL:phoneNumberURL];
      

      【讨论】:

        【解决方案7】:
        NSString *phoneNumber = @"Phone number here";
        UIWebView *webView = [[UIWebView alloc] init];
        NSURL *url = [NSURL URLWithString:numberString];        
        NSURLRequest *requestURL = [NSURLRequest requestWithURL:url]; 
        webView.dataDetectorTypes = UIDataDetectorTypeNone;
        [webView loadRequest:requestURL];
        

        【讨论】:

          【解决方案8】:

          这将是非常特定于平台的,或者您必须使用包装库来解释平台之间的差异,因此您最好说明它适用于哪个平台。一般来说,大多数平台上都有各种电话 API。

          在 Windows 系统上,例如“TAPI”,如果您以 ISDN 等数字电话系统为目标,情况可能会有所不同,因为还有其他 API 可用。

          【讨论】:

          • 问题确实指定了Objective-C,在这种情况下可能意味着iOS
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多