在iPhone上打电话并将用户带回应用程序?(UIWebView可以做到)



我用这个代码打电话:

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打开的网络视图。这样做的好处是,如果苹果做了一些奇怪的事情,它就不会崩溃。

最新更新