tel
*が含まれているURLを使用してiPhoneで通話を開始しようとしています。呼び出しダイアログが正しく表示されますが、呼び出しをクリックするとサファリに戻ります。
<a href="tel:123*12">Test</a>
tel
*が含まれているURLを使用してiPhoneで通話を開始しようとしています。呼び出しダイアログが正しく表示されますが、呼び出しをクリックするとサファリに戻ります。
<a href="tel:123*12">Test</a>
Appleからのこのドキュメントは役立つはずです:
ユーザーが悪意を持って電話をリダイレクトしたり、電話やアカウントの動作を変更したりするのを防ぐために、電話アプリケーションは、telスキームのすべてではありませんがほとんどの特殊文字をサポートします。具体的には、URLに*または#文字が含まれている場合、電話アプリケーションは対応する電話番号にダイヤルしようとしません。
更新(2018年1月2日):ここに記載されている情報は古くなっている可能性があります。Appleが新しいSDKでこれらのルールを緩和した場合は、新しいドキュメントを参照してください。Husamの回答を参照してください。
iOS11*
では、またはで番号を呼び出すことができるようになりました#
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
}
}
}
承認された答えは、少なくとももう正しくありません。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)
}
}
}
「tel」と入力されたhrefに*を追加する場合は、utf-8でエンコードされたバージョンを使用する必要があります-%2A
参照: W3
例えば
<a href="tel:%2A1234"> Phone me <a/>