在iPhone中获取操作员详细信息

时间:2011-03-05 13:33:47

标签: iphone

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

是否可以获取这些详细信息,或者是否有任何方法可以确定我们当前正在使用哪个运营商。我正在开发一个基于运营商的应用程序,如果用户更改了他的SIM(运营商),则应用程序不应该工作,它必须为特定的运营商工作。

3 个答案:

答案 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

  • 设备处于飞行模式。
  • 设备中没有SIM卡。
  • 该设备不在手机服务范围内。“

要验证CTCarrier的属性,我会特别推荐carrierName,因为当用户漫游时它不会改变,因此只要SIM绑定到该应用程序,该应用程序仍可正常工作你想要的操作员。

答案 1 :(得分:1)

如果有人正在寻找这个,请快速注意。 我注意到在玩CTCarrier API时,“nil”仅在模拟器上返回到它的任何属性。在设备上它出于某种原因返回@“”(空白字符串)!再次检查nil在设备上失败,但检查与@“”相等的工作!

答案 2 :(得分:0)

您可以使用Core Telephony框架来实现此目的。特别是CTCarriercarrierName属性。在此处查看文档:{​​{3}}