如何获取iPhone的当前使用的操作员详细信息(如Airtel或Idea等)。
是否可以获取这些详细信息,或者是否有任何方法可以确定我们当前正在使用哪个运营商。我正在开发一个基于运营商的应用程序,如果用户更改了他的SIM(运营商),则应用程序不应该工作,它必须为特定的运营商工作。
答案 0 :(得分:12)
CTCarrier应该包含您需要的信息。
编辑:CTTelephonyNetworkInfo响应用户在会话中切换SIM卡,并为您提供CTCarrier
的实例。
示例代码(在您的app委托中):
#import <CoreTelephony/CoreTelephony.h>
static NSString *requiredCarrier = @"Verizon"; // example carrier
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
CTTelephonyNetworkInfo *myNetworkInfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *myCarrier = [myNetworkInfo subscriberCellularProvider];
if(![[myCarrier carrierName] isEqualToString:requiredCarrier])
{
// lock the app, possibly terminate the app after displaying a UIAlertView
// informing the user of the network-lock.
}
// ...
return YES;
}
请注意关于CTCarrier
属性的以下建议(如果读取无载波,我建议不要进行永久性单向锁定):
“如果符合以下任何条件,则此属性的值为nil
:
要验证CTCarrier
的属性,我会特别推荐carrierName
,因为当用户漫游时它不会改变,因此只要SIM绑定到该应用程序,该应用程序仍可正常工作你想要的操作员。
答案 1 :(得分:1)
如果有人正在寻找这个,请快速注意。 我注意到在玩CTCarrier API时,“nil”仅在模拟器上返回到它的任何属性。在设备上它出于某种原因返回@“”(空白字符串)!再次检查nil在设备上失败,但检查与@“”相等的工作!
答案 2 :(得分:0)
您可以使用Core Telephony框架来实现此目的。特别是CTCarrier
和carrierName
属性。在此处查看文档:{{3}}