在iPhone中获取运营商详情

5

如何获取iPhone当前使用的运营商详细信息(例如Airtel或Idea等)。

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


3个回答

12

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卡绑定到您所需的运营商,应用程序仍将正常工作。


1
只是一个快速笔记,以防有人需要这个信息。我已经从CTCarrier API的使用中注意到,在模拟器上它的属性会返回“nil”。但在设备上,则由于某种原因,其属性值会返回@“”(空字符串)!在设备上,检查是否为空不起作用,但与@“”相等的检查有效!

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接