登录 SDK 调起第三方应用

前言

在使用 QQ,微信等第三方登录时需要通过 application:openURL:options: 方法来调起对应的应用。但是在制作登录 SDK 时无法直接在 application:openURL:options: 写入相应的代码。此时需要通过 swizzle 技术来交换 application:openURL:options: 方法。

swizzle

application:openURL:options:UIApplicationDelegate 的方法,不能在 AppDelegate 当分类中 swizzle,因为 load 分类的时候并不能保证 UIApplicationDelegate 的代理方法已经实现。

可以通过一个 regist 方法在 application:didFinishLaunchingWithOptions:swizzle

这里要注意的是需要判断原来的类中是否已经存在 swizzle 的方法,防止重复交换。

BOOL registerMethod = class_addMethod(originalClass,
                                      swizzledSelector,
                                      method_getImplementation(swizzledMethod),
                                      method_getTypeEncoding(swizzledMethod));
if (!registerMethod) {
    return;
}

具体代码参考 GitHub

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容