大佬教程收集整理的这篇文章主要介绍了ios – CoreTelephony因原因崩溃:收到没有通知名称的通知,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Application Specific Information: *** TerminaTing app due to uncaught exception 'NSInternalInconsistencyException' reason: 'Received a notification with no notification name' Last Exception BACktrace: 0 CoreFoundation 0x000000018206e950 __exceptionPreprocess + 132 1 libobjc.A.dylib 0x000000018e5741fc objc_exception_throw + 60 2 CoreFoundation 0x000000018206e810 +[NSException raise:format:arguments:] + 116 3 Foundation 0x0000000182ba6db4 -[NSAssertionHandler handleFailureInMethod:object:file:linenumber:description:] + 112 4 CoreTelephony 0x00000001827ca39c -[CTTelephonyNetworkInfo handleNotificationFromConnection:ofType:withInfo:] + 272 5 CoreTelephony 0x00000001827c9784 _ServerConnectionCallBACk(__CTServerConnection*,__CFString const*,__CFDictionary const*,void*) + 152 6 CoreTelephony 0x00000001827de958 ___ZNK13CTServerState21sendNotification_syncE7CTEventPK10__CFStringPK14__CFDictionary_block_invoke15 + 32 7 libdispatch.dylib 0x000000018eb4c014 _dispatch_call_block_and_release + 24 8 libdispatch.dylib 0x000000018eb4bfd4 _dispatch_client_callout + 16 9 libdispatch.dylib 0x000000018eb524a8 _dispatch_queue_drain + 640 10 libdispatch.dylib 0x000000018eb4e4c0 _dispatch_queue_invoke + 68 11 libdispatch.dylib 0x000000018eb530f4 _dispatch_root_queue_drain + 104 12 libdispatch.dylib 0x000000018eb534fc _dispatch_worker_thread2 + 76 13 libsystem_pthread.dylib 0x000000018ece16bc _pthread_wqthread + 356 14 libsystem_pthread.dylib 0x000000018ece154c start_wqthread + 4
我发现所有CoreTelephony通知并尝试重现该问题但失败了.
/* For use with the CoreTelephony notification system. */ extern CFStringRef kCTRegistrationStatusChangedNotification; extern CFStringRef kCTRegistrationStateDurationReportNotification; extern CFStringRef kCTRegistrationserviceProviderNameChangedNotification; extern CFStringRef kCTRegistrationOperatorNameChangedNotification; extern CFStringRef kCTRegistrationNewservingNetworkNotification; extern CFStringRef kCTRegistrationDataStatusChangedNotification; extern CFStringRef kCTRegistrationDataActivateFailedNotification; extern CFStringRef kCTRegistrationCellularDataPlanHideInDicatorNotification; extern CFStringRef kCTRegistrationCellularDataPlanActivateFailedNotification; extern CFStringRef kCTRegistrationCustomerserviceProfileupdateNotification; extern CFStringRef kCTRegistrationCellChangedNotification; extern CFStringRef kCTRegistrationCauseCodeNotification;
为什么我会这次崩溃?
我怎样才能更改我的代码,以便我不再遇到这个问题?
任何帮助都非常感谢.
编辑:
我正在使用Reachability类(https://github.com/tonymillion/Reachability)来检测网络类型.
+ (NSString *)networkName { Reachability *reach = [Reachability reachabilityForInternetConnection]; [reach startNotifier]; NetworkStatus networkStatus = [reach currentReachabilityStatus]; CTTelephonyNetworkInfo *telephonyInfo = [[CTTelephonyNetworkInfo alloc] init]; if (networkStatus == ReachableViaWiFi) { return @"WIFI"; } else if (networkStatus == ReachableViaWWAN) { if ([telephonyInfo respondsToSELEctor:@SELEctor(currenTradioAccessTechnology)]) { if ([[telephonyInfo currenTradioAccessTechnology] isEqualToString:CTradioAccessTechnologyGPRS]) { return @"GPRS"; } else if ([[telephonyInfo currenTradioAccessTechnology] isEqualToString:CTradioAccessTechnologyEdge]) { return @"EDGE"; } else if ([[telephonyInfo currenTradioAccessTechnology] isEqualToString:CTradioAccessTechnologyWCDMA]) { return @"WCDMA"; } else if ([[telephonyInfo currenTradioAccessTechnology] isEqualToString:CTradioAccessTechnologyHSDPA]) { return @"HSDPA"; } else if ([[telephonyInfo currenTradioAccessTechnology] isEqualToString:CTradioAccessTechnologyHSUPA]) { return @"HSUPA"; } else if ([[telephonyInfo currenTradioAccessTechnology] isEqualToString:CTradioAccessTechnologyCDMA1x]) { return @"CDMA1X"; } else if ([[telephonyInfo currenTradioAccessTechnology] isEqualToString:CTradioAccessTechnologyCDMAEVDORev0]) { return @"CDMAEVDOREV0"; } else if ([[telephonyInfo currenTradioAccessTechnology] isEqualToString:CTradioAccessTechnologyCDMAEVDORevA]) { return @"CDMAEVDOREVA"; } else if ([[telephonyInfo currenTradioAccessTechnology] isEqualToString:CTradioAccessTechnologyCDMAEVDORevB]) { return @"CDMAEVDOREVB"; } else if ([[telephonyInfo currenTradioAccessTechnology] isEqualToString:CTradioAccessTechnologyeHRPD]) { return @"HRPD"; } else if ([[telephonyInfo currenTradioAccessTechnology] isEqualToString:CTradioAccessTechnologyLTE]) { return @"LTE"; } return @"UNKNowN"; } else { return @"WWAN"; } } else { return @"NotReachable"; } }
从你的回溯看起来就像一个僵尸.为什么不尝试使用CTTelephonyNetworkInfo的静态实例,这个实例从未按链接问题的建议发布?
@import CoreTelephony; // ... static CTTelephonyNetworkInfo *neTinfo; static dispatch_once_t dispatchToken; if (!neTinfo) { dispatch_once(&dispatchToken,^{ neTinfo = [[CTTelephonyNetworkInfo alloc] init]; }); }
以上是大佬教程为你收集整理的ios – CoreTelephony因原因崩溃:收到没有通知名称的通知全部内容,希望文章能够帮你解决ios – CoreTelephony因原因崩溃:收到没有通知名称的通知所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。