2013-09-24 125 views
1

我正在開發一個iPhone應用程序。一次,用戶輸入電話號碼。這些可以是任何格式,國際或本地。本地格式將是類似於514-123-4567(或更糟,只是123-4567),有沒有辦法將本地電話號碼轉換爲國際格式(E.164):+15141234567?這意味着要找出這個國家是什麼(如果可能的話也可能是該地區)。如何在iPhone應用程序中將本地電話號碼轉換爲國際格式?

一種方法是要求用戶始終使用國際格式輸入電話號碼,或選擇她所在的國家。但是如果我能避免這種情況,我認爲它會更加便於用戶使用。

我也想避免詢問用戶授權來定位她:很多用戶拒絕地理定位。

理想情況下,我想獲得自己的電話號碼的國家和地區。或者也許是當前運營商的國家(如果用戶在另一個國家漫遊而不是她的國家)。

但是,如果她在沒有SIM卡的iPod或iPad上安裝應用程序,該怎麼辦?也許我可以使用語言環境?或者我可以嘗試地理位置的IP地址?

有什麼更好的點子?

回答

1
  1. 「轉換」的電話號碼 - 你這裏有一個例子:STPhoneFormatter

  2. 您可以使用NSLocale以確定如何定位你的客戶 - 但不是allays確定用戶是(區域和語言都是用戶可配置的)。如果您確實想查明手機現在在哪個國家/地區,請使用地理位置。

這裏NSLocale例如用於COUNTRYCODE /國家:

NSLocale *locale = [NSLocale currentLocale]; 
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode]; 
NSString *country = [locale displayNameForKey: NSLocaleCountryCode value: countryCode]; 
+0

的Tx。沒有辦法獲得承運人的國家嗎? – MiniQuark

+0

是的,有些東西..你可以得到SIM卡信息.. CTCarrier,但是,如果用戶在漫遊,價值不會改變(信息僅僅是SIM的蜂窩服務提供商)https://developer.apple.com/library/ ios/documentation/NetworkingInternet/Reference/CTCarrier/Reference/Reference.html – TonyMkenu

+0

這裏你有一個例子http://stackoverflow.com/a/13585210/1702413 – TonyMkenu

相關問題