次の方法で連絡先データを使用するアプリがあります。
- クライアントから SMS を送信するには
- サーバーから SMS を送信するには
- ユーザーの電話番号を、他のユーザーが照合できるデータベースにアップロードするには
これは米国では問題なく機能しますが、国際化には一連の問題があります。これらは、それを機能させるための私の仮定です:
#1 - クライアントから SMS を送信するのは簡単です。アドレス帳の番号をそのまま (正規化せずに) 使用し、OS に認識させます。特定の番号を介して電話をかけることができれば、SMS を送信できる可能性があります (そうですか?)。
#2/#3 - サーバーからの SMS の送信はより複雑です。ほとんどの SMS API は国際表記 (「+」プレフィックスと国コード) を必要としますが、ユーザーは連絡先リストに、さまざまなプレフィックス (市外局番、国コードなど) を持つさまざまなローカルおよびグローバルの電話番号を持っています。したがって、ここでは正規化が必要になります。データベース内のユーザーの電話番号を照合するには、正規化も必要です。
電話番号を正規化するには、まず、"+"、"011" および "00" プレフィックスを探して、ユーザーがグローバル番号を指定するつもりだったかどうかを判断する必要があります。その場合は、プレフィックスを削除し、「+」に置き換えて、その番号を使用します。
番号がローカルだと思われる場合は、自分で国コードを追加してみることができます (ヒューリスティックで信頼性がありません)。これには、ユーザーのデフォルトの国コードを知る必要があります。iPhone では、ユーザーの優先地域 (選択可能) とユーザーの MCC および MNC (場所に依存しますか?) を取得できます。私はユーザーが選択した国コードに傾倒しています。なぜなら、彼らの地元の電話番号のほとんどがその国のものになる可能性があるからです。
これは、番号全体を解析したり、市外局番やその他のコンポーネントを特定したりせずに実行できる最善の方法だと思います。ほとんどの国では、国コードのプレフィックスとして「0」を使用できると思います。
わかる?これを行うためのより簡単な/より健全な方法はありますか?