2

我使用此代码拨打电话:

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

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

我的初步想法是 UIWebView 在内部做一些事情,比如一个到电话应用程序的深层链接,然后在深层链接中另一个深层链接将用户带回应用程序。但我不确定。有没有办法实现这个功能?

谢谢!

4

2 回答 2

12

您需要使用telpromptURL,而不是tel.

所以:

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

这还将在拨打该号码之前为用户提供一个确认框。

编辑:

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

编辑2:

对于那些想知道这个 URL 是否会导致 App Store 拒绝的人,答案通常是否定的。更大的风险是苹果会突然停止支持该telprompt计划。正如这篇文章所解释的,有一种稍微“更安全”的实现方式telpromptwith UIWebView(它在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]];
}

(代码取自我第二次编辑中的文章参考)

于 2012-08-22T02:18:02.503 回答
0

网站:http ://www.raizlabs.com/dev/2014/04/getting-the-best-behavior-from-phone-call-requests-using-tel-in-an-ios-app/有讨论是否使用 telprompt(未记录,Apple 可能会在不通知的情况下更改 API),而是使用将数字发送到使用 telprompt 打开它的 Web 视图的类别。如果 Apple 做了一些奇怪的事情,这具有不会破坏的优点。

于 2014-05-08T17:08:55.880 回答