前段时间我们手游出现在iOS10系统上Facebook登录调出白色网页,什么内容都没有。
经过测试发现,在iOS10以下系统都没问题,唯独在iOS10系统上就会出现此现象。首先想到的是Facebook本身SDK可能不支持iOS10系统,于是翻墙到Facebook官网查看,发现确实有新的SDK适配iOS10系统,欣喜若狂,那不就是替换一下SDK的事,替换完成之后,测试一看,竟然还是一样,那就排除SDK问题。然后就是网上查找各种帖子,发现少之又少,goole查找还算找到一点,可惜我英文不好,看不懂,哈哈,不过不要紧,有些关键字还是知道的,照着上面的几种方法修改,还是不行。折磨了我两天之后,终于在我一次次的测试(这边改下,那边改下),被我找到原因了。
首先:我们的手游是用Quick-Cocos2d-x3.3 版本开发的,FB的有关操作我集合到了一个继承于UIViewController的类
用的是Facebook的FBSDKLoginButton按钮进行的登录操作:
登录时首先把FB集合类添加到程序的主视图中,然后才会显示Facebook的web登录页面,不加是不会显示的。使用FBSDKLoginButton登录时创建好了还须监听FB登录回调事件。
之后通过测试,发现这种方法无论怎么搞在iOS10系统上都是一个空白的web登录界面,什么都操作不了。后来看到官网上还有一种Facebook登录接口,用的是FBSDKLoginManager这个类登录,果断换了试一下,发现还是没有效果,最后在AppController.mm类中启动游戏就调用FBSDKLoginManager类登录FB,发现有用了,得出结果就是:在iOS10系统上,FB登录一定得在主视图上做操作,子试图不行。(iOS10之前的是可以的),最后用的代码:
解释下funId是Lua调用OC函数时传过来的函数,登录成功之后把FB的userId、昵称nickName、FB头像地址等传回Lua函数进行登录操作。
方法:UIViewController* ctrol=[UIApplicationsharedApplication].keyWindow.rootViewController;是获取app主视图。