Xcode16打包的工程,openURL失效,导致微信的方法失效

1、分析原因:

问题的根源是xcode16 openURL方法废弃了,替代方法是openURL:options:completionHandler

2、解决思路:

怎么才能在别的组建使用openURL方法时候,替换成新方法呢。

通过RunTime替换方法全局修改

最后在.pch文件里引一下即可

3、代码实现如下:

#import "UIApplication+SMMCustomApplication.h"

#import <objc/runtime.h>

@implementation UIApplication (SMMCustomApplication)

+(void)load{

    [super load];

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        Method old = class_getInstanceMethod(objc_getClass("UIApplication"), @selector(openURL:));

        Method new = class_getInstanceMethod(self, @selector(custom_openURL:));

        if (old && new) {

            method_exchangeImplementations(old, new);

        }


    });

}

- (void)custom_openURL:(NSURL *)url {

    if (@available(iOS 14.5, *)) {

        NSDictionary *options = @{UIApplicationOpenExternalURLOptionsEventAttributionKey : @YES};

        [[UIApplication sharedApplication] openURL:url options:options completionHandler:^(BOOL success) {

            if (success) {

                // URL成功打开

            } else {

                // URL打开失败

            }

        }];

    } else {

        // Fallback on earlier versions


    }

}

@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。