1

我们的应用程序依赖 UIWebview 在用户发起电话呼叫后返回应用程序。在咨询了一些开发者之后,我们没有对 iOS6 做任何改动,希望应用能够正常运行。

现在,发生了以下情况:

1) UIWebview 仍在工作 - 结束通话时将用户带回应用程序

2) 但是,该应用程序将用户引导到错误的屏幕 - 它正在将其带到用户应该看到的屏幕之后。用户可以记录电话的关键屏幕未显示。

3) 唯一的例外似乎是当用户注销并重新登录时——在这种情况下,他们只能看到正确的屏幕一次,然后下次打电话时他们又会进入错误的屏幕。

我不是编码员,但在浏览完代码后,看起来这是三个(几乎相同)代码片段之一,应该在电话结束时调用结束通话屏幕,但在 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 中功能齐全。而且,为什么应用程序可能会在注销登录后仅显示一次此页面,然后停止显示?

4

1 回答 1

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);
于 2012-10-10T16:37:21.443 回答