我有一个应用程序在iphone的2.2.1版本中工作得很好,但是当我将我的开发iphone升级到3.1.2时遇到了问题。之前,拨打号码工作正常,如同通话结束时,我的应用程序已加载。现在,在我点击结束通话后,它会加载默认的电话应用程序。有谁知道这是为什么?我已经看过从sdk 2.x到3.x的差异,并且找不到任何原因会改变它。感谢
答案 0 :(得分:4)
这确实从3.0变为3.1。如果您需要“提示通话”和“重新启动后应用程序”,则有两种解决方法:
选项1:创建UIWebView并加载tel:URL。
// assuming you have an ivar to store a weak reference to a UIWebView:
// UIWebView *phoneCallWebView;
- (void) dialPhoneNumber:(NSString *)aPhoneNumber
{
NSURL *phoneURL = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",aPhoneNumber]];
if ( !phoneCallWebView ) {
phoneCallWebView = [[UIWebView alloc] initWithFrame:CGRectZero];
}
[phoneCallWebView loadRequest:[NSURLRequest requestWithURL:phoneURL]];
}
- (void) dealloc
{
// cleanup
[phoneCallWebView release], phoneCallWebView = nil;
[super dealloc];
}
选项2:使用telprompt:<number>
网址方案而不是tel:<number>
发起呼叫。请注意,这是一个未记录的API功能,但它是当您点击webview(或MobileSafari)中的电话号码链接时UIWebView使用的功能。如果你的目标是iPhone&gt; = 3.0,使用telprompt没有任何问题:(tel:和telprompt:在3.0上是相同的)。我不确定iPhone OS 2.x。
通常,选项2有效且更容易,但选项1实际上是一种“合法”的解决方法。不幸的是,似乎没有办法将“提示呼叫”和“重新启动 - 呼叫”行为分开。在iPhoneOS&gt; = 3.1上,您可以同时获得两者,也可以两者都不。
答案 1 :(得分:1)
是的,Apple将此行为从3.0改为3.1(我相信,也可能是从2.x到3.0)。他们承认这种改变是故意的而不是错误。我知道没有解决方法。如果您认为旧的行为应该再次可用,您只需要使用文件和增强请求。
答案 2 :(得分:1)
但UIWebView和telepump都会引入一个“弹出框”,要求用户确认用户是否愿意拨打这个号码。我想知道是否有一些解决方案可以摆脱“弹出框”谢谢。
答案 3 :(得分:0)
NSURL* url = [[NSURL alloc] initWithString:[NSString stringWithFormat:@"telprompt:%@",[SLUser sharedInstance].ivrNumber]];
[[UIApplication sharedApplication] openURL:url];