-->

是否有可能确定SIM /电话号码已经改变?(Is it possible to determine

2019-06-25 04:06发布

我们有一个产品在用户通过提供自己的手机号码注册。

然而在他们登记,他们可能会改变他们的SIM卡。

是否有可能以编程方式确定SIM卡已被删除或插入?

(感谢你提供它,但在使用使用摆在首位的电话号码是这里的问题无关的任何题外话评论,我不想讨论的事情方面,只有SIM方面)。

Answer 1:

是的,当然是可以的。 链接CoreTelephony.framework使下面的代码编译:

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");
        });
};

通过mobileCountryCode,mobileNetworkCode,CARRIERNAME,isoCountryCode的值可以判断有关SIM的存在。 (无SIM他们成为不正确的)。

也有在CoreTelephony一些未公开的函数/通知,但您的应用程序可能会被苹果禁止,如果你会使用。 无论如何:

// 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
];

//这一个拷贝当前电话号码
的NSString * CTSettingCopyMyPhoneNumber()

增编的另一个可能的(法律)解决方案:如果你的公司有电话号码的数据库,你可以发短信或拨打电话(切)任何具体的号码,验证用户仍使用同一个电话号码。

更新功能NSString* CTSettingCopyMyPhoneNumber()不工作了(返回空字符串)。



文章来源: Is it possible to determine if the SIM/Phone number has changed?