在iOS中以编程方式获取本身的电话号码

是否能够经过iPhone SDK中的标准API获取本身的电话号码? 安全


#1楼

使用专用API,您能够经过如下方式获取用户电话号码: 网络

extern NSString* CTSettingCopyMyPhoneNumber();


+(NSString *) phoneNumber {
NSString *phone = CTSettingCopyMyPhoneNumber();

return phone;
}

还将CoreTelephony.framework包含到您的项目中。 app


#2楼

要获取您的电话号码,您能够阅读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


#3楼

冒着被打分的风险,我想建议排名最高的解决方案(当前为第一个响应)违反了截至2009年11月5日的最新SDK协议。咱们的应用程序因使用它而被拒绝。 这是苹果公司的回应: code

“出于安全缘由,iPhone OS将应用程序(包括其首选项和数据)限制为文件系统中的惟一位置。此限制是称为应用程序“沙箱”的安全功能的一部分。沙箱是一组优良的功能,细粒度的控件限制了应用程序对文件,首选项,网络资源,硬件等的访问。”

该设备的电话号码在您应用程序的容器中不可用。 您将须要修改您的应用程序以使其只能在目录容器中读取,而后将二进制文件从新提交给iTunes Connect,以便将您的应用程序从新考虑用于App Store。

真使人失望,由于咱们想让用户没必要输入本身的电话号码。 orm


#4楼

不,没有合法可靠的方法能够作到这一点。 ip

若是您找到了一种方法,那么未来它将被禁用,由于之前的每种方法都曾经发生过这种状况。 资源


#5楼

更新: Apple彷佛已在iOS 4或周围删除了该功能 string


只是为了扩展一个较早的答案,相似这样的事情对我来讲是这样的:

NSString *num = [[NSUserDefaults standardUserDefaults] stringForKey:@"SBFormattedPhoneNumber"];

注意 :这将检索在iPhone的iTunes激活期间输入的“电话号码”,而且能够为null或不正确的值。 它不会从SIM卡中读取。

至少在2.1中如此。 NSUserDefaults中还有其余一些有趣的键,这些键也可能不会持续使用。 (这是在个人使用UIWebView的应用程序中)

WebKitJavaScriptCanOpenWindowsAutomatically
NSInterfaceStyle
TVOutStatus
WebKitDeveloperExtrasEnabledPreferenceKey

等等。

不知道其余人会作什么,若是有的话。

相关文章
相关标签/搜索