问题
I am looking for a SDK API to retrieve the device's local phone number
from the SIM card. Is there a way to do it?
回答1:
There's no reliable way. You'll find code online that tells you to look up SBFormattedPhoneNumber, and sometimes that works, but not consistently. Mostly it's people who brought their phone number over from another cell carrier. In those cases, you get a phone number, but not one for the current phone, and not one that's guaranteed to be valid for anything at all (it may not even be unique).
I have no basis for saying whether this is a few people or a lot, but it's an undocumented key that's inherently unreliable.
回答2:
This method refers to the number stored in iTunes at time of activation... so, don't use it. From 4.x you can take advantage from CoreTelephony framework to get many information about the network, but still no number...
回答3:
CFShow([[NSUserDefaults standardUserDefaults] objectForKey:@"SBFormattedPhoneNumber"]);
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Preferences/.GlobalPreferences.plist"];
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];
CFShow(dict);
回答4:
Take a look at this blog post here.
NSString *num = [[NSUserDefaults standardUserDefaults] stringForKey:@”SBFormattedPhoneNumber”]; NSLog(@”Phone Number: %@”, num);
Adrian
来源:https://stackoverflow.com/questions/591430/getting-the-local-iphone-number-through-sdk