根据微信SDK官方文档介绍由于老版本 SDK 中使用的 openUrl 接口为系统废弃接口,开发者在 iOS18 升级 Xcode16 进行打包,则会偶现SDK无法拉起微信的问题,但是我升级到 2.0.4版本还是无法正常跳转
使用以下方法曲线救国一把
@implementation UIApplication (OpenUrlBlock)
+ (void)load {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
SEL originalSelector = @selector(openURL:);
SEL swizzledSelector = @selector(swiz_openURL:);
[self swizzlingInClass:[self class] originalSelector:originalSelector swizzledSelector:swizzledSelector];
});
}
+ (void)swizzlingInClass:(Class)cls originalSelector:(SEL)originalSelector swizzledSelector:(SEL)swizzledSelector {
Class class = cls;
Method originalMethod = class_getInstanceMethod(class, originalSelector);
Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);
BOOL didAddMethod =
class_addMethod(class,
originalSelector,
method_getImplementation(swizzledMethod),
method_getTypeEncoding(swizzledMethod));
if (didAddMethod) {
class_replaceMethod(class,
swizzledSelector,
method_getImplementation(originalMethod),
method_getTypeEncoding(originalMethod));
} else {
method_exchangeImplementations(originalMethod, swizzledMethod);
}
}
- (BOOL)swiz_openURL:(NSURL*)url {
// openURL废弃全局替换为openURL:options:
[self openURL:url options:@{} completionHandler:nil];
return YES;
}
@end