Gru*_*kes 12 sim-card ios core-telephony
我们有一个产品,用户通过提供他们的电话号码进行注册.
然而,他们注册后,他们可能会改变他们的SIM卡.
是否可以以编程方式确定SIM卡是否已被移除或插入?
(如果你提供它,谢谢,但是首先使用电话号码的任何题外话都与这个讨论无关,我不想讨论事情的这个方面,只讨论sim方面).
Ole*_*man 23
是的,当然有可能.链接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");
});
};
Run Code Online (Sandbox Code Playgroud)
通过mobileCountryCode,mobileNetworkCode,carrierName,isoCountryCode的值,您可以判断SIM的存在.(没有SIM,他们会变得不正确).
CoreTelephony中还有一些未记录的函数/通知,但如果您使用它们,Apple可能会禁止您的应用程序.无论如何:
// 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
];
Run Code Online (Sandbox Code Playgroud)
//这个复制当前的电话号码
NSString*CTSettingCopyMyPhoneNumber()
附录另一种可能(和合法)的解决方案:如果您的公司有电话号码数据库,您可以发送短信或拨打(并剪切)任何特定号码以验证用户是否仍使用相同的电话号码.
UPDATE函数NSString* CTSettingCopyMyPhoneNumber()不再起作用(返回空字符串).
| 归档时间: |
|
| 查看次数: |
15193 次 |
| 最近记录: |