我用这个代码打电话:
NSString *phoneNumber = [@"tel://" stringByAppendingString:mymobileNO.titleLabel.text];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];
当呼叫结束时,它不会将用户带回应用程序。但是,如果我在UIWebView中显示一个网站,并且网站中有一个电话号码(即UIWebView可以识别它),并且如果我点击该电话号码链接拨打电话,那么当通话结束时,我将被带回应用程序。
我的初步想法是,UIWebView在内部做一些事情,比如一个到Phone应用程序的深层链接,然后在深层链接中再做一个深层链接,将用户带回应用程序。但我不确定。有办法实现这个功能吗?
谢谢!
您需要使用telprompt
URL,而不是tel
。
因此:
NSString *phoneNumber = [@"telprompt://" stringByAppendingString:mymobileNO.titleLabel.text];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];
这也将为用户在拨打该号码之前提供一个确认框。
编辑:
这个问题涉及同样的问题。
编辑2:
对于那些想知道这个URL是否会被应用商店拒绝的人来说,答案通常是否定的。更大的风险是苹果会突然停止支持telprompt
方案。正如本文所解释的,有一种稍微"安全"的方法可以用UIWebView
实现telprompt
(它在内部使用telprompt
,即使您用tel
调用它)。文章中的相关代码显示了如何使用文档化的tel
方案仍然可以为您提供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),而是使用一个类别将号码发送到使用telpromt打开的网络视图。这样做的好处是,如果苹果做了一些奇怪的事情,它就不会崩溃。