Numéro de téléphone clickable

Bonjour,
J’ai un numéro de téléphone au format : +33 1 23 45 67 89 que j’affiche dans une vue.
J’aimerai que lorsque l’utilisateur appui dessus, le numéro de téléphone se compose directement.

J’ai essayé de le mettre en place avec :

Link("+33 1 23 45 67 89", destination: URL(string: "tel:+33 1 23 45 67 89")!)

et avec

let strNumber = "+33 1 23 45 67 89"

Button(action: {
    let tel = "tel://"
    let formattedString = tel + strNumber 
    guard let url = URL(string: formattedString) else { return }
    UIApplication.shared.open(url) 
   }) {
   Text("+33 1 23 45 67 89")
}

mais aucun des deux ne fonctionne.
Y aurait il une syntaxe particulière à respecter pour le numéro de téléphone?

Essaie de remplacer les espaces par des points ou juste de les retirer.

Déjà essaye…
J’ai tenté sur un numéro standard (0601…), avec et sans espaces, avec points, avec trait d’union…
Rien n’y fait je ne comprends pas pourquoi :thinking:

Salut @PapaRoack

Essaie avec ça :

struct ContentView: View {
var body: some View {

    Button(action: {
        call()
    }, label: {
        Text("Call")
    })
}

func call() {
    if let url = URL(string: "tel:+33"),
       UIApplication.shared.canOpenURL(url) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
        
    }
}

}

Bonjour, juste un truc, tu testes bien sur un véritable périphérique? Car cela ne fonctionne pas sur simulateur…

2 « J'aime »

J’ai essayé, et toujours rien… Je ne comprends pas d’où vient le soucis
@jcbremond oui je suis bien sur un telephone réel

Tu travailles avec quelle version de swift/Xcode ?

Avec swift 5.3 la syntaxe est maintenant :

UIApplication.shared.open(NSURL(string: "tel://555-123-1234")! as URL)

Je suis en Swift 5 sous Xcode 13.4.1
J’ai vraiment essayé toute les syntaxe, je ne vois pas d’ou cela peut venir

Bonsoir,

Je suis sous Xcode 13.4.1
Je viens de créer un nouveau projet.

Le seul code que j’ai saisi est le suivant (dans la ContentView):

import SwiftUI

struct ContentView: View {
    var body: some View {
        Button {
            callMe()
        } label: {
            Text("Call me !")
        }
        
    }
    
    func callMe() {
        UIApplication.shared.open(NSURL(string: "tel://555-123-1234")! as URL)
    }
}

Je lance l’app sur mon iPhone via Xcode.
Quand je clique sur le bouton « Call me », j’ai bien deux options qui s’affichent en bas de l’écran (appeler ou annuler).
Et quand je choisis d’appeler,… ça appelle !

Cordialement,
Nicolas

Bonjour,
Je viens de l’intégrer à l’instant et cela fonctionne également pour moi!