QQ第三方登录iPhone4s和5无法回调的坑

项目中的登录分享使用QQ登录是再正常不过的事情了,但是由于苹果设备的更新,及QQ版本升级,QQ及Apple对低端设备的支持是越来越差了。由于项目针对中低端消费的用户,不可避免的要支持下低端设备,比如iPhone5(c)及以下设备,但是集成之后就发现一个问题,点击QQ登录,虽然能跳转到QQ程序中,也显示授权界面,当你点击登录回到自己的程序的时候,神奇的事情发生了,程序没有任何反应,打断点发现没有进入到QQ的回调(tencentDidLogin/tencentDidNotLogin:/tencentDidNotNetWork)中。那我们就好好分析下这个问题。

1.通过调研发现,QQ SDK在3.1版本以后就不支持i386的cpu架构了,OK,那我先换成更低版本的SDK,2.9的,发现还是不行。

2.然后我看了下项目中的Bulid Settings -> valid architectures,发现默认的架构支持为,arm64,armv7,armv7s

3.现在好了,xcode8以上的IDE默认是不支持i386的,我认为应该是苹果不想支持iPhone5以下设备了。查了下,确实苹果将下架所有32位版本的App的,i386框架就是32位的系统。那好,既然你这么做了,我也懒得去支持iPhone5以下设备使用QQ客户端登录了,我改用网页登录。

4.网页登录其实很简单,但不是设置authorize:inSafari:,即使inSafari是YES,也不会通过网页登录,因为QQ早就废除了inSafari这个参数了。正确的做法是:先判断下设备型号,如果是iPhone5(c)及以下设备,_tencentOAuth(TencentOAuth *)设置一个属性,_tencentOAuth.authShareType = AuthShareType_TIM;但是用户得是没装QQTIM才行,如果用户装了TIM版,那也会跳到TIM版。索性也判断下用户装没装TIM版,如果装了的话,那就别让用户用QQ登录了。

<------关于4,我后续还会在补充更好的做法----->

你可能感兴趣的:(QQ第三方登录iPhone4s和5无法回调的坑)