2

我编写了一个 Hello World 应用程序,并将以下代码放入...ViewController.m

- (void)viewDidLoad {
    [super viewDidLoad];
    CTTelephonyNetworkInfo *networkInfo = [[CTTelephonyNetworkInfo alloc] init];
    networkInfo.subscriberCellularProviderDidUpdateNotifier = ^(CTCarrier *carrier) {
        [[[UIAlertView alloc] initWithTitle:@"SIM Alert"
                                    message:@"This is an alert."
                                   delegate:nil
                          cancelButtonTitle:@"OK"
                          otherButtonTitles:nil] show];
    };
}

然后我拔下 SIM 卡,但没有按预期显示警报。有人可以告诉我有什么问题吗?谢谢。

4

2 回答 2

2

如果您查看 CTCarrier 一些属性的苹果文档,例如carrierName,会有这样的简短通​​知:

如果您为运营商配置设备,然后移除 SIM 卡,此属性将保留运营商的名称。

所以我猜API的其余部分也会发生同样的情况,因为SIM卡没有被新卡替换,因此不会调用updateNotifier。

于 2013-02-13T12:30:18.197 回答
2

这是您问题的最终解决方案。

CTTelephonyNetworkInfo *networkInfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier                  = [networkInfo subscriberCellularProvider];
NSString *mobileNetworkCode         = [carrier mobileNetworkCode];
[networkInfo release];


NSLog(@"Mobile Network Code : %@", mobileNetworkCode);

根据 mobileNetwork 代码,您可以确定设备上是否存在 SIM。

于 2011-10-25T11:12:07.893 回答