26

tel*が含まれているURLを使用してiPhoneで通話を開始しようとしています。呼び出しダイアログが正しく表示されますが、呼び出しをクリックするとサファリに戻ります。

<a href="tel:123*12">Test</a>
4

4 に答える 4

33

Appleからのこのドキュメントは役立つはずです:

ユーザーが悪意を持って電話をリダイレクトしたり、電話やアカウントの動作を変更したりするのを防ぐために、電話アプリケーションは、telスキームのすべてではありませんがほとんどの特殊文字をサポートします。具体的には、URLに*または#文字が含まれている場合、電話アプリケーションは対応する電話番号にダイヤルしようとしません。

更新(2018年1月2日):ここに記載されている情報は古くなっている可能性があります。Appleが新しいSDKでこれらのルールを緩和した場合は、新しいドキュメントを参照してください。Husamの回答を参照してください。

于 2011-01-11T18:13:07.563 に答える
11

iOS11*では、またはで番号を呼び出すことができるようになりました#


Swiftサンプルコード

    let number = "*111*12345#"
    let app = UIApplication.shared
    if let encoded = number.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) {
        let u = "tel://\(encoded)"
        if let url = URL(string:u) {
            if app.canOpenURL(url) {
                app.open(url, options: [:], completionHandler: { (finished) in

                })
                return
            }
        }
    }
于 2017-11-01T19:56:46.563 に答える
5

承認された答えは、少なくとももう正しくありません。Webページとアプリの両方で、特殊文字#とを使用してダイヤルできることをテストしました*。これらの文字をどちらかのインスタンスで使用したい場合は、それらをエンコードする必要があります。

HTMLでは、エスケープする必要はありませ#%23*

Swiftを使用している場合は、次の機能を使用して、リンクをエンコードし、アプリから押すことができます。

//number format example (commas are pauses): 123-456-7890,,555#,1234
fileprivate func callNumber(_ number: String) {
    let dialString = "telprompt://" + number
    if let escapedDialString = dialString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) {
      if let dialURL = URL(string: escapedDialString) {
        UIApplication.shared.openURL(dialURL)
      }
    }
  }
于 2017-02-24T21:23:26.813 に答える
0

「tel」と入力されたhrefに*を追加する場合は、utf-8でエンコードされたバージョンを使用する必要があります-%2A

参照: W3

例えば

<a href="tel:%2A1234"> Phone me <a/>

于 2021-05-03T08:17:38.670 に答える