在iOS 7上有什么CTSubscriber(以及如何使用它)?

时间:2014-01-06 06:12:02

标签: ios objective-c ios7 core-telephony

在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);
}];

所以,我有以下问题:

2 个答案:

答案 0 :(得分:4)

我在开发者论坛中问了同样的问题并得到了这个回复:

You should escalate this via the carrier you're working with, who can in turn escalate it to their contact at Apple.

链接到主题:https://devforums.apple.com/message/934226#934226

答案 1 :(得分:-1)

您无法找到任何文档的原因是因为Core Telephony的大部分内容都包含私有API。因此,没有任何方法可以从App Store上发布的应用程序访问SIM卡。当然,越狱装置是另一个故事,但在这种情况下,你几乎就是自己。

编辑:

Core Telephony框架(CoreTelephony.framework)让您获得 有关设备使用的无线电技术类型的信息。 与运营商共同开发的应用也可以进行身份​​验证 针对该运营商的特定订户。