Fonction d'appelle de numéro de téléphone

Salut,

Voici mon code :
La Fonction d’appelle :

func callNumber(phoneNumber:String) {
    
    if let phoneCallURL = URL(string: "tel://\(phoneNumber)") {
        let application:UIApplication = UIApplication.shared
        if (application.canOpenURL(phoneCallURL)) {
            application.open(phoneCallURL, options: [:], completionHandler: nil)
        }
    }
}

Boutton Action :

     @IBAction func appelleMobile(_ sender: Any) {
        if let numeroMobile = _person{
            callNumber(phoneNumber: numeroMobile.telMobile)
            print(numeroMobile.telMobile)
        }
    }
    
    @IBAction func appelleFixe(_ sender: Any) {
        if let numeroFixe = _person{
            callNumber(phoneNumber: numeroFixe.telFixe)
        print(numeroFixe.telFixe)
    }
}

Je suis entrain de faire en sorte que l’on puisse appeler soit un numéro de fixe ou de mobile qui viens dU JSON que je récupère sur mon serveur.

Avec cette exemple de JSON quand je clique sur Fixe qui à une valeur “Inconnue” la fonction d’appelle ce lance et fonctionne, quand je clique sur le mobile rien ne ce passe.

{ civilite = "M. et Mme"; email = "<null>"; facturation = "XXXX"; fixe = "06 13 45 21 11"; libelleClient = Cantaloube; mobile = null; relance1 = 15; relance2 = 10; relance3 = 7; relance4 = 7; siret = null; }

Mais quand je clique les debug affiche bien le bon numéro de téléphone mais rien ne ce passe …

Dans ton JSON, tu as un fixe avec un numéro en 06 et un mobile avec une valeur nulle.

Du coup, en appuyant sur fixe, tu appelles le mobile et en appuyant sur mobile, le système ne peut composer un numéro null.

De plus, sur ta fonction “appelleFixe”, il te manque la } de fin du if.

Non ?

Salut Yann,

Alors en effet les mobiles dans les cases de fixes c’est normal, la base de données précédentes à mal été remplis, mais il devrait quand même ouvrir l’appli téléphone.

voila les nouvelles fonctions avec un exemple en JSON qui à les deux

@IBAction func appelleMobile(_ sender: Any) {
    if let numeroMobile = _person{
        callNumber(phoneNumber: numeroMobile.telMobile)
        print(numeroMobile.telMobile)
    }
} 

@IBAction func appelleFixe(_ sender: Any) { if let numeroFixe = _person{ callNumber(phoneNumber: numeroFixe.telFixe) print(numeroFixe.telFixe) } }

JSON :
{
civilite = «  »;
email = «  »;
facturation = « Pour confirmation de votre commande, merci de nous »;
fixe = « 02 40 93 60 72 »;
libelleClient = « Cuisines A3C »;
mobile = « 06 63 66 75 98 »;
relance1 = 10;
relance2 = 10;
relance3 = 7;
relance4 = 7;
siret = «  »;
},

Ca c’est le résultat des print dans les fonction appelle.

Donc le print fonctionne les numéro sont bons, mais le popup s’affiche uniquement quand c’est inconnue

J’ai du mal à comprendre ce que tu entends par : “mais le popup s’affiche uniquement quand c’est inconnue”

En gros dans le quand la valeur renvoyé par le JSON est null et bien je lui dis que telFixe = “Inconnue” avec un

let telFixe = user["fixe"] as? String ?? "Inconnue"

Quand la valeur est inconnue et bien ça fonctionne il veut bien appeller “Inconnue” mais un vrai numéro il veux pas

Ok, tu peux essayer en formatant le numéro de téléphone avec +33240…
Ou alors en supprimant les espaces dans le numéro ?

Le problème c’est que je les lis dans une base de 1600 lignes …

Si tu ne peux pas agir à la source, tu peux le faire à la récupération.

Tu peux te faire une variable avec le numéro récupéré et la travailler pour lui donner la forme voulue.

1 « J'aime »

J’en reviens pas c’était juste les espaces … :sweat:

Ça ne m’étonne pas plus que ça :slight_smile:

Mais tant mieux si ça fonctionne :smiley:

ahahah merci beaucoup maintenant faut que je supprime tous les espace dans ma base …

Avec plaisir :wink:

Un petit script et ça roule non ?
Et un traitement de la donnée à l’injection d’un nouvel enregistrement.

Je pense plustôt checker le numéro que j’ai récupérer dans ma fonction appelleFixe/mobile, si c’est pas bon je supprime les espaces ou les points en trop …

En effet il s’agit d’une url : tel://… et il ne faut pas d’espace dans les url :slight_smile:

Je suis toujours d’avis d’avoir des données stockées qui soient le plus formatées possible. Et je préfère que mon serveur travaille plutôt que le terminal client. D’autant plus quand il s’agit d’appareils nomades.

Moins l’application en fait, plus elle sera réactive :slight_smile:

1 « J'aime »

Ok merci du conseil, quand je vais refaire la base je vais tout refaire correctement mais pour l’instant mon niveau de sql / php n’est pas assez élévé

Je pensais à ça mais est ce que il y aurais moyen de fair un gitter ou un slack pour le form ?

Gitter est payant pour les communautés privées (5$/mois /utilisateur).
Slack est (pour le moment) gratuit pour les communautés privées mais avec certaines limitations.
J’ai beaucoup hésité entre Slack et Discourse avant le créer le forum, j’ai finalement choisit discourse qui est beaucoup plus simple à gérer pour les communautés sur invitation et surtout est Open Source.
De plus, rien ne garanti les futures évolutions des forfaits slack/gitter car ils restent des entreprises privées qui proposes des services SaaS donc ils ont des coûts et peuvent changer de politique à tout moment.
Avec ce forum, j’utilise un serveur dédié et ensuite le logiciel est open source donc il n’y a aucun risque sur le long terme. :slight_smile:
En plus Discourse utilise :heart: Ember.js :heart: , donc je suis fan !