ios7.1.1获取phone number和运营商有关吗

设备:iphone4
系统:ios7.1.1
插移动的卡 可以得到phone number
但是插联通和电信的卡 得到的phone number打印出来为空,但是函数判断并不是nil或者NULL
求问获取phone number还和运营商有关系吗?

我用下面两种方法都得到了移动手机号的号码
way1
extern NSString* CTSettingCopyMyPhoneNumber();NSString *phone = (__bridge NSString *)CTSettingCopyMyPhoneNumber();

way2
void lib = dlopen("/Symbols/System/Library/Framework/CoreTelephony.framework/CoreTelephony",RTLD_LAZY);
NSLog(@“Get CTSettingCopyMyPhoneNumber from CoreTelephony”);
NSString
(pCTSettingCopyMyPhoneNumber)() = dlsym(lib, “CTSettingCopyMyPhoneNumber”);
NSLog(@“Get CTSettingCopyMyPhoneNumber from CoreTelephony”);
if (pCTSettingCopyMyPhoneNumber == nil)
{
NSLog(@“pCTSettingCopyMyPhoneNumber is nil”);
return nil;
}
NSString
ownPhoneNumber = pCTSettingCopyMyPhoneNumber();
dlclose(lib);

参考的网址:http://stackoverflow.com/questio … ber-via-private-api

已经用ldid签名好权限了,移动的手机号可以获得。。
小白求大神解救 T T

我就是联通的卡,获取号码没问题
你插卡后,去设置 → 电话 → 本机号码,看看有没有显示。如果没有,就没法使用CTSettingCopyMyPhoneNuymber()来获取

真的没有显示诶。。显示本机号码是未知

为什么会出现这种情况呢,我再多找几张卡试试。。

这个地方的显示就是调用的CTSettingCopyMyPhoneNuymber,所以问题的症结你找到了。至于为什么不显示,就需要进一步探索了

谢谢snakeninny啦~

我查资料,通过激活FaceTime和imessage ,分别打开关闭一下 就可以显示出本机号码了,用CTSettingCopyMyPhoneNuymber也就能得到了。

跟运营商没有关系,都可以获取到的。有可能设置里没写号码

我使用了第一种方法,FaceTime和imessage都是激活了,但是还是获取不了,请问还需要配置其他东西吗?

这个也是设置了的,ios8.1 5s 未越狱,但是就是获取不到,一直null

未越狱的应该获取不到,操作被沙盒拦下来了

求问大神,ios8.1.2越狱后 获取不到phonenumber了 设置里面能显示本机号码
代码仍然是帖子里那两种方法。我该怎么办呢?谢谢了

你在哪个进程里调用的这个函数?

进程号 3591

我已经把app放到了/Applications目录下
也用ldid给app签了com.apple.coretelephony.Identity.get权限