1.背景
由于twitter官方提供的twitter sdk 2018年10月31日已经停止更新维护,但是开放了源码,目前是由全球个人开发者自发维护,但是随着iOS13系统的更新,该twitter sdk在iOS13系统上会有bug,所以需要修改twitter sdk源码解决该问题。twitter 官方已经停止维护更新的sdk下载地址如下:https://github.com/twitter-archive/twitter-kit-ios。
2.存在问题
目前twitter源码由个人开发者touren在维护,github下载地址如下:https://github.com/touren/twitter-kit-ios,该最新版本的sdk 存在两个问题:
- 当安装twitter app的时候,点击twitter登录,弹出twitter app授权界面,点击取消的时候,在iOS13以上系统会弹出twitter网页登录界面,正常应该是直接返回当前app,不应该再弹出twitter网页登录;
- 当安装twitter app的时候,点击twitter登录,弹出twitter app授权界面,点击确认授权的时候,在iOS13以下系统会弹出twitter网页登录界面,正常应该是twitter登录成功返回当前app,不应该弹出twitter网页登录;
3.修改源码
下载touren维护的twitter最新版本源码https://github.com/touren/twitter-kit-ios,解压文件目录如下:
[图片上传失败...(image-804320-1589360734760)]
点击文件夹DemoApp,将文件Config.xcconfig.example文件后缀名字改成Config.xconfig,双击打开,将twitter key和secret 填上,目的是为了能运行twitter demo,目前用的
TWITTER_CONSUMER_KEY= xEsU8bNRpohAPycnOnUdlS2dW,
TWITTER_CONSUMER_SECRET= eLYEndNniceEcICuTanb6z27mN2NAmMagfepcyrBW10RlsW72Q,截图如下:
[图片上传失败...(image-6e47ab-1589360734760)]
点击DemoApp文件,双击DemoApp.xcodeproj工程运行项目,
- 打开TWTRTwitter.m文件,修改- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options方法中的源码,如下:
[图片上传失败...(image-d5cf4e-1589360734760)]
- 打开TWTRMobileSSO.m文件,修改-(BOOL)isWebWithURL:(NSURL*)url方法中的源码,如下:
[图片上传失败...(image-a51103-1589360734760)]
-
打开AppDelegate.m,新增一个变量@property(nonatomic,assign)UIBackgroundTaskIdentifier taskIdentifier;在
applicationWillResignActive方法中添加如下代码:(想要修复上述bug,Twitter SDK 必须配合这一步操作)
[图片上传失败...(image-450e59-1589360734759)]
[图片上传失败...(image-482e73-1589360734759)]
4.打包可用的twitter静态库
点击解压的根目录文件TwitterKit文件夹,双击TwitterKit.xcodeproj项目,target 选择TwitterKit,设置build settings 的Mach-o Type值为Static Library,移除Frameworks and Libraries中的libTwitterCore.a,cd 到twitter文件夹解压目录,执行./build.sh脚本文件,最终生成iOS文件夹得到TwitterKit.framework,如下:
[图片上传失败...(image-dab382-1589360734759)]
5.结论。目前网上也有其他个人开发者修改源码解决iOS13系统引起的bug,经过不同iOS系统测试,发现会带来其他问题,目前通过研究twitter源码,配合iOS13和iOS12机型不断测试,提供以上解决问题的方案,经过反复测试上述两个问题解决,twitter登录功能正常。目前已将编译好的twitter sdk 放在个人github上,供其他有需要的开发者下载https://github.com/xzwgithub/ios_twitterSdk_NO_UIWebView。
网友评论