2

私はこのコードを使って電話をかけました:

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

通話が終了しても、ユーザーはアプリに戻りません。ただし、UIWebViewにWebサイトを表示し、そのWebサイトに電話番号がある場合(つまり、UIWebViewがそれを認識する場合)、その電話番号のリンクをタップして電話をかけると、通話が終了したときにアプリに戻ります。 。

私の予備的な考えは、UIWebViewは、電話アプリへのディープリンクのように内部的に何かを実行し、次にディープリンク内の別のディープリンクを実行してユーザーをアプリに戻すことです。確信はないけど。この機能を実装する方法はありますか?

ありがとう!

4

2 に答える 2

12

telpromptではなく、URLを使用する必要がありますtel

それで:

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

これにより、番号に電話をかける前に確認ボックスが表示されます。

編集:

この質問は同じ問題をカバーしています。

編集2:

このURLがAppStoreからの拒否につながるかどうか疑問に思っている人にとって、答えは一般的に「いいえ」です。より大きなリスクは、Appleがこのtelpromptスキームのサポートを突然停止することです。この記事で説明されているように、 telpromptwithを実装するための少し「安全な」方法がありますUIWebView(これはtelprompt、と呼んでも、内部で使用しますtel)。この記事の関連するコードは、文書化されたtelスキームを使用することで、次のような効果が得られることを示していtelpromptます。

+ (void)callWithString:(NSString *)phoneString {
    [self callWithURL:[NSURL URLWithString:[NSString     
        stringWithFormat:@"tel:%@",phoneString]]];
}

+ (void)callWithURL:(NSURL *)url {
    static UIWebView *webView = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{  
        webView = [UIWebView new];
    });
    [webView loadRequest:[NSURLRequest requestWithURL:url]];
}

(2回目の編集で記事の参照から取得したコード)

于 2012-08-22T02:18:02.503 に答える
0

ウェブサイト:http ://www.raizlabs.com/dev/2014/04/getting-the-best-behavior-from-phone-call-requests-using-tel-in-an-ios-app/にディスカッションがありますtelpromptを使用するかどうか(文書化されていないため、Appleは予告なしにAPIを変更する可能性があります)、代わりにtelpromptを使用して番号を開くWebビューに番号を送信するカテゴリを使用します。これには、Appleが何か奇妙なことをしても壊れないという利点があります。

于 2014-05-08T17:08:55.880 に答える