iOS6 / UIWebview重定向到App的错误页面

时间:2012-10-10 16:20:19

标签: ios ios5 uiwebview ios6

我们的应用依赖UIWebview在用户发起电话后返回应用。在咨询了许多开发人员之后,我们没有对iOS6进行任何更改,期望该应用程序正常运行。

现在,发生了以下情况:

1)UIWebview IS仍然有效 - 在用户结束通话时将用户带回应用

2)然而,该应用程序正在将用户引导到错误的屏幕 - 它将其带到用户应该看到的屏幕上。用户可以记录电话的关键屏幕没有显示出来。

3)唯一的例外似乎是当用户退出并重新登录时 - 在这种情况下,他们只能看到一次正确的屏幕,然后在他们下次呼叫时再次进入错误的屏幕。

我不是编码员,但在查看代码后,看起来这是三个(几乎相同的)代码片段中的一个,应该在电话结束时调用End Call屏幕但是在iOS6不是:

- (IBAction)onCall:(id)sender
{
DashCaller *caller = [[DashCaller alloc] init];

NSString *callNumber = _phone.number;
if (!callNumber)
{
    callNumber = @"No Phone number";
}
else if (callNumber.length == 0)
{
    callNumber = @"No Phone number";
}
else
{
    callNumber = [callNumber stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}

DashDelegate.calledPhone = _phone;
DashDelegate.callLogVC.delegate = _viewController;
DashDelegate.callStartDate = [NSDate date];

NSUserDefaults *setting = [NSUserDefaults standardUserDefaults];
NSNumber *blockNumber = [setting valueForKey:BLOCK_NUMBER];
NSURL *url = nil;

if (blockNumber.boolValue)
    url = [NSURL URLWithString:[NSString stringWithFormat:@"tel://%@%@", kStringBlockNumber, callNumber]];
else {
    url = [NSURL URLWithString:[NSString stringWithFormat:@"tel://%@", callNumber]];
}

[caller callTelURL:url];
}

具体来说,行“DashDelegate.callLogVC.delegate = _viewController;”好像它应该调用CallLogVC视图,但它会转到应该出现在该视图之后的屏幕。

有关于要改变什么的想法(可能受iOS6影响)?该应用程序在iOS5中功能齐全。而且,为什么应用程序在登出登录后只显示此页面一次,然后停止显示?

1 个答案:

答案 0 :(得分:0)

要返回原始应用程序,您可以使用telprompt://而不是tel:// - tell提示符将首先提示用户,但是当调用完成后,它将返回到您的应用程序:

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

您可以尝试使用这些应用委托方法在通话结束后恢复应用程序。

- (void)applicationDidBecomeActive:(UIApplication *)application;

- (BOOL) application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder NS_AVAILABLE_IOS(6_0);

- (BOOL) application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder NS_AVAILABLE_IOS(6_0);