2011-03-05 77 views
3

如何获取iPhone当前正在使用的操作员详细信息(如Airtel或Idea等)。在iphone中获取操作员详细信息

是否有可能获得这些详细信息或有任何方法来确定目前我们正在使用哪个运营商。我正在开发一个基于运营商的应用程序,如果用户更改他的SIM(运营商),那么应用程序不应该'工作,它必须为那个特定的操作员工作。

+0

[Retreiving Carrier Name from iPhone Programmatically](http://stackoverflow.com/questions/853467/retreiving-carrier-name-from-iphone-programmatically) – 2011-05-19 17:25:09

回答

9

CTCarrier应该有你需要的信息。

编辑:CTTelephonyNetworkInfo对用户切换SIM中间会话作出响应,并为您提供CTCarrier的实例。

示例代码(在你的应用程序代理):

#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如果下列任一适用的:

  • 该设备在飞行模式下
  • 设备中没有SIM卡。
  • 该设备是蜂窝服务范围之外。”

CTCarrier性能验证上,我会建议carrierName特别,因为它不会改变,当用户漫游,因此该应用将仍然工作只要SIM卡被绑定到你想要的操作

+0

感谢您对Darvidson的快速回复,我会检查它。 – 2011-03-05 13:48:10

+0

CTCarrier只包含SIM卡的网络信息,而不包含手机可能在的当前网络。 – 2016-04-18 10:00:02

+0

在此问题的上下文中,应用程序应在用户更改SIM时锁定。如果用户拥有相同的SIM卡,但在漫游时进入其他网络,则应用程序不应锁定手机,因为用户仍在使用原始SIM卡。 – darvids0n 2016-05-02 16:14:13

1

只是一个快速的笔记,如果有人正在寻找这个。 我从使用CTCarrier API注意到,“nil”仅在模拟器上返回到它的任何属性。在设备上出于某种原因返回@“”(空字符串)!再次检查设备是否失败,但使用@“”检查是否工作正常!