2011-09-28 4 views
2

가 나는 안녕하세요 세계 응용 프로그램을 작성 작업을하고 에 다음 코드를 삽입하지 않습니다 ... ViewController.m : 나는 SIM 카드를 뽑았지만 예상대로 아무런 경고가 표시되지 않았다 그런 subscriberCellularProviderDidUpdateNotifier가

- (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]; 
    }; 
} 

. 누군가가 친절하게 나에게 무엇이 잘못되었는지 말할 수 있습니까? 감사.

+0

이 문제를 결정하셨습니까? – adnako

답변

2

이것은 궁극적 인 해결책입니다.

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


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

mobileNetwork 코드에 따라 기기에 SIM이 있는지 여부를 확인할 수 있습니다.

+0

감사합니다. 그러나이 방법은 반복적으로 체크 코드를 실행해야합니다. 알림 없음. 이것이 내가 한 일이지만 CTSIMSupportCopyMobileSubscriberIdentity가 있습니다. – phoenies

2

당신이 예를 carrierName에 대한 CTCarrier 일부 속성의 사과 문서를 살펴있는 경우,이 같은주의 사항이 있습니다

당신은 캐리어에 대한 장치를 구성하고 SIM 카드를 제거하면,이 속성은 이동 통신사의 이름을 유지합니다.

그래서 SIM 카드가 updateNotifier가 호출되지 않은 새 API로 대체되지 않으므로 다른 API에서도 마찬가지 일 것이라고 추측 할 수 있습니다.