在iPhone上打电话,并把用户带回应用程序? (UIWebView做到了)

我用这个代码打电话:

NSString *phoneNumber = [@"tel://" stringByAppendingString:mymobileNO.titleLabel.text]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]]; 

当通话结束时,不会将用户带回应用程序。 但是,如果我在UIWebView中显示一个网站,并且在网站上有一个电话号码(即UIWebView可以识别它),并且如果我点击该电话号码链接拨打电话,当通话结束时我将被带回到应用程序。

我的初步想法是,UIWebView在内部做了一些东西,像深度链接到电话应用程序,然后深层链接内的另一个深层链接把用户带回到应用程序。 但我不确定。 有没有一种方法来实现这个function?

谢谢!

您需要使用telprompt URL,而不是tel

所以:

 NSString *phoneNumber = [@"telprompt://" stringByAppendingString:mymobileNO.titleLabel.text]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]]; 

在拨打号码前,这也会给用户一个确认框。

编辑:

这个问题涵盖了同样的问题。

编辑2:

对于那些想知道这个URL是否会导致App Store拒绝的人来说,答案通常是否定的。 更大的风险是苹果会突然停止支持telprompt计划。 正如本文所解释的那样,用UIWebView实现telprompt的方法稍有“安全”(在内部使用telprompt ,即使用tel调用它也是如此)。 文章中的相关代码显示了如何使用logging的telscheme仍然可以给你telprompt的效果:

 + (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-app/有一个讨论是否使用telprompt(无证,苹果可能会改变API,恕不另行通知),而是使用一个类别发送号码到一个networking视图,使用telprompt打开它。 这有一个好处,就是不会打破苹果是否奇怪。