在iOS 7上,CTSubscriber被添加到CoreTelephony框架中。没有可用的文档,只有其头文件:
/*
* CTSubscriberTokenRefreshed
*
* Description:
* The name of the NSNotification sent when the carrier token is available.
*/
CORETELEPHONY_EXTERN NSString * const CTSubscriberTokenRefreshed __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_CLASS_AVAILABLE(7_0)
@interface CTSubscriber : NSObject
/*
* carrierToken
*
* Description:
* A data blob containing authorization information about the subscriber.
*
* May return nil if no token is available.
*/
@property (nonatomic, readonly, retain) NSData* carrierToken __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
@end此外,在What's new on iOS 7上,还提到了以下内容:
核心电话框架(
CoreTelephony.framework)允许您获取设备正在使用的无线电技术类型的信息。与运营商联合开发的应用程序也可以针对该载波的特定用户进行身份验证。
我认为CTSubscriber与文本中的粗体部分有关。然而,我还没有发现任何关于这种情况是如何发生的。
我尝试使用以下代码(添加到application:didFinishLaunchingWithOptions:中)来试验此API,但通知从未触发,carrierToken返回nil
CTSubscriber *subscriber = [CTSubscriberInfo subscriber];
NSLog(@"%@", subscriber.carrierToken);
[[NSNotificationCenter defaultCenter] addObserverForName:CTSubscriberTokenRefreshed object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) {
NSLog(@"==========");
NSLog(@"%@", note);
NSLog(@"%@", subscriber.carrierToken);
}];因此,我有以下问题:
carrierToken到底返回了什么(“授权信息”),以及如何使它不是nil?CTCarrier上获得)发布于 2014-01-15 09:28:34
我在开发者论坛上问了同样的问题,得到了这样的答复:
You should escalate this via the carrier you're working with, who can in turn escalate it to their contact at Apple.
发布于 2014-01-16 08:58:57
您找不到任何文档的原因是,核心电话的大部分都是由私有API组成的。因此,无法从app上发布的应用程序访问SIM卡。当然,越狱设备是另一个故事,但在这种情况下,你几乎只能靠自己了。
编辑:
核心电话框架(CoreTelephony.framework)允许您获取设备正在使用的无线电技术类型的信息。与运营商联合开发的应用程序也可以针对该运营商的特定用户进行身份验证。
https://stackoverflow.com/questions/20944090
复制相似问题