J'ai une application qui utilise des données de contact de la manière suivante:Traiter avec les numéros de téléphone internationaux sur iPhone
- Pour envoyer un SMS à partir du client
- Pour envoyer un SMS à partir de notre serveur
- Pour télécharger le numéro de téléphone d'un utilisateur vers une base de données où les autres peuvent s'y opposer
Cela fonctionne très bien aux États-Unis, mais l'internationalisation a un certain nombre de problèmes. Voici mes hypothèses pour le faire fonctionner:
# 1 - Envoyer un SMS du client est simple. Utilisez le numéro dans le carnet d'adresses verbatim (sans normalisation) et laissez le système d'exploitation le comprendre. Les chances sont que s'ils peuvent passer un appel via un numéro donné, ils peuvent envoyer un SMS (non?)
# 2/# 3 - Envoyer un SMS depuis le serveur est plus compliqué. La plupart des API SMS requièrent une notation internationale (le préfixe "+" et le code du pays) tandis que l'utilisateur aura dans sa liste de contacts divers numéros de téléphone locaux et globaux avec différents préfixes (indicatif régional, code pays, etc.). Donc, la normalisation serait nécessaire ici. La correspondance du numéro de téléphone d'un utilisateur dans une base de données nécessite également une normalisation.
Pour normaliser les numéros de téléphone, je dois d'abord décider si l'utilisateur a voulu spécifier un numéro global en recherchant les préfixes "+" "011" et "00". Si c'est le cas, j'enlève le préfixe, le remplace par "+" et utilise ce numéro.
Si je pense que le nombre est local, je peux essayer de virer sur le code de pays moi-même (heuristique, pas fiable). Cela nécessite de connaître le code de pays par défaut de l'utilisateur. Sur l'iPhone, je peux obtenir la région préférée de l'utilisateur (qui est sélectionnable) et le MCC et MNC de l'utilisateur (en fonction de l'emplacement?). Je me penche vers le code de pays choisi par l'utilisateur car il est probable que la plupart de ses numéros de téléphone locaux seront de ce pays.
Je crois que c'est le meilleur que je peux faire sans analyser le nombre entier et comprendre l'indicatif régional et d'autres composants. Je suppose que la plupart des pays autorisent "0" comme préfixe pour leur propre code de pays.
Avez-vous du sens? Y a-t-il une façon plus simple/plus saine de faire cela?