检测手机是否具有iOS 8的移动电话服务

时间:2015-02-05 15:25:38

标签: objective-c ios8 core-telephony

我正在尝试检查设备是否有可用的蜂窝服务(而不是数据),如果是,则允许他们拨打电话。我目前正在使用[[UIApplication sharedApplication] canOpenURL:numberURL]来了解该设备是否可以拨打电话,如果是我阅读的iPhone或其他设备,这显然会返回YES。目前我正在测试没有运营商服务的设备。任何有关这方面的帮助将非常感谢,谢谢。

3 个答案:

答案 0 :(得分:1)

据我所知,您可以使用“CoreTelephony”框架播放有关手机运营商的信息。

亲自检查一下:https://developer.apple.com/library/prerelease/ios/documentation/NetworkingInternet/Reference/CoreTelephonyFrameworkReference/index.html#//apple_ref/doc/uid/TP40009603

https://developer.apple.com/library/prerelease/ios/samplecode/CoreTelephonyDemo/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010746

修改

https://developer.apple.com/library/prerelease/ios/documentation/NetworkingInternet/Reference/CTTelephonyNetworkInfo/index.html#//apple_ref/occ/instp/CTTelephonyNetworkInfo/subscriberCellularProvider

尝试课程“CTCarrier”,看看它是否能解决您的问题。

@property(readonly, retain) CTCarrier *subscriberCellularProvider

Discussion
A CTCarrier object that contains information about the user’s home cellular service provider—that is, the provider with whom the user has an account. This information is available immediately after you allocate and initialize the CTTelephonyNetworkInfo object.

答案 1 :(得分:0)

您可以查看设备是否有带有SIM卡的运营商:

`CTTelephonyNetworkInfo telephonyNetworkInfo = [[CTTelephonyNetworkInfo alloc] init];

CTCarrier carrier = [telephonyNetworkInfo subscriberCellularProvider];`

检查carrier上的以下任何属性,看看手机上是否有运营商:

carrier.carrierName carrier.carriermobileCountryCode carrier.mobileNetworkCode carrier.isoCountryCode

答案 2 :(得分:-1)

你可能正在寻找像Reachability这样的东西。您可以使用此类来确定与网络的连接以及设备连接的方式,ReachableViaWiFiReachableViaWWAN

在处理Reachability时,有一点需要注意,在使用它之前应该注意。有时可达性将报告没有连接,但如果尝试请求,则实际上可以建立连接。可达性的最佳用途是在请求失败后,设备可以确定它无法建立连接并且您可以向用户报告。