是否能夠經過iPhone SDK中的標準API獲取本身的電話號碼? 安全
使用專用API,您能夠經過如下方式獲取用戶電話號碼: 網絡
extern NSString* CTSettingCopyMyPhoneNumber(); +(NSString *) phoneNumber { NSString *phone = CTSettingCopyMyPhoneNumber(); return phone; }
還將CoreTelephony.framework包含到您的項目中。 app
要獲取您的電話號碼,您能夠閱讀plist文件。 它不適用於非越獄的iDevice: less
NSString *commcenter = @"/private/var/wireless/Library/Preferences/com.apple.commcenter.plist"; NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:commcenter]; NSString *PhoneNumber = [dict valueForKey:@"PhoneNumber"]; NSLog([NSString stringWithFormat:@"Phone number: %@",PhoneNumber]);
我不知道蘋果是否容許這樣作,可是它能夠在iPhone上使用。 spa
冒着被打分的風險,我想建議排名最高的解決方案(當前爲第一個響應)違反了截至2009年11月5日的最新SDK協議。咱們的應用程序因使用它而被拒絕。 這是蘋果公司的迴應: code
「出於安全緣由,iPhone OS將應用程序(包括其首選項和數據)限制爲文件系統中的惟一位置。此限制是稱爲應用程序「沙箱」的安全功能的一部分。沙箱是一組優良的功能,細粒度的控件限制了應用程序對文件,首選項,網絡資源,硬件等的訪問。」
該設備的電話號碼在您應用程序的容器中不可用。 您將須要修改您的應用程序以使其只能在目錄容器中讀取,而後將二進制文件從新提交給iTunes Connect,以便將您的應用程序從新考慮用於App Store。
真使人失望,由於咱們想讓用戶沒必要輸入本身的電話號碼。 orm
不,沒有合法可靠的方法能夠作到這一點。 ip
若是您找到了一種方法,那麼未來它將被禁用,由於之前的每種方法都曾經發生過這種狀況。 資源
更新: Apple彷佛已在iOS 4或周圍刪除了該功能 string
只是爲了擴展一個較早的答案,相似這樣的事情對我來講是這樣的:
NSString *num = [[NSUserDefaults standardUserDefaults] stringForKey:@"SBFormattedPhoneNumber"];
注意 :這將檢索在iPhone的iTunes激活期間輸入的「電話號碼」,而且能夠爲null或不正確的值。 它不會從SIM卡中讀取。
至少在2.1中如此。 NSUserDefaults中還有其餘一些有趣的鍵,這些鍵也可能不會持續使用。 (這是在個人使用UIWebView的應用程序中)
WebKitJavaScriptCanOpenWindowsAutomatically NSInterfaceStyle TVOutStatus WebKitDeveloperExtrasEnabledPreferenceKey
等等。
不知道其餘人會作什麼,若是有的話。