2

iPhone のアドレス帳に XXX-YYYY という形式の連絡先があり、それをタップしてダイヤルすると、iPhone は 206-XXX-YYYY という番号をダイヤルします (206 は米国シアトルの市外局番で、電話がかかってくる場所です)。ダイヤルとダイヤルされている電話の両方がそうです)。

電話番号を抽出するユーザーの連絡先のアプリを通過するアプリがあります。このように市外局番が欠落していることを検出し、iOS 自体が行っているのと同じように追加できるようにしたいと考えています。

どうすればこれを行うことができるか誰にもわかりませんか?

iPhone の電話番号はわかっているので、たとえば AAA-BBB-CCCC になるので、AAA-BBB-CCCC とアドレス帳の電話番号を比較して、XXX-YYYY のような番号があれば、次のように推測できます。 ) 市外局番が欠落していること、および b) 欠落している市外局番は iPhone の市外局番と同じでなければならないため、XXX-YYYY の前に AAA を付加すること。

これは単純すぎる解決策であり、北米でしか機能しない可能性があることはわかっています。

では、iPhone はどのようにそれを行っているのでしょうか? また、すべての国で機能するスケーラブルなソリューションはあるのでしょうか?

libPhoneNumber (およびその iOS ポートhttps://github.com/iziz/libPhoneNumber-iOS ) は認識していますが、その API を調べても、市外局番がネットワークから欠落しているかどうかを最初に検出するものは何も表示されません。電話番号。そこにあるかもしれませんが、iOS の libPhoneNumber ポートは詳しく文書化されていません。

これと同様の問題に直面して解決した人はいますか?

4

3 に答える 3

1

残念ながら、市外局番のない番号は、多くの場合判別できません。オッズを助けるためにいくつかのことができます。

まず、7 桁の番号がユーザーの電話番号と同じ市外局番にあると想定し、市外局番を追加するだけです。

第 2 に、多くの米国の場所は複数の市外局番でサービスを提供しているため (たとえば、デンバーには市外局番 303 と 720 があります)、市外局番とプレフィックスの組み合わせが有効かどうかを確認できます。http://www.ccmi.com/npa-nxx-rate-center-lookupなど、いくつかのサービスとデータベースにこの情報が含まれています。(市外局番は NPA と呼ばれ、プレフィックスは NXX と呼ばれることに注意してください。) NPA-NXX の組み合わせは、場所と、通常はそれが属する通信事業者とテレコム スイッチを示します。

第 3 に、電話番号と一緒に住所情報を読み取る場合は、明確な利点があります。NPA-NXX は場所固有であるため、その場所データを使用して正しい市外局番をより適切に検証できます。

これは完璧ではなく、誤った仮定が行われることもあります。大きな理由の 1 つは、番号のポータビリティです。たとえば、移動または通信事業者を変更するときに、デンバーの電話番号を持ち歩くことができます。

于 2015-01-25T13:41:06.230 に答える
1

この投稿のようなレゲエを使用することを検討しましたか: 電話番号を構成要素に解析する

それが国際的な解決のためにうまくいくと言っているわけではありませんが、少なくともそれは始まりです

于 2015-01-23T11:28:38.427 に答える
1

電話の市外局番をどのように検出できますか? 番号にダイヤル コードがある場合、ダイヤル コードは常に番号文字列の開始位置にあります。市外局番の最大文字列長は 4 で、最小文字列長は 1 です。最初の 4 文字の文字列をチェックする再帰ロジックを作成する必要があります。長さ 1 の部分文字列から開始します。ダイヤル コードの配列と比較します。ダイヤル コードの配列に部分文字列オブジェクトがない場合。次に、ダイヤルコードの長さを再帰的に増やします。部分文字列の最大長は 4 です。配列に部分文字列オブジェクトが含まれている場合は、再帰ループを中断します。その部分文字列は電話番号です。

すべての国コードに対して 1 つの静的配列を作成する必要があります。ここからすべての国コードを見つけることができます

于 2015-01-23T11:19:35.363 に答える