Comment utiliser tel: avec * (étoile, astérisque) ou # (hachage, livre) sur iOS?
J'essaie de lancer un appel sur l'iPhone avec l'url tel
qui contient un*. Correctement affiche la boîte de dialogue d'appel, mais revient à safari lorsque vous cliquez sur appeler.
<a href="tel:123*12">Test</a>
3 réponses
Cette documentation d'Apple devrait être utile:
Pour empêcher les utilisateurs de rediriger malicieusement des appels téléphoniques ou de modifier le comportement d'un téléphone ou d'un compte, l'application téléphonique prend en charge la plupart, mais pas tous, des caractères spéciaux dans le tel régime. Plus précisément, si une URL contient les caractères * ou#, le Application de téléphone ne tente pas de composer le téléphone correspondant nombre.
Mise à jour (Jan 2, 2018): Le les informations mentionnées ici peuvent être obsolètes. Veuillez vous référer à la nouvelle documentation Si Apple a assoupli ces règles dans ses nouveaux SDK. Reportez-vous à la réponse de Husam.
La réponse approuvée n'est pas correcte, du moins plus. J'ai testé à la fois en tant que page web et dans l'application Être capable de composer en utilisant le caractère spécial #
et *
. Ce que vous devez faire si vous souhaitez utiliser ces caractères dans les deux cas est de les encoder.
Dans le code HTML, #
devient %23
et *
n'a pas besoin d'être échappé
Si vous utilisez Swift, vous pouvez encoder votre lien et l'appuyer depuis une application en utilisant cette fonction:
//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)
}
}
}
IOS11 nous permet aujourd'hui d'appeler un numéro avec *
ou #
Exemple de Code 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
}
}
}