【问题标题】:getting operator details in iphone在 iphone 中获取运营商详细信息
【发布时间】:2017-08-10 11:19:44
【问题描述】:

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

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

【问题讨论】:

标签: iphone


【解决方案1】:

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 载体,我建议不要进行永久单向锁定):

"如果满足以下任一条件,则此属性的值为 nil

  • 设备处于飞行模式。
  • 设备中没有 SIM 卡。
  • 设备不在蜂窝网络服务范围内。”

在要验证的CTCarrier 的属性中,我会特别推荐carrierName,因为它在用户漫游时不会改变,因此只要SIM 卡与您所需的运营商绑定,应用程序仍然可以工作。

【讨论】:

    【解决方案2】:

    只是一个简短的说明,以防有人正在寻找这个。 我在玩 CTCarrier API 时注意到,“nil”仅在模拟器上返回到它的任何属性。在设备上它出于某种原因返回@“”(空白字符串)!在 eh 设备上再次检查 nil 失败,但检查与 @"" 的相等性有效!

    【讨论】:

      【解决方案3】:

      您可以使用 Core Telephony 框架来实现这一点。特别是 CTCarriercarrierName 属性。在此处查看文档:http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Reference/CTCarrier/Reference/Reference.html%23//apple_ref/doc/uid/TP40009596

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-22
        • 1970-01-01
        • 1970-01-01
        • 2011-03-17
        • 1970-01-01
        • 2012-01-04
        • 2012-06-02
        • 2020-10-08
        相关资源
        最近更新 更多