双葉幼稚園 A Layman's Repository

iOS app 中拨电话之后返回自己的 app

iOS app 里面打电话应该算是个比较常见的需求了,一般常用的方法是利用 UIApplication 里的 -openURL: 方法,但是这样打完电话之后就会停留在 Phone.app 里面了。就像这样:

NSURL *phoneCallURL = [NSURL URLWithString:[NSString stringWithFormat:@"tel:112"]];
[[UIApplication sharedApplication] openURL:phoneCallURL];

其实这种行为也是能预料到的,tel: 肯定是 Phone.app 注册的嘛。

不过利用 UIWebView 就能在拨打电话之后返回自己的应用。

_phoneCallWebView = [[UIWebView alloc] init];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"tel:112"]];
[_phoneCallWebView loadRequest:request];

用这个方法不需要自己添加确认的 action sheet 或者 alert view 了,会自动弹出来一个 alert view。另外可以用 UIWebView 的 delegate 方法 -webView:didFailLoadWithError: 来检测不能打电话的设备,在不能打电话的设备上打开 tel: URL 的时候这个方法会被调用。