以编程方式拨打具有访问代码的电话号码

如何在iOS中拨打包含编号和访问代码的电话号码?

例如:

号码:900-3440-567
访问代码:65445

UIDevice *device = [UIDevice currentDevice]; if ([[device model] isEqualToString:@"iPhone"] ) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel:130-032-2837"]]]; } else { UIAlertView *notPermitted=[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Your device doesn't support this feature." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [notPermitted show]; [notPermitted release]; } 

按照教程

http://www.makebetterthings.com/blogs/iphone/open-phone-sms-email-map-and-browser-apps-in-iphone-sdk/

拨打号码使用 –

 NSURL *url = [NSURL URLWithString:@"tel://012-4325-234"]; [[UIApplication sharedApplication] openURL:url]; 

通话完成后打开你的应用使用 –

(注意:telprompt是无证的)

 NSURL *url = [NSURL URLWithString:@"telprompt://012-4325-234"]; [[UIApplication sharedApplication] openURL:url]; 

您可以使用UIApplicationopenURL:方法以编程方式拨打电话号码(请参阅下面的示例)。 我不确定是否支持访问代码,但这至less是一个起点。

 NSURL *URL = [NSURL URLWithString:@"tel://900-3440-567"]; [[UIApplication sharedApplication] openURL:URL]; 

编辑:有关更多信息,请参阅Apple URL Scheme Reference和UIApplication Class Reference 。

我不知道你是否真的find了传递访问代码的解决scheme,但对我来说这个代码工作:

 NSString *dialstring = [[NSString alloc] initWithFormat:@"tel:your_phonenumber,your_accessnumber"]; 

这将导致拨号string具有以下值: tel:9003440567,65445

其余部分由iOS的手机应用程序通过以下命令进行pipe理:

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

在拨号的第一个号码并build立连接之后,string中的电话系统(您想要进入会议室的那个电话系统)暂停。 所以电话系统有时间要求你input密码(我认为它应该问你,这就是我们系统的工作方式)。 之后,您的访问代码应通过。

注意 :您的访问代码将以非秘密方式传入。 例如:您显示的访问代码将以这种方式显示在iPhone手机应用程序中: 9003440567,65445

使用这个用户可以redirect到呼叫,他/她后会自动redirect到应用程序。 它正在为我工​​作,并确信它。

 if ([[device model] isEqualToString:@"iPhone"] ) { NSString *phoneNumber = [@"telprompt://" stringByAppendingString:cellNameStr]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]]; } else { UIAlertView *warning =[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Your device doesn't support this feature." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [warning show]; } 

这是Swift中的一个独立的解决scheme:

 private func callNumber(phoneNumber:String) { if let phoneCallURL:NSURL = NSURL(string: "tel://\(phoneNumber)") { let application:UIApplication = UIApplication.sharedApplication() if (application.canOpenURL(phoneCallURL)) { application.openURL(phoneCallURL); } } } 

现在你应该可以使用callNumber("7178881234")拨打电话。 希望这可以帮助!

您可以使用电话url来调用电话应用程序来为您拨打号码。 看到这个参考 。

缺点是一旦通话完成,用户将最终在电话应用程序。 但恐怕没有解决这个问题的办法。 由于安全和隐私的原因,iOS不允许任何应用程序直接发起呼叫。

您可以使用逗号在拨号时引入暂停(s)。

无法以编程方式拨打包含号码和接入码的电话号码

苹果开发者图书馆提供以下信息:

“… Phone应用程序支持telscheme中的大部分(但不是全部)特殊字符,特别是,如果URL包含*或#字符 ,Phone应用程序不会尝试拨打相应的电话号码

请参阅: Apple URLscheme参考

拨打电话号码的方式有很多种,其使用方法如下:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@“tel:555-555-5555”]

是一个有效的方法来做到这一点,但它有一些问题。 首先,它不能正确地提示用户,其次在电话通话完成时不会使用户回到应用程序。 要正确地拨打电话,您应该在通话之前提示您,以免让用户感到意外,并且一旦通话完成,您应该将用户带回应用程序。

这些都可以在不使用私有API的情况下完成,就像这里的一些答案所build议的那样。 推荐的方法使用telprompt api,但不使用调用的私有实例,而是创build一个允许将来兼容性的web视图。

 + (void)callWithString:(NSString *)phoneString { [self callWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",phoneString]]]; } + (void)callWithURL:(NSURL *)url { static UIWebView *webView = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ webView = [UIWebView new]; }); [webView loadRequest:[NSURLRequest requestWithURL:url]]; } 

以下是一个示例项目和其他信息: http : //www.raizlabs.com/dev/2014/04/getting-the-best-behavior-from-phone-call-requests-using-tel-in-an- IOS,应用程序/