- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
以下代码:
CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];
info.subscriberCellularProviderDidUpdateNotifier = ^(CTCarrier *carrier) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"User did change SIM");
});
};
内部:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
无论我用 iSO 7.1.1 在 iPad Air Mini Wifi+3G 上更换多少张 SIM 卡,事件都不会被调用。
我做错了什么?
最佳答案
您需要持有对 CTTelephonyNetworkInfo
对象的强引用。
Swift(iOS 12.0 及更新版本):
在您的应用委托(delegate)类中,为此对象声明一个名为 telephonyNetworkInfo
的属性,如下所示:
let telephonyNetworkInfo = CTTelephonyNetworkInfo()
然后将其放入您的应用委托(delegate)的 didFinishLaunchingWithOptions
方法中:
telephonyNetworkInfo.serviceSubscriberCellularProvidersDidUpdateNotifier = { [weak telephonyNetworkInfo] carrierIdentifier in
let carrier: CTCarrier? = telephonyNetworkInfo?.serviceSubscriberCellularProviders?[carrierIdentifier]
DispatchQueue.main.async {
print("User did change SIM")
}
}
Swift(iOS 12.0 之前):
在您的应用委托(delegate)类中,为此对象声明一个名为 telephonyNetworkInfo
的属性,如下所示:
let telephonyNetworkInfo = CTTelephonyNetworkInfo()
然后将其放入您的应用委托(delegate)的 didFinishLaunchingWithOptions
方法中:
telephonyNetworkInfo.subscriberCellularProviderDidUpdateNotifier = { carrier in
DispatchQueue.main.async {
print("User did change SIM")
}
}
Objective-C(iOS 12.0 之前):
在您的应用委托(delegate)的@interface
(或其类扩展)中,为此对象声明一个名为telephonyNetworkInfo
的属性,而不是:
CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];
使用这个:
self.telephonyNetworkInfo = [[CTTelephonyNetworkInfo alloc] init];
当然,然后将其放入您的应用委托(delegate)的 didFinishLaunchingWithOptions
方法中:
self.telephonyNetworkInfo.subscriberCellularProviderDidUpdateNotifier = ^(CTCarrier *carrier) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"User did change SIM");
});
};
关于ios - subscriberCellularProviderDidUpdateNotifier 从未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24121684/
背景 我最近在 merge 期间遇到了一个意外未 merge 的文档文件的问题。 无论出于何种原因,我搞砸了 merge 并有效地删除了文件(和其他几个文件),因为我忘记了它们的存在。 现在我想查看我
我在我的网站上使用旧的 mysql 版本和 php 版本 4。 我的表结构: | orders_status_history_id | orders_id | orders_status_id |
我是一名优秀的程序员,十分优秀!