【发布时间】:2017-08-10 11:19:44
【问题描述】:
如何获取 iPhone 当前使用的运营商详细信息(如 Airtel 或 Idea 等)。
是否可以获得这些详细信息,或者有什么方法可以确定我们当前使用的是哪个运营商。我正在开发一个基于运营商的应用程序,如果用户更改了他的 SIM(运营商),那么该应用程序不应该工作,它必须为那个特定的操作员工作。
【问题讨论】:
标签: iphone
如何获取 iPhone 当前使用的运营商详细信息(如 Airtel 或 Idea 等)。
是否可以获得这些详细信息,或者有什么方法可以确定我们当前使用的是哪个运营商。我正在开发一个基于运营商的应用程序,如果用户更改了他的 SIM(运营商),那么该应用程序不应该工作,它必须为那个特定的操作员工作。
【问题讨论】:
标签: iphone
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:
在要验证的CTCarrier 的属性中,我会特别推荐carrierName,因为它在用户漫游时不会改变,因此只要SIM 卡与您所需的运营商绑定,应用程序仍然可以工作。
【讨论】:
只是一个简短的说明,以防有人正在寻找这个。 我在玩 CTCarrier API 时注意到,“nil”仅在模拟器上返回到它的任何属性。在设备上它出于某种原因返回@“”(空白字符串)!在 eh 设备上再次检查 nil 失败,但检查与 @"" 的相等性有效!
【讨论】:
您可以使用 Core Telephony 框架来实现这一点。特别是 CTCarrier 和 carrierName 属性。在此处查看文档:http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Reference/CTCarrier/Reference/Reference.html%23//apple_ref/doc/uid/TP40009596
【讨论】: