iOS qq SDK升级v3.5.14填坑记录
问题背景
iOS的QQ SDK是TencentOpenAPI.framework文件,没有提供pods方式下载。
本文记录下iOS-QQ-SDKv3.3.9(release 2020.04.27)升级v3.5.14(release 2023.01.13)碰到的几个问题。
问题1-编译报错提示重定义
替换新版本的framework后,编译报错
报错一堆的 Redefinition of 'TencentAuthorizeState'
以及一堆的 Property has a previous declaration
将原先的导入处理
#import <TencentOpenAPI/TencentOAuth.h>
#import <TencentOpenAPI/QQApiInterface.h>
改为
#import <TencentOpenAPI/TencentOpenApiUmbrellaHeader.h>
问题2-QQ认证调用api报错
[_tencentOAuth authorize:permissions inSafari:NO];
No visible @interface for 'TencentOAuth' declares the selector 'authorize:inSafari:'是老版本SDK api已删除,
[_tencentOAuth authorize:permissions];
问题3-运行时控制台提示无法使用QQ登录及分享功能
唤起QQ app的api调用后,提示日志:
2023-04-09:12:47:14:106 [QQAPI] QQApiInterface.m:1004 用户未授权,暂时无法使用QQ登录及分享等功能。
查看官网SDK更新记录发现,
在v3.5.7有相关描述:开发者需通过接口通知QQ SDK,用户是否已进行隐私协议授权,而后QQ互联相关功能才能正常工作。
/**
* 设置用户是否已经授权同意授权隐私协议,在主体应用中,用户同意授权隐私协议后再初始化互联SDK,默认未同意授权
* 注意:如未同意授权隐私协议,则互联SDK的所有功能都无法使用,包括初始化!!!
* 从3.5.7版本开始支持该方法
*
* @param isAgreedAuthorization 是否已经授权,isAgreedAuthorization=YES, 表示已经同意授权;isAgreedAuthorization=NO,表示未同意授权,互联SDK的所有功能都无法使用
*/
[TencentOAuth setIsUserAgreedAuthorization:YES];