Có, tất nhiên điều đó là có thể. Liên kết CoreTelephony.framework để làm sau biên dịch mã:
CTTelephonyNetworkInfo* info = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier* carrier = info.subscriberCellularProvider;
NSString *mobileCountryCode = carrier.mobileCountryCode;
NSString *carrierName = carrier.carrierName;
NSString *isoCountryCode = carrier.isoCountryCode;
NSString *mobileNetworkCode = carrier.mobileNetworkCode
// Try this to track CTCarrier changes
info.subscriberCellularProviderDidUpdateNotifier = ^(CTCarrier* inCTCarrier) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"User did change SIM");
});
};
Bởi giá trị của mobileCountryCode, mobileNetworkCode, CARRIERNAME, isoCountryCode bạn có thể đánh giá về sự hiện diện của SIM. (Không có SIM chúng trở nên không chính xác).
Ngoài ra còn có một số chức năng/thông báo không có giấy tờ trong CoreTelephony, nhưng ứng dụng của bạn có thể bị Apple cấm nếu bạn sử dụng chúng. Dù sao:
// Evaluates to @"kCTSIMSupportSIMStatusReady" when SIM is present amd ready;
// there are some other values like @"kCTSIMSupportSIMStatusNotInserted"
NSString* CTSIMSupportGetSIMStatus();
// Use @"kCTSIMSupportSIMStatusChangeNotification" to track changes of SIM status:
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(SIMNotification:)
name:@"kCTSIMSupportSIMStatusChangeNotification"
object:nil
];
// một bản sao điện thoại hiện tại này số
NSString * CTSettingCopyMyPhoneNumber()
Phụ Lục Một giải pháp khả thi (và pháp lý): nếu công ty của bạn có một cơ sở dữ liệu của số điện thoại, bạn có thể gửi sms hoặc gọi (và cắt) bất kỳ số cụ thể nào để xác minh rằng người dùng vẫn sử dụng cùng một số điện thoại.
CẬP NHẬT Chức năng NSString* CTSettingCopyMyPhoneNumber()
không hoạt động nữa (trả về chuỗi rỗng).
Nguồn
2012-06-05 20:33:55
Điều đó không giúp ích nhiều khi anh ấy muốn tìm hiểu xem người dùng đã thay đổi thẻ SIM chưa. Lớp này chỉ trả về thông tin mà không có nghĩa là có thể tách hai thẻ SIM. Điều gì sẽ xảy ra nếu người dùng thay đổi thẻ SIM và số điện thoại nhưng vẫn sử dụng cùng một mạng di động? – Andreas
Như Andreas nói, bản thân API [tài liệu] này không được sử dụng nhiều, tuy nhiên nếu có thể đăng ký thông báo thay đổi một trong những giá trị này sẽ hữu ích. Ngay cả khi người dùng lấy ra sim và sau đó đặt cùng một trở lại, nếu tôi biết điều đó xảy ra thì nó không quá tệ, ngay cả khi tôi không biết rằng các sim có khác nhau hay không. Ít nhất tôi cũng biết rằng sims * có thể * có khả năng khác. Cảm ơn bạn đã cung cấp thông tin về API không có giấy tờ, có thể bạn có thể tìm hiểu xem nó có phù hợp với táo để sử dụng không. – Gruntcakes
Andreas, Chris, tôi nên nói rõ ràng: Nó không thể có được bất kỳ thông tin SIM có giá trị bởi bất kỳ phương tiện tài liệu chắc chắn. Chúng tôi chỉ có thể đoán bằng cách lặp lại thông tin nhà cung cấp dịch vụ và tính khả dụng của mạng di động. Nếu đó là không đủ cho bạn sau đó sử dụng các tính năng không có giấy tờ và hack. Có rất nhiều người trong số họ trong iOS. Nhưng bạn có thể bị cấm từ Appstore, và có một lý do cho điều đó. Nếu ai đó sẽ nhận được thông tin như vậy từ SIM như số điện thoại hoặc IMSI, có rất nhiều điều kiện để làm rất nhiều điều xấu như spam điện thoại di động, nghe trộm, vv –