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>
25
demandé sur Vadim Kotov 2011-01-11 21:03:15

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.

32
répondu Mahesh 2018-01-02 15:57:15

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)
      }
    }
  }
5
répondu sschale 2017-02-24 21:23:26

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
            }
        }
    }
5
répondu Husam 2017-12-25 22:23:49