2011-06-22 80 views
1

我正在研究iPhone的應用程序'Viber'(http://www.viber.com/)。如何確定一個電話號碼(國家代碼)是否等於另一個(不包括國家代碼)

我需要在我的數據庫中使用用戶電話號碼作爲ID。

當用戶啓動應用程序時,我需要確定哪些聯繫人使用相同的應用程序。 我可以通過ios API獲取聯繫人電話號碼。

但考慮到國際電話區號(http://en.wikipedia.org/wiki/List_of_country_calling_codes)時,這種情況是有問題的:

當「註冊」,用戶A型他的電話號碼沒有國碼。 用戶A位於用戶B的聯繫人列表中,但沒有國家代碼。

例如,在法國: +33 X XX XX XX XX是指的同一個手機,0X年xx月xx年xx月xx

是否有解決這個問題的簡單方法是什麼?

+0

你看過[regex](http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html) – Intentss

回答

2

沒有簡單的方法將本地格式轉換爲E.164格式。問題在於,每個國家的本地移動格式各不相同,因此您無法爲所有國家制定一套規則。你必須找出國家本地移動運營商支持的格式。

如果您必須支持多個國家,那麼您可能會基於從iphone返回的MCC/MNC。我還沒有找到哪些國家支持本地格式的列表。它也沒有解決數字處於本地格式的漫遊電話的問題。

如果你要處理多個國家,那麼你將不得不與澳大利亞等國,誰支持當地的數字格式,使它們轉換爲E.164格式幾乎不可能沒有進一步的信息問題....

查看此Question這與您的基本問題相同。

我會建議您所有的用戶使用E.164格式來存儲所有電話號碼。如果您必須支持轉換,則只支持您必須處理的國家/地區格式。確保你調查了國家支持的所有格式。

你可以嘗試使用類似於上述問題的通用類嘗試使用,但它不適用於所有數字格式。

在我工作的PBX軟件中,我們使用基於規則的引擎,客戶可以在該環境中配置該引擎,並嘗試爲我們銷售的國家預先填充。