我想通过iPhone SDK的标准API获取自己的电话号码? 我使用了一些代码片段,但没有得到电话号码。
NSString *num = [[NSUserDefaults standardUserDefaults] stringForKey:@"SBFormattedPhoneNumber];
NSLog(@"Phone Number: %@", num);
和
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Preferences/.GlobalPreferences.plist"];
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];
NSLog(@"dict = %@", dict);
我也希望在itunes上使用app,所以不想使用任何私有方法。
感谢您的帮助
答案 0 :(得分:2)
没有可靠的方法来做到这一点。 Apple出于安全原因以及并非所有iOS设备都有电话号码(想想iPad / iPod)这样做都是这样做的。但是,似乎在某些时候似乎工作的唯一方法是使用设备名称,搜索用户的名称,并查看地址簿中是否存在该名称,然后希望存在用户自己的地址簿条目。但这不是一种万无一失的方法,肯定会导致潜在的误报结果(特别是对于通用名称或维护不良的地址簿)。另外,我不知道这在非英语语言中会有多么有效。因此,仅将其用作建议值以提示用户(即“这是您的电话号码吗?”)。以下是一些可以帮助您执行此操作的代码:
// Try to figure out user's name from device name
NSString *deviceName = UIDevice.currentDevice.name;
NSUInteger index;
if ((index = [deviceName rangeOfString:@"'s iPhone"].location) != NSNotFound ||
(index = [deviceName rangeOfString:@"'s iPad"].location) != NSNotFound ||
(index = [deviceName rangeOfString:@"'s iPod"].location) != NSNotFound ||
(index = [deviceName rangeOfString:@"’s iPhone"].location) != NSNotFound ||
(index = [deviceName rangeOfString:@"’s iPad"].location) != NSNotFound ||
(index = [deviceName rangeOfString:@"’s iPod"].location) != NSNotFound)
{
NSString *potentialName = [deviceName substringToIndex:index];
if (potentialName.length > 0)
{
// Search against the address book for an entry with the same name
}
}