1

私たちのアプリは、UIWebview に依存して、ユーザーが開始した電話に続いてアプリに戻ります。多くの開発者に相談した後、アプリが正常に動作することを期待して、iOS6 では変更を加えませんでした。

今、次のことが起こりました:

1) UIWebview はまだ機能しています - ユーザーが通話を終了すると、アプリに戻ります

2) ただし、アプリはユーザーを間違った画面に誘導しています。ユーザーに表示されるはずの画面の次の画面に移動しています。ユーザーが通話を記録できる重要な画面が表示されません。

3) 唯一の例外は、ユーザーがログアウトして再度ログインしたときのようです。この場合、ユーザーは正しい画面を一度しか見ることができず、次に電話をかけると、間違った画面に再び移動します。

私はコーダーではありませんが、現状のコードを調べたところ、これは、通話の終了時に通話終了画面を呼び出す必要がある 3 つの (ほぼ同一の) コード スニペットの 1 つであるように見えますが、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 回だけ表示し、その後表示を停止するのはなぜですか?

4

1 に答える 1

0

元のアプリに戻るには、tel:// の代わりに telprompt:// を使用できます。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 に答える