微信sdk调用[UIApplication openURL:]方法打开微信App,会导致应用卡顿。此方法已在iOS10被弃用
- (BOOL)openURL:(NSURL*)url API_DEPRECATED_WITH_REPLACEMENT("openURL:options:completionHandler:", ios(2.0, 10.0)) NS_EXTENSION_UNAVAILABLE_IOS("");
是否可以使用[UIApplication OpenURL:options:completionHander:]
+1,官方赶紧解决!!!
// remark Application main thread deadlocked // 卡死线程 Thread 0 Deadlock: 0 libsystem_kernel.dylib _mach_msg2_trap 1 libsystem_kernel.dylib _mach_msg2_internal 2 libsystem_kernel.dylib _mach_msg_overwrite 3 libsystem_kernel.dylib _mach_msg 4 libdispatch.dylib __dispatch_mach_send_and_wait_for_reply 5 libdispatch.dylib _dispatch_mach_send_with_result_and_wait_for_reply 6 libxpc.dylib _xpc_connection_send_message_with_reply_sync 7 Foundation ___NSXPCCONNECTION_IS_WAITING_FOR_A_SYNCHRONOUS_REPLY__ 8 Foundation -[NSXPCConnection _sendInvocation:orArguments:count:methodSignature:selector:withProxy:] 9 Foundation -[NSXPCConnection _sendSelector:withProxy:arg1:arg2:arg3:arg4:] 10 Foundation __NSXPCDistantObjectSimpleMessageSend4 11 CoreServices -[LSApplicationWorkspace commonClientOpenURL:options:configuration:synchronous:completionHandler:] 12 CoreServices -[LSApplicationWorkspace openURL:configuration:error:] 13 UIKitCore -[UIApplication _openURL:] 14 xxxxxx +[WXApi launchApplicationWithUrl:completion:] WXApi.m:1077 15 xxxxxx __104+[WXApi launchWechatWithExtralUrl:forceScheme:contextId:paramsDataStr:unnecessaryDataErased:completion:]_block_invoke.418 WXApi.m:935 16 libdispatch.dylib __dispatch_call_block_and_release 17 libdispatch.dylib __dispatch_client_callout 18 libdispatch.dylib __dispatch_main_queue_drain 19 libdispatch.dylib __dispatch_main_queue_callback_4CF 20 CoreFoundation ___CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ 21 CoreFoundation ___CFRunLoopRun 22 CoreFoundation _CFRunLoopRunSpecific 23 GraphicsServices _GSEventRunModal 24 UIKitCore -[UIApplication _run] 25 UIKitCore _UIApplicationMain 26 Huolala main main.m:14
兄弟用的是最新版2.0.2 SDK吗?反正我这边用的1.8.7.1SDK,底层确实还是用的openURL,会有卡死现象也不知道最新的2.0.2版本SDK 是否已经修改了这个问题了
@implementation UIApplication (LKOpenURLStuckFix)
+(void)load {
[self lk_swizzleMethod:@selector(openURL:) withMethod:@selector(lk_openURL:) error:nil];
}
- (void)lk_openURL:(NSURL *)URL {
// 卡死问题feature
BOOL isHook = [[BDAutoTrack ABTestConfigValueForKey:@"iOS_fixuiapplication_openurl_stuck" defaultValue:@(NO)] boolValue];
if (isHook) {
[self openURL:URL options:@{} completionHandler:nil];
} else {
[self lk_openURL:URL];
}
}
@end