diff --git a/android/libs/open_sdk_3.5.17.3_r75955a58_lite.jar b/android/libs/open_sdk_3.5.18.0_r2b95cc45_lite.jar similarity index 56% rename from android/libs/open_sdk_3.5.17.3_r75955a58_lite.jar rename to android/libs/open_sdk_3.5.18.0_r2b95cc45_lite.jar index 8be350a..0d92ddd 100644 Binary files a/android/libs/open_sdk_3.5.17.3_r75955a58_lite.jar and b/android/libs/open_sdk_3.5.18.0_r2b95cc45_lite.jar differ diff --git a/ios/Libraries/TencentOpenAPI.framework/TencentOpenAPI b/ios/Libraries/TencentOpenAPI.framework/TencentOpenAPI deleted file mode 100644 index 7b70b37..0000000 Binary files a/ios/Libraries/TencentOpenAPI.framework/TencentOpenAPI and /dev/null differ diff --git a/ios/Libraries/TencentOpenAPI.xcframework/Info.plist b/ios/Libraries/TencentOpenAPI.xcframework/Info.plist new file mode 100644 index 0000000..a6a2166 --- /dev/null +++ b/ios/Libraries/TencentOpenAPI.xcframework/Info.plist @@ -0,0 +1,42 @@ + + + + + AvailableLibraries + + + LibraryIdentifier + ios-arm64_armv7 + LibraryPath + TencentOpenAPI.framework + SupportedArchitectures + + arm64 + armv7 + + SupportedPlatform + ios + + + LibraryIdentifier + ios-arm64_i386_x86_64-simulator + LibraryPath + TencentOpenAPI.framework + SupportedArchitectures + + arm64 + i386 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/ios/Libraries/TencentOpenAPI.xcframework/_CodeSignature/CodeDirectory b/ios/Libraries/TencentOpenAPI.xcframework/_CodeSignature/CodeDirectory new file mode 100644 index 0000000..53a17c7 Binary files /dev/null and b/ios/Libraries/TencentOpenAPI.xcframework/_CodeSignature/CodeDirectory differ diff --git a/ios/Libraries/TencentOpenAPI.xcframework/_CodeSignature/CodeRequirements b/ios/Libraries/TencentOpenAPI.xcframework/_CodeSignature/CodeRequirements new file mode 100644 index 0000000..413086d Binary files /dev/null and b/ios/Libraries/TencentOpenAPI.xcframework/_CodeSignature/CodeRequirements differ diff --git a/ios/Libraries/TencentOpenAPI.xcframework/_CodeSignature/CodeRequirements-1 b/ios/Libraries/TencentOpenAPI.xcframework/_CodeSignature/CodeRequirements-1 new file mode 100644 index 0000000..8584025 Binary files /dev/null and b/ios/Libraries/TencentOpenAPI.xcframework/_CodeSignature/CodeRequirements-1 differ diff --git a/ios/Libraries/TencentOpenAPI.xcframework/_CodeSignature/CodeResources b/ios/Libraries/TencentOpenAPI.xcframework/_CodeSignature/CodeResources new file mode 100644 index 0000000..1589d6b --- /dev/null +++ b/ios/Libraries/TencentOpenAPI.xcframework/_CodeSignature/CodeResources @@ -0,0 +1,338 @@ + + + + + files + + ios-arm64_armv7/TencentOpenAPI.framework/Headers/Modules/module.modulemap + + NyClSJF5AkbzsaKwZiYthWwFtEQ= + + ios-arm64_armv7/TencentOpenAPI.framework/Headers/QQApiInterface.h + + gGvGGJpjkKChFdTHG4JCYcZFU4Q= + + ios-arm64_armv7/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h + + esGx2t1F+90ifcIvwQVGW3Q9gRs= + + ios-arm64_armv7/TencentOpenAPI.framework/Headers/SDKDef.h + + pNuALDKV3dBaHRTHj87Ha0FRn2M= + + ios-arm64_armv7/TencentOpenAPI.framework/Headers/TencentOAuth.h + + qY4CtCUAIMH/VEBpkqo8h+uRhy8= + + ios-arm64_armv7/TencentOpenAPI.framework/Headers/TencentOpenApiUmbrellaHeader.h + + qGEWrIy0/CmpJkMMCxSd9xQoDh0= + + ios-arm64_armv7/TencentOpenAPI.framework/PrivacyInfo.xcprivacy + + 6PyG/Sn5jh81qqGDYJ701GSxHBw= + + ios-arm64_armv7/TencentOpenAPI.framework/TencentOpenAPI + + zhzY6q5hBfr8FmOfXQA1LNh9+uQ= + + ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/Modules/module.modulemap + + NyClSJF5AkbzsaKwZiYthWwFtEQ= + + ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/QQApiInterface.h + + gGvGGJpjkKChFdTHG4JCYcZFU4Q= + + ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h + + esGx2t1F+90ifcIvwQVGW3Q9gRs= + + ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/SDKDef.h + + pNuALDKV3dBaHRTHj87Ha0FRn2M= + + ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/TencentOAuth.h + + qY4CtCUAIMH/VEBpkqo8h+uRhy8= + + ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/TencentOpenApiUmbrellaHeader.h + + qGEWrIy0/CmpJkMMCxSd9xQoDh0= + + ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/PrivacyInfo.xcprivacy + + 6PyG/Sn5jh81qqGDYJ701GSxHBw= + + ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/TencentOpenAPI + + WekdkVkYtv+g4tkZiPWiGIkEVhY= + + + files2 + + ios-arm64_armv7/TencentOpenAPI.framework/Headers/Modules/module.modulemap + + hash + + NyClSJF5AkbzsaKwZiYthWwFtEQ= + + hash2 + + foQZVVDy5Y31H0ExXBx9x0xFKY8cAS8r03UUsRf4BiE= + + + ios-arm64_armv7/TencentOpenAPI.framework/Headers/QQApiInterface.h + + hash + + gGvGGJpjkKChFdTHG4JCYcZFU4Q= + + hash2 + + MxO8YQDQsllAe5FE7OhaoXJ0m7es4H7C/BX/1bwH/aM= + + + ios-arm64_armv7/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h + + hash + + esGx2t1F+90ifcIvwQVGW3Q9gRs= + + hash2 + + zaU96f0KPDIQOvvSCFZI0o7rVNdHm8+lTtxuWq103VU= + + + ios-arm64_armv7/TencentOpenAPI.framework/Headers/SDKDef.h + + hash + + pNuALDKV3dBaHRTHj87Ha0FRn2M= + + hash2 + + GqM+994bCqOt7Y0BeiHKE53NauFkYQkGums/PGAPcyo= + + + ios-arm64_armv7/TencentOpenAPI.framework/Headers/TencentOAuth.h + + hash + + qY4CtCUAIMH/VEBpkqo8h+uRhy8= + + hash2 + + xT3XtPEo90J7djfYWyf/8z0YS2IzECDHUGqfpQUYM9g= + + + ios-arm64_armv7/TencentOpenAPI.framework/Headers/TencentOpenApiUmbrellaHeader.h + + hash + + qGEWrIy0/CmpJkMMCxSd9xQoDh0= + + hash2 + + /WKoVcUHfNNJlwWXqATrmrg8erC1ZXQ33PY6t7yp7o0= + + + ios-arm64_armv7/TencentOpenAPI.framework/PrivacyInfo.xcprivacy + + hash + + 6PyG/Sn5jh81qqGDYJ701GSxHBw= + + hash2 + + 3I1+H5p9p/M4HzB0a1kgbuYs4iW2n+O8u2YjT4RZvjU= + + + ios-arm64_armv7/TencentOpenAPI.framework/TencentOpenAPI + + hash + + zhzY6q5hBfr8FmOfXQA1LNh9+uQ= + + hash2 + + HuKrqZm0EY143fBavTx2/WzpepcKXaNOqqViYC6ArMI= + + + ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/Modules/module.modulemap + + hash + + NyClSJF5AkbzsaKwZiYthWwFtEQ= + + hash2 + + foQZVVDy5Y31H0ExXBx9x0xFKY8cAS8r03UUsRf4BiE= + + + ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/QQApiInterface.h + + hash + + gGvGGJpjkKChFdTHG4JCYcZFU4Q= + + hash2 + + MxO8YQDQsllAe5FE7OhaoXJ0m7es4H7C/BX/1bwH/aM= + + + ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h + + hash + + esGx2t1F+90ifcIvwQVGW3Q9gRs= + + hash2 + + zaU96f0KPDIQOvvSCFZI0o7rVNdHm8+lTtxuWq103VU= + + + ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/SDKDef.h + + hash + + pNuALDKV3dBaHRTHj87Ha0FRn2M= + + hash2 + + GqM+994bCqOt7Y0BeiHKE53NauFkYQkGums/PGAPcyo= + + + ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/TencentOAuth.h + + hash + + qY4CtCUAIMH/VEBpkqo8h+uRhy8= + + hash2 + + xT3XtPEo90J7djfYWyf/8z0YS2IzECDHUGqfpQUYM9g= + + + ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/TencentOpenApiUmbrellaHeader.h + + hash + + qGEWrIy0/CmpJkMMCxSd9xQoDh0= + + hash2 + + /WKoVcUHfNNJlwWXqATrmrg8erC1ZXQ33PY6t7yp7o0= + + + ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/PrivacyInfo.xcprivacy + + hash + + 6PyG/Sn5jh81qqGDYJ701GSxHBw= + + hash2 + + 3I1+H5p9p/M4HzB0a1kgbuYs4iW2n+O8u2YjT4RZvjU= + + + ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/TencentOpenAPI + + hash + + WekdkVkYtv+g4tkZiPWiGIkEVhY= + + hash2 + + ukOfNfnbdVJM2zXbxuRncy8mqjIwEo/VB2feUNw7pYU= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/ios/Libraries/TencentOpenAPI.xcframework/_CodeSignature/CodeSignature b/ios/Libraries/TencentOpenAPI.xcframework/_CodeSignature/CodeSignature new file mode 100644 index 0000000..e8835ae Binary files /dev/null and b/ios/Libraries/TencentOpenAPI.xcframework/_CodeSignature/CodeSignature differ diff --git a/ios/Libraries/TencentOpenAPI.framework/Headers/module.modulemap b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/Headers/Modules/module.modulemap similarity index 67% rename from ios/Libraries/TencentOpenAPI.framework/Headers/module.modulemap rename to ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/Headers/Modules/module.modulemap index 2143330..d504d26 100644 --- a/ios/Libraries/TencentOpenAPI.framework/Headers/module.modulemap +++ b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/Headers/Modules/module.modulemap @@ -1,4 +1,4 @@ -framework module TencentOpenApi{ +module TencentOpenApi{ umbrella header "TencentOpenApiUmbrellaHeader.h" export * } diff --git a/ios/Libraries/TencentOpenAPI.framework/Headers/QQApiInterface.h b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/Headers/QQApiInterface.h similarity index 97% rename from ios/Libraries/TencentOpenAPI.framework/Headers/QQApiInterface.h rename to ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/Headers/QQApiInterface.h index f77f78d..faca3ec 100644 --- a/ios/Libraries/TencentOpenAPI.framework/Headers/QQApiInterface.h +++ b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/Headers/QQApiInterface.h @@ -181,18 +181,6 @@ typedef void(^QQApiInterfaceSendMessageResultBlock)(QQApiSendResultCode sendResu */ + (BOOL)isSupportPushToQZone; -/** - 启动QQ - \return 成功返回YES,否则返回NO - */ -+ (BOOL)openQQ; - -/** - 启动TIM - \return 成功返回YES,否则返回NO - */ -+ (BOOL)openTIM; - /** 获取QQ下载地址 diff --git a/ios/Libraries/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h similarity index 94% rename from ios/Libraries/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h rename to ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h index a02a7bd..19e8069 100644 --- a/ios/Libraries/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h +++ b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h @@ -34,6 +34,12 @@ typedef NS_ENUM(NSInteger, QQApiSendResultCode) { EQQAPI_THIRD_APP_GROUP_ERROR_HAS_BINDED = 16, // 该组织已经绑定群聊 EQQAPI_THIRD_APP_GROUP_ERROR_NOT_BINDED = 17, // 该组织尚未绑定群聊 EQQAPI_THIRD_APP_GROUP_ERROR_HAS_UNBINDED = 18, // 该组织已经解绑群聊 + EQQAPI_IMAGE_SIZE_OUT_OF_BOUNND = 19, // 图片大小超过限制(图片不能超过5M,缩略图不能超过1M) + EQQAPI_TITLE_LENGTH_OUT_OF_BOUNND = 20, // 标题长度超过限制(不能超过128) + EQQAPI_TITLE_NIL_ERROR = 21, // 标题不能为空 + EQQAPI_DESC_LENGTH_OUT_OF_BOUNND = 22, // 描述信息长度超过限制(不能超过512) + EQQAPI_URL_LENGTH_OUT_OF_BOUNND = 23, // URL参数长度超过限制(不能超过1024) + EQQAPI_URL_NIL_ERROR = 24, // URL参数不能为空 EQQAPIQZONENOTSUPPORTTEXT = 10000, // qzone分享不支持text类型分享 EQQAPIQZONENOTSUPPORTIMAGE = 10001, // qzone分享不支持image类型分享 EQQAPIVERSIONNEEDUPDATE = 10002, // 当前QQ版本太低,需要更新至新版本才可以支持 @@ -90,6 +96,13 @@ __attribute__((visibility("default"))) @interface QQApiObject : NSObject * 默认分享到QQ,如果QQ未安装检测TIM是否安装 */ @property (nonatomic, assign) ShareDestType shareDestType; + +/** + * 检查参数是否完整有效 + * @return 检查参数结果 + */ +- (QQApiSendResultCode)checkParamValid; + @end // ArkObject @@ -97,7 +110,7 @@ __attribute__((visibility("default"))) @interface QQApiObject : NSObject */ __attribute__((visibility("default"))) @interface ArkObject : NSObject @property (nonatomic, copy) NSString *arkData; ///< 显示Ark所需的数据,json串,长度暂不限制 -@property (nonatomic,assign) QQApiObject* qqApiObject; ///<原有老版本的QQApiObject +@property (nonatomic, strong) QQApiObject* qqApiObject; ///<原有老版本的QQApiObject - (id)initWithData:(NSString *)arkData qqApiObject:(QQApiObject*)qqApiObject; + (id)objectWithData:(NSString *)arkData qqApiObject:(QQApiObject*)qqApiObject; @@ -110,14 +123,14 @@ __attribute__((visibility("default"))) @interface QQApiMiniProgramObject : NSObj @property (nonatomic, copy) NSString *miniAppID; //必填,小程序的AppId(注:必须在QQ互联平台中,将该小程序与分享的App绑定) @property (nonatomic, copy) NSString *miniPath; //必填,小程序的展示路径 @property (nonatomic, copy) NSString *webpageUrl; //必填,兼容低版本的网页链接 -@property (nonatomic,assign) MiniProgramType miniprogramType; //非必填,小程序的类型,默认正式版(3),可选测试版(1)、预览版(4) +@property (nonatomic, assign) MiniProgramType miniprogramType; //非必填,小程序的类型,默认正式版(3),可选测试版(1)、预览版(4) @end //唤起小程序 - QQ 8.1.8 __attribute__((visibility("default"))) @interface QQApiLaunchMiniProgramObject : QQApiObject @property (nonatomic, copy) NSString *miniAppID; //必填,小程序的AppId(注:必须在QQ互联平台中,将该小程序与分享的App绑定) @property (nonatomic, copy) NSString *miniPath; //小程序的展示路径,不填展示默认小程序首页 -@property (nonatomic,assign) MiniProgramType miniprogramType; //非必填,小程序的类型,默认正式版(3),可选测试版(1)、开发版(0) +@property (nonatomic, assign) MiniProgramType miniprogramType; //非必填,小程序的类型,默认正式版(3),可选测试版(1)、开发版(0) @end //小程序唤起第三方 - SDK 3.3.9 @@ -341,9 +354,9 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject // QQApiVideoForQZoneObject /** @brief 视频对象 用于分享视频到空间,走写说说路径QQApiObject,assetURL和videoData两个参数必须设置至少一个参数,如果assetURL设置了忽略videoData参数 - @param assetURL可传ALAsset的ALAssetPropertyAssetURL,或者PHAsset的localIdentifier - @param extMap 扩展字段 - @param videoData 视频数据,大小不超过50M + assetURL 可传ALAsset的ALAssetPropertyAssetURL,或者PHAsset的localIdentifier + extMap 扩展字段 + videoData 视频数据,大小不超过50M */ @interface QQApiVideoForQZoneObject : QQApiObject @@ -513,11 +526,11 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject // QQApiExtraServiceObject; 通用业务消息处理类(旧版,后续使用QQApiCommonServiceObject) /** @brief OpenSDK扩展支持的服务,通用接口,后续会扩充能力 - @param serviceID [必选] 扩展支持的服务类型ID,参考官方文档说明 - @param openID [必选] 授权登录后对该用户的唯一标识 - @param toUin [可选] 对方的QQ号码 - @param extraInfo [可选] 扩展字段 - @note 该接口的使用须先登录 + serviceID [必选] 扩展支持的服务类型ID,参考官方文档说明 + openID [必选] 授权登录后对该用户的唯一标识 + toUin [可选] 对方的QQ号码 + extraInfo [可选] 扩展字段 + 该接口的使用须先登录 */ @interface QQApiExtraServiceObject : QQApiObject @property (nonatomic, copy) NSString *serviceID; @@ -556,19 +569,6 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject @end -//////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Ad item object definition -//////////////////////////////////////////////////////////////////////////////////////////////////////////// -/** @brief 广告数据对象 - */ -@interface QQApiAdItem : NSObject -@property (nonatomic, copy) NSString *title; ///<名称 -@property (nonatomic, copy) NSString *description;///<描述 -@property (nonatomic, copy) NSData *imageData;///<广告图片 -@property (nonatomic, strong) NSURL *target;///<广告目标链接 -@end - - #pragma mark - QQApi请求消息类型 /** diff --git a/ios/Libraries/TencentOpenAPI.framework/Headers/SDKDef.h b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/Headers/SDKDef.h similarity index 96% rename from ios/Libraries/TencentOpenAPI.framework/Headers/SDKDef.h rename to ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/Headers/SDKDef.h index 72d9a95..bb56770 100644 --- a/ios/Libraries/TencentOpenAPI.framework/Headers/SDKDef.h +++ b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/Headers/SDKDef.h @@ -87,23 +87,23 @@ typedef enum /** * 错误提示语 */ -@property (nonatomic, retain) NSString *errorMsg; +@property (nonatomic, copy) NSString *errorMsg; /** * 服务器返回数据的json格式字典\n * 字典内具体参数的命名和含义请参考\ref api_spec */ -@property (nonatomic, retain) NSDictionary *jsonResponse; +@property (nonatomic, copy) NSDictionary *jsonResponse; /** * 服务器返回的原始数据字符串 */ -@property (nonatomic, retain) NSString *message; +@property (nonatomic, copy) NSString *message; /** * 用户保留数据 */ -@property (nonatomic, retain) id userData; +@property (nonatomic, strong) id userData; @end @@ -342,6 +342,9 @@ FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_GET_USER_INFO; /** 移动端获取用户信息 */ FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_GET_SIMPLE_USER_INFO; + +/** 移动端获取用户信息 */ +FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_ALL; ///@} @@ -397,7 +400,7 @@ typedef id TCRequiredId; /** * API参数中的保留字段,可以塞入任意字典支持的类型,再调用完成后会带回给调用方 */ -@property (nonatomic, retain) TCRequiredId paramUserData; +@property (nonatomic, strong) TCRequiredId paramUserData; /** * APIResponse,API的返回结果 diff --git a/ios/Libraries/TencentOpenAPI.framework/Headers/TencentOAuth.h b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/Headers/TencentOAuth.h similarity index 54% rename from ios/Libraries/TencentOpenAPI.framework/Headers/TencentOAuth.h rename to ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/Headers/TencentOAuth.h index 1708fe0..7bdbf8e 100644 --- a/ios/Libraries/TencentOpenAPI.framework/Headers/TencentOAuth.h +++ b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/Headers/TencentOAuth.h @@ -35,23 +35,15 @@ typedef NS_ENUM(NSUInteger, TencentAuthMode) { * * TencentOAuth实现授权登录逻辑以及相关开放接口的请求调用 */ -@interface TencentOAuth : NSObject -{ +@interface TencentOAuth : NSObject { NSMutableDictionary *_apiRequests; - NSString *_accessToken; - NSDate *_expirationDate; - id _sessionDelegate; - NSString *_localAppId; - NSString *_openId; - NSString *_redirectURI; - NSArray *_permissions; } /** Access Token凭证,用于后续访问各开放接口 */ @property(nonatomic, copy) NSString *accessToken; /** Access Token的失效期 */ -@property(nonatomic, copy) NSDate *expirationDate; +@property(nonatomic, strong) NSDate *expirationDate; /** 已实现的开放接口的回调委托对象 */ @property(nonatomic, weak) id sessionDelegate; @@ -66,16 +58,16 @@ typedef NS_ENUM(NSUInteger, TencentAuthMode) { @property(nonatomic, copy) NSString *redirectURI; /** 第三方应用在互联开放平台申请的appID */ -@property(nonatomic, retain) NSString *appId; +@property(nonatomic, copy) NSString *appId; /** 第三方应用在互联开放平台注册的UniversalLink */ -@property(nonatomic, retain) NSString *universalLink; +@property(nonatomic, copy) NSString *universalLink; /** 主要是互娱的游戏设置uin */ -@property(nonatomic, retain) NSString *uin; +@property(nonatomic, copy) NSString *uin; /** 主要是互娱的游戏设置鉴定票据 */ -@property(nonatomic, retain) NSString *skey; +@property(nonatomic, copy) NSString *skey; /** 登陆透传的数据 */ @property(nonatomic, copy) NSDictionary *passData; @@ -84,7 +76,7 @@ typedef NS_ENUM(NSUInteger, TencentAuthMode) { @property(nonatomic, assign) TencentAuthMode authMode; /** union id */ -@property(nonatomic, retain) NSString *unionid; +@property(nonatomic, copy) NSString *unionid; /** 第三方在授权登录/分享 时选择 QQ,还是TIM 。在授权前一定要指定其中一个类型*/ @property(nonatomic, assign) TencentAuthShareType authShareType; @@ -121,6 +113,12 @@ typedef NS_ENUM(NSUInteger, TencentAuthMode) { **/ - (BOOL)deleteCachedToken; +/** + * 删除openid + * + **/ +- (void)deleteOpenId; + /** * 用来获得当前sdk的版本号 * \return 返回sdk版本号 @@ -137,7 +135,7 @@ typedef NS_ENUM(NSUInteger, TencentAuthMode) { /** * 用来获得当前sdk的是否精简版 - * \return 返回YES表示精简版 + * @return 返回YES表示精简版 **/ + (BOOL)isLiteSDK; @@ -152,48 +150,91 @@ typedef NS_ENUM(NSUInteger, TencentAuthMode) { + (TencentAuthorizeState *)authorizeState; +/** + * 获取TencentOAuth单例 + */ ++ (instancetype)sharedInstance; + +/** + * 设置SDK参数 + * + * @param appId 不可为nil,第三方应用在互联开放平台申请的唯一标识 + * @param enableUniveralLink 默认为NO,第三方应用是否将sdk和手机QQ的交互方式切换为UniversalLink方式,启用后则在iOS9及以上的系统都会生效UniversalLink方式;否则,默认仅在iOS13及以上的系统生效UniversalLink方式。 + * @param universalLink 可以为nil,第三方应用在互联开放平台注册的UniversalLink,和bundleID一一对应(当为nil时,互联平台会按规则生成UniversalLink,详见官网说明) + * @param delegate 不可为nil,第三方应用用于接收请求返回结果的委托对象 + * + * @note + * 使用说明】 + * 1、支持sdk与手Q的交互切换为UniversalLink模式,主要目的"是为了避免手Q的UrlScheme被其他应用抢注后,导致sdk接口功能受到影响"。 + * 2 、由于手Q版本在 >=8.1.3 后才适配了UniversalLink,所以一旦开启了enabled开关,“务必做到”及时知会用户升级手Q版本。 + * + */ +- (void)setupAppId:(NSString *)appId +enableUniveralLink:(BOOL)enableUniveralLink + universalLink:(NSString *)universalLink + delegate:(id)delegate; + /** * 初始化TencentOAuth对象 - * \param appId 不可为nil,第三方应用在互联开放平台申请的唯一标识 - * \param delegate 不可为nil,第三方应用用于接收请求返回结果的委托对象 - * \return 初始化后的授权登录对象 - */ -- (id)initWithAppId:(NSString *)appId - andDelegate:(id)delegate; - -/** -* 初始化TencentOAuth对象(>=3.3.7) -* \param appId 不可为nil,第三方应用在互联开放平台申请的唯一标识 -* \param universalLink 可以为nil,第三方应用在互联开放平台注册的UniversalLink,和bundleID一一对应(当为nil时,互联平台会按规则生成universallink,详见官网说明) -* \param delegate 不可为nil,第三方应用用于接收请求返回结果的委托对象 -* \return 初始化后的授权登录对象 -* -****【使用说明】***** -* 1、支持BundleId与UniversalLink的一一对应,主要目的“是为了解决应用的iPhone版本和iPad HD版本共用同一个AppId,导致同时安装情况下的跳转问题"。 -* 2 、由于手Q版本在 >=8.1.8 后才支持了这种对应方式,所以一旦使用,“务必做到”及时知会用户升级手Q版本。 -**** -*/ -- (id)initWithAppId:(NSString *)appId - andUniversalLink:(NSString *)universalLink - andDelegate:(id)delegate; - -/** -* 初始化TencentOAuth对象(>=3.3.8) -* \param appId 不可为nil,第三方应用在互联开放平台申请的唯一标识 -* \param enabled 默认为NO,第三方应用是否将sdk和手机QQ的交互方式切换为UniversalLink方式,启用后则在iOS9及以上的系统都会生效UniversalLink方式;否则,默认仅在iOS13及以上的系统生效UniversalLink方式。 -* \param universalLink 可以为nil,第三方应用在互联开放平台注册的UniversalLink,和bundleID一一对应(当为nil时,互联平台会按规则生成UniversalLink,详见官网说明) -* \param delegate 不可为nil,第三方应用用于接收请求返回结果的委托对象 -* \return 初始化后的授权登录对象 -* -*****【使用说明】***** -* 1、支持sdk与手Q的交互切换为UniversalLink模式,主要目的"是为了避免手Q的UrlScheme被其他应用抢注后,导致sdk接口功能受到影响"。 -* 2 、由于手Q版本在 >=8.1.3 后才适配了UniversalLink,所以一旦开启了enabled开关,“务必做到”及时知会用户升级手Q版本。 -***** -*/ -- (id)initWithAppId:(NSString *)appId - enableUniveralLink:(BOOL)enabled - universalLink:(NSString *)universalLink - delegate:(id)delegate; + * !!!注意:3.5.17版本开始,内部单例实现,多次调用返回同一实例 + * + * @param appId 不可为nil,第三方应用在互联开放平台申请的唯一标识 + * @param delegate 不可为nil,第三方应用用于接收请求返回结果的委托对象 + * @return 初始化后的授权登录对象 + * + * 推荐使用初始化方法,并且适配UniversalLink: + * - (instancetype)initWithAppId:(NSString *)appId + * enableUniveralLink:(BOOL)enabled + * universalLink:(NSString *)universalLink + * delegate:(id)delegate; + */ +- (instancetype)initWithAppId:(NSString *)appId + andDelegate:(id)delegate __attribute__((deprecated("此接口即将下线!请使用setupAppId:enableUniveralLink:universalLink:delegate"))); + +/** + * 初始化TencentOAuth对象(>=3.3.7) + * !!!注意:3.5.17版本开始,内部单例实现,多次调用返回同一实例 + * + * @param appId 不可为nil,第三方应用在互联开放平台申请的唯一标识 + * @param universalLink 可以为nil,第三方应用在互联开放平台注册的UniversalLink,和bundleID一一对应(当为nil时,互联平台会按规则生成universallink,详见官网说明) + * @param delegate 不可为nil,第三方应用用于接收请求返回结果的委托对象 + * @return 初始化后的授权登录对象 + * + * 【使用说明】 + * 1、支持BundleId与UniversalLink的一一对应,主要目的"是为了解决应用的iPhone版本和iPad HD版本共用同一个AppId,导致同时安装情况下的跳转问题"。 + * 2、由于手Q版本在 >=8.1.8 后才支持了这种对应方式,所以一旦使用,“务必做到”及时知会用户升级手Q版本。 + * + * 推荐使用初始化方法,并且适配UniversalLink: + * - (instancetype)initWithAppId:(NSString *)appId + * enableUniveralLink:(BOOL)enabled + * universalLink:(NSString *)universalLink + * delegate:(id)delegate; + * + */ +- (instancetype)initWithAppId:(NSString *)appId + andUniversalLink:(NSString *)universalLink + andDelegate:(id)delegate __attribute__((deprecated("此接口即将下线!请使用setupAppId:enableUniveralLink:universalLink:delegate"))); + +/** + * 初始化TencentOAuth对象(>=3.3.8) + * !!!注意:3.5.17版本开始,内部单例实现,多次调用返回同一实例 + * + * @param appId 不可为nil,第三方应用在互联开放平台申请的唯一标识 + * @param enabled 默认为NO,第三方应用是否将sdk和手机QQ的交互方式切换为UniversalLink方式,启用后则在iOS9及以上的系统都会生效UniversalLink方式;否则,默认仅在iOS13及以上的系统生效UniversalLink方式。 + * @param universalLink 可以为nil,第三方应用在互联开放平台注册的UniversalLink,和bundleID一一对应(当为nil时,互联平台会按规则生成UniversalLink,详见官网说明) + * @param delegate 不可为nil,第三方应用用于接收请求返回结果的委托对象 + * @return 初始化后的授权登录对象 + * + * @note + * 使用说明】 + * 1、支持sdk与手Q的交互切换为UniversalLink模式,主要目的"是为了避免手Q的UrlScheme被其他应用抢注后,导致sdk接口功能受到影响"。 + * 2 、由于手Q版本在 >=8.1.3 后才适配了UniversalLink,所以一旦开启了enabled开关,“务必做到”及时知会用户升级手Q版本。 + * + */ +- (instancetype)initWithAppId:(NSString *)appId + enableUniveralLink:(BOOL)enabled + universalLink:(NSString *)universalLink + delegate:(id)delegate __attribute__((deprecated("此接口即将下线!请使用setupAppId:enableUniveralLink:universalLink:delegate"))); /** * 设置用户是否已经授权同意授权隐私协议,在主体应用中,用户同意授权隐私协议后再初始化互联SDK,默认未同意授权 @@ -212,9 +253,9 @@ typedef NS_ENUM(NSUInteger, TencentAuthMode) { /** * 判断用户手机上是否安装手机QQ - * \return YES:安装 NO:没安装 + * @return YES:安装 NO:没安装 * - * \note SDK目前已经支持QQ、TIM授权登录及分享功能, 会按照QQ>TIM的顺序进行调用。 + * @note SDK目前已经支持QQ、TIM授权登录及分享功能, 会按照QQ>TIM的顺序进行调用。 * 只要用户安装了QQ、TIM中任意一个应用,都可为第三方应用进行授权登录、分享功能。 * 第三方应用在接入SDK时不需要判断是否安装QQ、TIM。若有判断安装QQ、TIM的逻辑建议移除。 */ @@ -222,81 +263,77 @@ typedef NS_ENUM(NSUInteger, TencentAuthMode) { /** * 判断用户手机上是否安装手机TIM - * \return YES:安装 NO:没安装 + * @return YES:安装 NO:没安装 * - * \note SDK目前已经支持QQ、TIM授权登录及分享功能, 会按照QQ>TIM的顺序进行调用。 + * @note SDK目前已经支持QQ、TIM授权登录及分享功能, 会按照QQ>TIM的顺序进行调用。 * 只要用户安装了QQ、TIM中任意一个应用,都可为第三方应用进行授权登录、分享功能。 * 第三方应用在接入SDK时不需要判断是否安装QQ、TIM。若有判断安装QQ、TIM的逻辑建议移除。 */ + (BOOL)iphoneTIMInstalled; /** - * 登录授权 + * 发起授权登录,如果安装了QQ APP,则拉起QQ发起授权登录;如果为安装QQ APP则在第三方应用进入H5页面,输入账密授权登录。 * - * \param permissions 授权信息列 + * @param permissions 授权信息列 + * @return 发起调用是否成功 */ - (BOOL)authorize:(NSArray *)permissions; /** - * 登录授权 - * \param permissions 授权信息列表 - * \param localAppId 应用APPID - */ -- (BOOL)authorize:(NSArray *)permissions - localAppId:(NSString *)localAppId; - -/** - * 登录授权 + * 发起授权登录, 在第三方应用进入H5页面,显示二维码,通过扫码完成授权登录 * - * \param permissions 授权信息列 + * @param permissions 授权信息列 + * @return 发起调用结果 */ - (BOOL)authorizeWithQRlogin:(NSArray *)permissions; /** * 增量授权,因用户没有授予相应接口调用的权限,需要用户确认是否授权 - * \param permissions 需增量授权的信息列表 - * \return 增量授权调用是否成功 + * @param permissions 需增量授权的信息列表 + * @return 发起增量授权调用是否成功 */ - (BOOL)incrAuthWithPermissions:(NSArray *)permissions; /** * 重新授权,因token废除或失效导致接口调用失败,需用户重新授权 - * \param permissions 授权信息列表,同登录授权 - * \return 授权调用是否成功 + * @param permissions 授权信息列表,同登录授权 + * @return 重新授权调用是否成功 */ - (BOOL)reauthorizeWithPermissions:(NSArray *)permissions; /** * 获取UnindID,可以根据UnindID的比较来确定OpenID是否属于同一个用户 - * \return NO未登录,信息不足;YES条件满足,发送请求成功,请等待回调 + * 通过代理方法:- (void)didGetUnionID;返回请求结果。 + * + * @return NO未登录,信息不足;YES条件满足,发送请求成功,请等待回调 */ - (BOOL)RequestUnionId; /** * (静态方法)处理应用拉起协议 - * \param url 处理被其他应用呼起时的逻辑 - * \return 处理结果,YES表示成功,NO表示失败 + * @param url 处理被其他应用呼起时的逻辑 + * @return 处理结果,YES表示成功,NO表示失败 */ + (BOOL)HandleOpenURL:(NSURL *)url; /** * (静态方法)sdk是否可以处理应用拉起协议 - * \param url 处理被其他应用呼起时的逻辑 - * \return 处理结果,YES表示可以 NO表示不行 + * @param url 处理被其他应用呼起时的逻辑 + * @return 处理结果,YES表示可以 NO表示不行 */ + (BOOL)CanHandleOpenURL:(NSURL *)url; /** * (静态方法)处理应用的UniversalLink拉起协议 - * \param url 处理被其他应用呼起时的逻辑 - * \return 处理结果,YES表示成功,NO表示失败 + * @param url 处理被其他应用呼起时的逻辑 + * @return 处理结果,YES表示成功,NO表示失败 */ + (BOOL)HandleUniversalLink:(NSURL *)url; /** * (静态方法)sdk是否可以处理应用的Universallink拉起协议 - * \param url 处理被其他应用呼起时的逻辑(应用的Universallink链接须满足官网注册时的格式要求) - * \return 处理结果,YES表示可以 NO表示不行 + * @param url 处理被其他应用呼起时的逻辑(应用的Universallink链接须满足官网注册时的格式要求) + * @return 处理结果,YES表示可以 NO表示不行 * 注:在调用其他Universallink相关处理接口之前,均需进行此项判断 */ + (BOOL)CanHandleUniversalLink:(NSURL *)url; @@ -314,48 +351,63 @@ typedef NS_ENUM(NSUInteger, TencentAuthMode) { /** * 退出登录(退出登录后,TecentOAuth失效,需要重新初始化) - * \param delegate 第三方应用用于接收请求返回结果的委托对象 + * @param delegate 第三方应用用于接收请求返回结果的委托对象 */ - (void)logout:(id)delegate; /** * 判断登录态是否有效 - * \return 处理结果,YES表示有效,NO表示无效,请用户重新登录授权 + * @return 处理结果,YES表示有效,NO表示无效,请用户重新登录授权 */ - (BOOL)isSessionValid; /** * 获取用户个人信息 - * \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录 + * @return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录 */ - (BOOL)getUserInfo; /** * 退出指定API调用 - * \param userData 用户调用某条API的时候传入的保留参数 - * \return 处理结果,YES表示成功 NO表示失败 + * @param userData 用户调用某条API的时候传入的保留参数 + * @return 处理结果,YES表示成功 NO表示失败 */ - (BOOL)cancel:(id)userData; /** * CGI类任务创建接口 - * \param apiURL CGI请求的URL地址 - * \param method CGI请求方式:"GET","POST" - * \param params CGI请求参数字典 - * \param callback CGI请求结果的回调接口对象 - * \return CGI请求任务实例,用于取消任务,返回nil代表任务创建失败 + * @param apiURL CGI请求的URL地址 + * @param method CGI请求方式:"GET","POST" + * @param params CGI请求参数字典 + * @param callback CGI请求结果的回调接口对象 + * @return CGI请求任务实例,用于取消任务,返回nil代表任务创建失败 */ - (TCAPIRequest *)cgiRequestWithURL:(NSURL *)apiURL method:(NSString *)method params:(NSDictionary *)params callback:(id)callback; /** * TencentOpenApi发送任务统一接口 - * \param request 请求发送的任务 - * \param callback 任务发送后的回调地址 + * @param request 请求发送的任务 + * @param callback 任务发送后的回调地址 */ - (BOOL)sendAPIRequest:(TCAPIRequest *)request callback:(id)callback; +/** + * 获得用户的openId,仅有内存缓存 + * @return 返回openId + */ - (NSString *)getUserOpenID; +/** + * 获取appSignToken + * @return 返回appSignToken + */ ++ (NSString *)getAppSignToken; + +/** + * 设置appSignToken,跨进程的应用可以通过该方法手动设置appSignToken + */ ++ (void)setupAppSignToken:(NSString *)appSignToken; + @end #pragma mark - TencentLoginDelegate(授权登录回调协议) @@ -401,6 +453,10 @@ typedef NS_ENUM(NSUInteger, TencentAuthMode) { * return YES时,就算本地有手Q也会打开web界面 */ - (BOOL)forceWebLogin; + +/* 获得appSignToken回调 */ +- (void)tencentDidGetAppSignToken:(NSString *)appSignToken; + @end #pragma mark - TencentSessionDelegate(开放接口回调协议) @@ -410,8 +466,7 @@ typedef NS_ENUM(NSUInteger, TencentAuthMode) { * * 第三方应用需要实现每条需要调用的API的回调协议 */ -@protocol TencentSessionDelegate +@protocol TencentSessionDelegate @optional @@ -422,64 +477,64 @@ typedef NS_ENUM(NSUInteger, TencentAuthMode) { /** * 因用户未授予相应权限而需要执行增量授权。在用户调用某个api接口时,如果服务器返回操作未被授权,则触发该回调协议接口,由第三方决定是否跳转到增量授权页面,让用户重新授权。 - * \param tencentOAuth 登录授权对象。 - * \param permissions 需增量授权的权限列表。 - * \return 是否仍然回调返回原始的api请求结果。 - * \note 不实现该协议接口则默认为不开启增量授权流程。若需要增量授权请调用\ref TencentOAuth#incrAuthWithPermissions: \n注意:增量授权时用户可能会修改登录的帐号 + * @param tencentOAuth 登录授权对象。 + * @param permissions 需增量授权的权限列表。 + * @return 是否仍然回调返回原始的api请求结果。 + * @note 不实现该协议接口则默认为不开启增量授权流程。若需要增量授权请调用\ref TencentOAuth#incrAuthWithPermissions: \n注意:增量授权时用户可能会修改登录的帐号 */ - (BOOL)tencentNeedPerformIncrAuth:(TencentOAuth *)tencentOAuth withPermissions:(NSArray *)permissions; /** * [该逻辑未实现]因token失效而需要执行重新登录授权。在用户调用某个api接口时,如果服务器返回token失效,则触发该回调协议接口,由第三方决定是否跳转到登录授权页面,让用户重新授权。 - * \param tencentOAuth 登录授权对象。 - * \return 是否仍然回调返回原始的api请求结果。 - * \note 不实现该协议接口则默认为不开启重新登录授权流程。若需要重新登录授权请调用\ref TencentOAuth#reauthorizeWithPermissions: \n注意:重新登录授权时用户可能会修改登录的帐号 + * @param tencentOAuth 登录授权对象。 + * @return 是否仍然回调返回原始的api请求结果。 + * @note 不实现该协议接口则默认为不开启重新登录授权流程。若需要重新登录授权请调用\ref TencentOAuth#reauthorizeWithPermissions: \n注意:重新登录授权时用户可能会修改登录的帐号 */ - (BOOL)tencentNeedPerformReAuth:(TencentOAuth *)tencentOAuth; /** * 用户通过增量授权流程重新授权登录,token及有效期限等信息已被更新。 - * \param tencentOAuth token及有效期限等信息更新后的授权实例对象 - * \note 第三方应用需更新已保存的token及有效期限等信息。 + * @param tencentOAuth token及有效期限等信息更新后的授权实例对象 + * @note 第三方应用需更新已保存的token及有效期限等信息。 */ - (void)tencentDidUpdate:(TencentOAuth *)tencentOAuth; /** * 用户增量授权过程中因取消或网络问题导致授权失败 - * \param reason 授权失败原因,具体失败原因参见sdkdef.h文件中\ref UpdateFailType + * @param reason 授权失败原因,具体失败原因参见sdkdef.h文件中\ref UpdateFailType */ - (void)tencentFailedUpdate:(UpdateFailType)reason; /** * 获取用户个人信息回调 - * \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse - * \remarks 正确返回示例: \snippet example/getUserInfoResponse.exp success + * @param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse + * @remarks 正确返回示例: \snippet example/getUserInfoResponse.exp success * 错误返回示例: \snippet example/getUserInfoResponse.exp fail */ - (void)getUserInfoResponse:(APIResponse*) response; /** * 社交API统一回调接口 - * \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse - * \param message 响应的消息,目前支持‘SendStory’,‘AppInvitation’,‘AppChallenge’,‘AppGiftRequest’ + * @param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse + * @param message 响应的消息,目前支持‘SendStory’,‘AppInvitation’,‘AppChallenge’,‘AppGiftRequest’ */ - (void)responseDidReceived:(APIResponse*)response forMessage:(NSString *)message; /** * post请求的上传进度 - * \param tencentOAuth 返回回调的tencentOAuth对象 - * \param bytesWritten 本次回调上传的数据字节数 - * \param totalBytesWritten 总共已经上传的字节数 - * \param totalBytesExpectedToWrite 总共需要上传的字节数 - * \param userData 用户自定义数据 + * @param tencentOAuth 返回回调的tencentOAuth对象 + * @param bytesWritten 本次回调上传的数据字节数 + * @param totalBytesWritten 总共已经上传的字节数 + * @param totalBytesExpectedToWrite 总共需要上传的字节数 + * @param userData 用户自定义数据 */ - (void)tencentOAuth:(TencentOAuth *)tencentOAuth didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite userData:(id)userData; /** * 通知第三方界面需要被关闭 - * \param tencentOAuth 返回回调的tencentOAuth对象 - * \param viewController 需要关闭的viewController + * @param tencentOAuth 返回回调的tencentOAuth对象 + * @param viewController 需要关闭的viewController */ - (void)tencentOAuth:(TencentOAuth *)tencentOAuth doCloseViewController:(UIViewController *)viewController; @@ -488,7 +543,7 @@ typedef NS_ENUM(NSUInteger, TencentAuthMode) { #pragma mark - TencentWebViewDelegate(H5登录webview旋转方向回调) /** - * \brief TencentWebViewDelegate: H5登录webview旋转方向回调协议 + * @brief TencentWebViewDelegate: H5登录webview旋转方向回调协议 * * 第三方应用可以根据自己APP的旋转方向限制,通过此协议设置 */ diff --git a/ios/Libraries/TencentOpenAPI.framework/Headers/TencentOpenApiUmbrellaHeader.h b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/Headers/TencentOpenApiUmbrellaHeader.h similarity index 100% rename from ios/Libraries/TencentOpenAPI.framework/Headers/TencentOpenApiUmbrellaHeader.h rename to ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/Headers/TencentOpenApiUmbrellaHeader.h diff --git a/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/PrivacyInfo.xcprivacy b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..79bc9e2 --- /dev/null +++ b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/PrivacyInfo.xcprivacy @@ -0,0 +1,17 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + + diff --git a/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/TencentOpenAPI b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/TencentOpenAPI new file mode 100644 index 0000000..b789bcd Binary files /dev/null and b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_armv7/TencentOpenAPI.framework/TencentOpenAPI differ diff --git a/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/Modules/module.modulemap b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/Modules/module.modulemap new file mode 100644 index 0000000..d504d26 --- /dev/null +++ b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/Modules/module.modulemap @@ -0,0 +1,4 @@ +module TencentOpenApi{ + umbrella header "TencentOpenApiUmbrellaHeader.h" + export * +} diff --git a/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/QQApiInterface.h b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/QQApiInterface.h new file mode 100644 index 0000000..faca3ec --- /dev/null +++ b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/QQApiInterface.h @@ -0,0 +1,220 @@ +/// +/// \file QQApiInterface.h +/// \brief QQApi接口简化封装 +/// +/// Created by Tencent on 12-5-15. +/// Copyright (c) 2012年 Tencent. All rights reserved. +/// + +#import +#import "QQApiInterfaceObject.h" + +typedef void (^sendResultBlock)(NSDictionary *result); + +// 发送消息回调是否发送成功 +typedef void(^QQApiInterfaceSendMessageResultBlock)(QQApiSendResultCode sendResultCode, NSString *message); + +/** + \brief 处理来至QQ的请求及响应的回调协议 + */ +@protocol QQApiInterfaceDelegate + +/** + 处理来至QQ的请求 + */ +- (void)onReq:(QQBaseReq *)req; + +/** + 处理来至QQ的响应 + */ +- (void)onResp:(QQBaseResp *)resp; + +/** + 处理QQ在线状态的回调 + */ +- (void)isOnlineResponse:(NSDictionary *)response; + +@end + +/** + \brief 对QQApi的简单封装类 + */ +@interface QQApiInterface : NSObject + +/** + 处理由手Q唤起的普通跳转请求 + \param url 待处理的url跳转请求 + \param delegate 第三方应用用于处理来至QQ请求及响应的委托对象 + \return 跳转请求处理结果,YES表示成功处理,NO表示不支持的请求协议或处理失败 + */ ++ (BOOL)handleOpenURL:(NSURL *)url delegate:(id)delegate; + +/** + 处理由手Q唤起的universallink跳转请求 + \param universallink 待处理的universallink跳转请求 + \param delegate 第三方应用用于处理来至QQ请求及响应的委托对象 + \return 跳转请求处理结果,YES表示成功处理,NO表示不支持的请求协议或处理失败 + */ ++ (BOOL)handleOpenUniversallink:(NSURL*)universallink delegate:(id)delegate; + +/** + 向手Q发起分享请求 + \param req 分享内容的请求 + \return 请求发送结果码 + */ ++ (QQApiSendResultCode)sendReq:(QQBaseReq *)req; + + +/** + 向手Q QZone结合版发起分享请求 + \note H5分享只支持单张网络图片的传递 + \param req 分享内容的请求 + \return 请求发送结果码 + */ ++ (QQApiSendResultCode)SendReqToQZone:(QQBaseReq *)req; + +/** + 向手Q发起设置QQ头像 + \param req 分享内容的请求 + \return 请求发送结果码 + */ ++ (QQApiSendResultCode)sendMessageToQQAvatarWithReq:(QQBaseReq*)req; + + ++ (QQApiSendResultCode)sendMessageToQQAuthWithReq:(QQBaseReq*)req; + + +/** + 向手Q发起绑群请求 + \param req 请求的内容 + \param resultBlock 请求回调 + */ ++ (void)sendThirdAppBindGroupReq:(QQBaseReq *)req resultBlock:(sendResultBlock)resultBlock; + +/** + 向手Q发起加群请求 + \param req 请求的内容 + \param resultBlock 请求回调 + */ ++ (void)sendThirdAppJoinGroupReq:(QQBaseReq *)req resultBlock:(sendResultBlock)resultBlock; + +/** + 向手Q发起解绑群请求 + \param req 请求的内容 + \param resultBlock 请求回调 + */ ++ (void)sendThirdAppUnBindGroupReq:(QQBaseReq *)req resultBlock:(sendResultBlock)resultBlock; + +/** + 向手Q发起创建QQ频道的请求 + \param req 请求的内容 + \param resultBlock 回调发送结果 + \return void + */ ++ (void)sendMessageToCreateQQGroupProWithMessageRequest:(SendMessageToQQReq *)messageRequest sendResultBlock:(QQApiInterfaceSendMessageResultBlock)sendResultBlock; + + +/** + 向手Q发起加入QQ频道的请求 + \param req 请求的内容 + \param resultBlock 回调发送结果 + \return void + */ ++ (void)sendMessageToJoinQQGroupProWithMessageRequest:(SendMessageToQQReq *)messageRequest sendResultBlock:(QQApiInterfaceSendMessageResultBlock)sendResultBlock; + + +/** + 向手Q发起查询QQ频道openID的请求 + \param req 请求的内容 + \param resultBlock 请求回调 + */ ++ (void)sendQueryQQGroupProInfo:(QQBaseReq *)req resultBlock:(sendResultBlock)resultBlock; + +/** + 向手Q发起组图分享到表情收藏 + \param req 分享内容的请求 + \return 请求发送结果码 + */ ++ (QQApiSendResultCode)sendMessageToFaceCollectionWithReq:(QQBaseReq*)req; + +/** + 检测是否已安装QQ + \return 如果QQ已安装则返回YES,否则返回NO + + \note SDK目前已经支持QQ、TIM授权登录及分享功能, 会按照QQ>TIM的顺序进行调用。 + 只要用户安装了QQ、TIM中任意一个应用,都可为第三方应用进行授权登录、分享功能。 + 第三方应用在接入SDK时不需要判断是否安装QQ、TIM。若有判断安装QQ、TIM的逻辑建议移除。 + */ ++ (BOOL)isQQInstalled; + +/** + 检测是否已安装TIM + \return 如果TIM已安装则返回YES,否则返回NO + + \note SDK目前已经支持QQ、TIM授权登录及分享功能, 会按照QQ>TIM的顺序进行调用。 + 只要用户安装了QQ、TIM中任意一个应用,都可为第三方应用进行授权登录、分享功能。 + 第三方应用在接入SDK时不需要判断是否安装QQ、TIM。若有判断安装QQ、TIM的逻辑建议移除。 + */ ++ (BOOL)isTIMInstalled; + +/** + 检测QQ是否支持API调用 + \return 如果当前安装QQ版本支持API调用则返回YES,否则返回NO + */ ++ (BOOL)isQQSupportApi; + +/** + 检测TIM是否支持API调用 + \return 如果当前安装TIM版本支持API调用则返回YES,否则返回NO + */ ++ (BOOL)isTIMSupportApi __attribute__((deprecated("已过期, 建议删除调用,调用地方用YES替代。"))); + +/** + 检测是否支持分享 + \return 如果当前已安装QQ且QQ版本支持API调用 或者 当前已安装TIM且TIM版本支持API调用则返回YES,否则返回NO + */ ++ (BOOL)isSupportShareToQQ; + +/** + 检测是否支持分享到QQ结合版QZone + \return 如果当前已安装QQ且QQ版本支持API调用则返回YES,否则返回NO + */ ++ (BOOL)isSupportPushToQZone; + +/** + 获取QQ下载地址 + + 如果App通过QQApiInterface#isQQInstalledQQApiInterface#isQQSupportApi检测发现QQ没安装或当前版本QQ不支持API调用,可引导用户通过打开此链接下载最新版QQ。 + \return iPhoneQQ下载地址 + */ ++ (NSString *)getQQInstallUrl; + +/** + 获取TIM下载地址 + + 如果App通过QQApiInterface#isTIMInstalled检测发现TIM没安装或当前版本TIM不支持API调用,可引导用户通过打开此链接下载最新版TIM。 + \return iPhoneTIM下载地址 + */ ++ (NSString *)getTIMInstallUrl; + +#pragma mark - Log + +/*! @brief 调用此函数可以导出QQSDK的Log到第三方中,用于定位问题 + + 注意1:SDK会强引用这个block,注意不要导致内存泄漏,注意不要导致内存泄漏 + 注意2:调用过一次startLog by block之后,如果再调用一次任意方式的startLoad,会释放上一次logBlock,不再回调上一个logBlock + * + * @param logBlock 打印log的回调block + */ ++ (void)startLogWithBlock:(QQApiLogBolock)logBlock; + +///停止回调打印 ++ (void)stopLog; + +///设置打印日志到文件开关on/off,如果不设置,默认不打印到文件 ++ (void)setSwitchPrintLogToFile:(BOOL)on; + +///日志文件目录 ++ (NSString *)getLogFilePath; + +@end diff --git a/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h new file mode 100644 index 0000000..19e8069 --- /dev/null +++ b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h @@ -0,0 +1,754 @@ +/// +/// \file QQApiInterfaceObject.h +/// \brief QQApiInterface所依赖的请求及应答消息对象封装帮助类 +/// +/// Created by Tencent on 12-5-15. +/// Copyright (c) 2012年 Tencent. All rights reserved. +/// + +#ifndef QQApiInterface_QQAPIOBJECT_h +#define QQApiInterface_QQAPIOBJECT_h + +#import + +typedef NS_ENUM(NSInteger, QQApiSendResultCode) { + EQQAPISENDSUCESS = 0, + EQQAPIQQNOTINSTALLED = 1, // QQ未安装 + EQQAPIQQNOTSUPPORTAPI = 2, // QQ api不支持 + EQQAPIMESSAGETYPEINVALID = 3, + EQQAPIMESSAGECONTENTNULL = 4, + EQQAPIMESSAGECONTENTINVALID = 5, + EQQAPIAPPNOTREGISTED = 6, + EQQAPIAPPSHAREASYNC = 7, + EQQAPIQQNOTSUPPORTAPI_WITH_ERRORSHOW = 8, // QQ api不支持 && SDK显示error提示(已废弃) + EQQAPIMESSAGEARKCONTENTNULL = 9, // ark内容为空 + EQQAPIMESSAGE_MINI_CONTENTNULL = 10, // 小程序参数为空 + EQQAPISENDFAILD = -1, // 发送失败 + EQQAPISHAREDESTUNKNOWN = -2, // 未指定分享到QQ或TIM + EQQAPITIMSENDFAILD = -3, // 发送失败 + EQQAPITIMNOTINSTALLED = 11, // TIM未安装 + EQQAPITIMNOTSUPPORTAPI = 12, // TIM api不支持 + EQQAPI_INCOMING_PARAM_ERROR = 13, // 外部传参错误 + EQQAPI_THIRD_APP_GROUP_ERROR_APP_NOT_AUTHORIZIED = 14, // APP未获得授权 + EQQAPI_THIRD_APP_GROUP_ERROR_CGI_FAILED = 15, // CGI请求失败 + EQQAPI_THIRD_APP_GROUP_ERROR_HAS_BINDED = 16, // 该组织已经绑定群聊 + EQQAPI_THIRD_APP_GROUP_ERROR_NOT_BINDED = 17, // 该组织尚未绑定群聊 + EQQAPI_THIRD_APP_GROUP_ERROR_HAS_UNBINDED = 18, // 该组织已经解绑群聊 + EQQAPI_IMAGE_SIZE_OUT_OF_BOUNND = 19, // 图片大小超过限制(图片不能超过5M,缩略图不能超过1M) + EQQAPI_TITLE_LENGTH_OUT_OF_BOUNND = 20, // 标题长度超过限制(不能超过128) + EQQAPI_TITLE_NIL_ERROR = 21, // 标题不能为空 + EQQAPI_DESC_LENGTH_OUT_OF_BOUNND = 22, // 描述信息长度超过限制(不能超过512) + EQQAPI_URL_LENGTH_OUT_OF_BOUNND = 23, // URL参数长度超过限制(不能超过1024) + EQQAPI_URL_NIL_ERROR = 24, // URL参数不能为空 + EQQAPIQZONENOTSUPPORTTEXT = 10000, // qzone分享不支持text类型分享 + EQQAPIQZONENOTSUPPORTIMAGE = 10001, // qzone分享不支持image类型分享 + EQQAPIVERSIONNEEDUPDATE = 10002, // 当前QQ版本太低,需要更新至新版本才可以支持 + ETIMAPIVERSIONNEEDUPDATE = 10004, // 当前TIM版本太低,需要更新至新版本才可以支持 + EAPPURLTYPESILLEGALITY = 20000, // (>=3.3.8)第三方APP的info.plist中UrlTypes字段存在QQ的UrlScheme + EQQAPI_ERROR_USER_NOT_AGREED_AUTHORIZATION = 30001, // 用户未同意隐私协议,用户同意隐私协议后,需要设置[TencentOAuth setIsUserAgreedAuthorization:YES]; +}; + +#pragma mark - QQApiObject(分享对象类型) + +// QQApiObject control flags +typedef NS_ENUM(NSUInteger,kQQAPICtrlFlag) { + kQQAPICtrlFlagQZoneShareOnStart = 0x01, + kQQAPICtrlFlagQZoneShareForbid = 0x02, //屏蔽好友选择器上的空间入口 + kQQAPICtrlFlagQQShare = 0x04, + kQQAPICtrlFlagQQShareFavorites = 0x08, //收藏 + kQQAPICtrlFlagQQShareDataline = 0x10, //数据线 + kQQAPICtrlFlagQQShareEnableArk = 0x20, //支持ARK + kQQAPICtrlFlagQQShareEnableMiniProgram = 0x40, //支持小程序 +}; + +// 分享到QQ或TIM +typedef NS_ENUM(NSUInteger, ShareDestType) { + ShareDestTypeQQ = 0, + ShareDestTypeTIM, +}; + +//小程序的类型 +typedef NS_ENUM(NSUInteger, MiniProgramType) { + MiniProgramType_Develop = 0, // 开发版 + MiniProgramType_Test = 1, // 测试版 + MiniProgramType_Online = 3, // 正式版,默认 + MiniProgramType_Preview = 4, // 预览版 +}; + +/// 打印回调的block +typedef void(^QQApiLogBolock)(NSString *logStr); + +// QQApiObject +/** \brief 所有在QQ及插件间发送的数据对象的根类。 + */ +__attribute__((visibility("default"))) @interface QQApiObject : NSObject + +@property (nonatomic, copy) NSString *title; ///< 标题,最长128个字符 +@property (nonatomic, copy) NSString *description; ///<简要描述,最长512个字符 +@property (nonatomic, copy) NSString *universalLink; ///(>=3.3.7)支持第三方传入在互联开放平台注册的universallink +@property (nonatomic, assign) uint64_t cflag; +//353新增两个字断给游戏侧使用,对齐微信sdk +@property (nonatomic, copy) NSString *tagName; +@property (nonatomic, copy) NSString *messageExt; +/* + * 分享到QQ/TIM + * SDK根据是否安装对应客户端进行判断,判断顺序:QQ > TIM + * 默认分享到QQ,如果QQ未安装检测TIM是否安装 + */ +@property (nonatomic, assign) ShareDestType shareDestType; + +/** + * 检查参数是否完整有效 + * @return 检查参数结果 + */ +- (QQApiSendResultCode)checkParamValid; + +@end + +// ArkObject +/** \brief 支持Ark的根类。 + */ +__attribute__((visibility("default"))) @interface ArkObject : NSObject +@property (nonatomic, copy) NSString *arkData; ///< 显示Ark所需的数据,json串,长度暂不限制 +@property (nonatomic, strong) QQApiObject* qqApiObject; ///<原有老版本的QQApiObject + +- (id)initWithData:(NSString *)arkData qqApiObject:(QQApiObject*)qqApiObject; ++ (id)objectWithData:(NSString *)arkData qqApiObject:(QQApiObject*)qqApiObject; +@end + +#pragma mark QQ小程序 +//分享小程序消息 - QQ 8.0.8 +__attribute__((visibility("default"))) @interface QQApiMiniProgramObject : NSObject +@property (nonatomic, strong) QQApiObject* qqApiObject; //原有老版本的QQApiObject +@property (nonatomic, copy) NSString *miniAppID; //必填,小程序的AppId(注:必须在QQ互联平台中,将该小程序与分享的App绑定) +@property (nonatomic, copy) NSString *miniPath; //必填,小程序的展示路径 +@property (nonatomic, copy) NSString *webpageUrl; //必填,兼容低版本的网页链接 +@property (nonatomic, assign) MiniProgramType miniprogramType; //非必填,小程序的类型,默认正式版(3),可选测试版(1)、预览版(4) +@end + +//唤起小程序 - QQ 8.1.8 +__attribute__((visibility("default"))) @interface QQApiLaunchMiniProgramObject : QQApiObject +@property (nonatomic, copy) NSString *miniAppID; //必填,小程序的AppId(注:必须在QQ互联平台中,将该小程序与分享的App绑定) +@property (nonatomic, copy) NSString *miniPath; //小程序的展示路径,不填展示默认小程序首页 +@property (nonatomic, assign) MiniProgramType miniprogramType; //非必填,小程序的类型,默认正式版(3),可选测试版(1)、开发版(0) +@end + +//小程序唤起第三方 - SDK 3.3.9 +__attribute__((visibility("default"))) @interface QQApiMiniProgramLaunchObject : QQApiObject +@property (nonatomic, copy) NSString *appParameter; //小程序带来的数据,透传 ++ (instancetype)newWithAppParameter:(NSString *)parameter; +@end + +// QQApiResultObject +/** \brief 用于请求回应的数据类型。 +

可能错误码及描述如下:

+ + + + + + + + +
errorerrorDescription注释
0nil成功
-1param error参数错误
-2group code is invalid该群不在自己的群列表里面
-3upload photo failed上传图片失败
-4user give up the current operation用户放弃当前操作
-5client internal error客户端内部处理错误
+ */ +__attribute__((visibility("default"))) @interface QQApiResultObject : QQApiObject +@property (nonatomic, copy) NSString *error; ///<错误 +@property (nonatomic, copy) NSString *errorDescription; ///<错误描述 +@property (nonatomic, copy) NSString *extendInfo; ///<扩展信息 +@property (nonatomic, copy) NSDictionary *otherInfo; ///<其他扩展信息 +@end + +// QQApiTextObject +/** \brief 文本对象 + */ +@interface QQApiTextObject : QQApiObject +@property (nonatomic, copy)NSString *text; ///<文本内容,必填,最长1536个字符 + +- (id)initWithText:(NSString *)text; ///<初始化方法 ++ (id)objectWithText:(NSString *)text;///<工厂方法,获取一个QQApiTextObject对象. + +@end + +// QQApiURLObject +typedef NS_ENUM(NSUInteger, QQApiURLTargetType) { + QQApiURLTargetTypeNotSpecified = 0x00, + QQApiURLTargetTypeAudio = 0x01, + QQApiURLTargetTypeVideo = 0x02, + QQApiURLTargetTypeNews = 0x03 +}; + +/** @brief URL对象类型。 + + 包括URL地址,URL地址所指向的目标类型及预览图像。 + */ +__attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject +/** + URL地址所指向的目标类型. + @note 参见QQApi.h 中的 QQApiURLTargetType 定义. + */ +@property (nonatomic)QQApiURLTargetType targetContentType; + +@property (nonatomic, strong) NSURL *url; ///QQApiExtendObject对象 + @param data 数据内容 + @param previewImageData 用于预览的图片 + @param title 标题 + @param description 此对象,分享的描述 + @return + 一个自动释放的QQApiExtendObject实例 + */ ++ (id)objectWithData:(NSData *)data previewImageData:(NSData *)previewImageData title:(NSString *)title description:(NSString *)description; +/** + helper方法获取一个autorelease的QQApiExtendObject对象 + @param data 数据内容 + @param previewImageData 用于预览的图片 + @param title 标题 + @param description 此对象,分享的描述 + @param imageDataArray 发送的多张图片队列 + @return + 一个自动释放的QQApiExtendObject实例 + */ ++ (id)objectWithData:(NSData *)data previewImageData:(NSData *)previewImageData title:(NSString *)title description:(NSString *)description imageDataArray:(NSArray *)imageDataArray; + + +@end + +// QQApiImageObject +/** @brief 图片对象 + 用于分享图片内容的对象,是一个指定为图片类型的QQApiExtendObject + */ +@interface QQApiImageObject : QQApiExtendObject +@end + +// QQApiImageForQQAvatarObject +/** @brief 图片对象 + 用于设置QQ头像内容的对象,是一个指定为图片类型的QQApiExtendObject + */ +@interface QQApiImageForQQAvatarObject : QQApiExtendObject +@end +/** + * @brief 视频对象 + * 用于设置动态头像 + * assetURL可传ALAsset的ALAssetPropertyAssetURL,或者PHAsset的localIdentifier + 从手Q返回的错误码: + //第三方设置动态头像结果 + @"ret=0"//设置成功 + @"ret=-10&error_des=user cancel"//用户取消设置 + @"ret=-11&error_des=pasteboard have no video data"//剪切板没有数据 + @"ret=-12&error_des=export data failed"//从剪切板导出数据到本地失败 + @"ret=-13&error_des=url param invalid"//sdk传递过来的数据有误 + @"ret=-14&error_des=video param invalid"//视频的参数不符合要求(检测第三方视频源方案:1、分辨率跟480*480保持一致;2、视频长度0.5s~8s) + @"ret=-15&error_des=app authorised failed"//应用鉴权失败 + @"ret=-16&error_des=upload video failed"//设置头像,上传到后台失败 + @"ret=-17&error_des=account diff"//账号不一致 + */ +@interface QQApiVideoForQQAvatarObject : QQApiExtendObject +@property (nonatomic, copy) NSString *assetURL; +@end + + + +//QQApiAuthObject 用于拉起手Q的授权详情页 +@interface QQApiAuthObject : QQApiObject +@end + +// QQApiImageArrayForFaceCollectionObject +/** @brief 图片数组对象 + 用于分享图片组到表情收藏,是一个指定为图片类型的QQApiObject + */ +@interface QQApiImageArrayForFaceCollectionObject : QQApiObject + +@property (nonatomic, copy) NSArray *imageDataArray;///图片数组 + +/** + 初始化方法 + @param imageDataArray 图片数组 + */ +- (id)initWithImageArrayData:(NSArray *)imageDataArray; +/** + helper方法获取一个autorelease的QQApiObject对象 + @param imageDataArray 发送的多张图片队列 + @return + 一个自动释放的QQApiObject实例 + */ ++ (id)objectWithimageDataArray:(NSArray *)imageDataArray; + +@end + +// QQApiImageArrayForQZoneObject +/** @brief 图片对象 + 用于分享图片到空间,走写说说路径,是一个指定为图片类型的,当图片数组为空时,默认走文本写说说QQApiObject + */ +@interface QQApiImageArrayForQZoneObject : QQApiObject + +@property (nonatomic, copy) NSArray *imageDataArray;///图片数组 +@property (nonatomic, copy) NSDictionary *extMap; // 扩展字段 + +/** + 初始化方法 + @param imageDataArray 图片数组 + @param title 写说说的内容,可以为空 + @param extMap 扩展字段 + */ +- (id)initWithImageArrayData:(NSArray *)imageDataArray title:(NSString *)title extMap:(NSDictionary *)extMap; + +/** + helper方法获取一个autorelease的QQApiExtendObject对象 + @param title 写说说的内容,可以为空 + @param imageDataArray 发送的多张图片队列 + @param extMap 扩展字段 + @return + 一个自动释放的QQApiExtendObject实例 + */ ++ (id)objectWithimageDataArray:(NSArray *)imageDataArray title:(NSString *)title extMap:(NSDictionary *)extMap; + +@end + +// QQApiVideoForQZoneObject +/** @brief 视频对象 + 用于分享视频到空间,走写说说路径QQApiObject,assetURL和videoData两个参数必须设置至少一个参数,如果assetURL设置了忽略videoData参数 + assetURL 可传ALAsset的ALAssetPropertyAssetURL,或者PHAsset的localIdentifier + extMap 扩展字段 + videoData 视频数据,大小不超过50M + */ +@interface QQApiVideoForQZoneObject : QQApiObject + +@property (nonatomic, copy) NSString *assetURL; +@property (nonatomic, copy) NSDictionary *extMap; // 扩展字段 +@property (nonatomic, copy) NSData *videoData; + +- (id)initWithAssetURL:(NSString *)assetURL title:(NSString *)title extMap:(NSDictionary *)extMap; + ++ (id)objectWithAssetURL:(NSString *)assetURL title:(NSString *)title extMap:(NSDictionary *)extMap; + +- (id)initWithVideoData:(NSData *)videoData title:(NSString *)title extMap:(NSDictionary *)extMap; + ++ (id)objectWithVideoData:(NSData *)videoData title:(NSString *)title extMap:(NSDictionary *)extMap; + +@end + +// QQApiWebImageObject +/** @brief 图片对象 + 用于分享网络图片内容的对象,是一个指定网络图片url的: 该类型只在2.9.0的h5分享中才支持, + 原有的手q分享是不支持该类型的。 + */ +@interface QQApiWebImageObject : QQApiObject + +@property (nonatomic, strong) NSURL *previewImageURL; ///<预览图像URL + +/** + 初始化方法 + @param previewImageURL 用于预览的图片 + @param title 标题 + @param description 此对象,分享的描述 + */ +- (id)initWithPreviewImageURL:(NSURL *)previewImageURL title:(NSString *)title description:(NSString *)description; + +/** + helper方法获取一个autorelease的QQApiWebImageObject对象 + @param previewImageURL 用于预览的图片 + @param title 标题 + @param description 此对象,分享的描述 + */ ++ (id)objectWithPreviewImageURL:(NSURL *)previewImageURL title:(NSString *)title description:(NSString *)description; + +@end + + +//QQApiFileObject +/** @brief 本地文件对象(暂只支持分享到手机QQ数据线功能) + 用于分享文件内容的对象,是一个指定为文件类型的QQApiExtendObject + */ +@interface QQApiFileObject : QQApiExtendObject { + NSString *_fileName; +} + +@property (nonatomic, copy)NSString *fileName; + +@end + +// QQApiAudioObject +/** @brief 音频URL对象 + 用于分享目标内容为音频的URL的对象 + */ +@interface QQApiAudioObject : QQApiURLObject + +@property (nonatomic, strong) NSURL *flashURL; ///<音频URL地址,最长512个字符 + +/** + 获取一个autorelease的QQApiAudioObject + @param url 音频内容的目标URL + @param title 分享内容的标题 + @param description 分享内容的描述 + @param data 分享内容的预览图像 + @note 如果url为空,调用QQApi#sendMessage:时将返回FALSE + */ ++ (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageData:(NSData *)data; + +/** + 获取一个autorelease的QQApiAudioObject + @param url 音频内容的目标URL + @param title 分享内容的标题 + @param description 分享内容的描述 + @param previewURL 分享内容的预览图像URL + @note 如果url为空,调用QQApi#sendMessage:时将返回FALSE + */ ++ (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageURL:(NSURL *)previewURL; + +@end + +// QQApiVideoObject +/** @brief 视频URL对象 + 用于分享目标内容为视频的URL的对象 + + QQApiVideoObject类型的分享,目前在Android和PC QQ上接收消息时,展现有待完善,待手机QQ版本以后更新支持 + 目前如果要分享视频,推荐使用 QQApiNewsObject 类型 + */ +@interface QQApiVideoObject : QQApiURLObject + +@property (nonatomic, strong) NSURL *flashURL; ///<视频URL地址,最长512个字符 + +/** + 获取一个autorelease的QQApiVideoObject + @param url 视频内容的目标URL + @param title 分享内容的标题 + @param description 分享内容的描述 + @param data 分享内容的预览图像 + @note 如果url为空,调用QQApi#sendMessage:时将返回FALSE + */ ++ (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageData:(NSData *)data; +/** + 获取一个autorelease的QQApiVideoObject + @param url 视频内容的目标URL + @param title 分享内容的标题 + @param description 分享内容的描述 + @param previewURL 分享内容的预览图像URL + @note 如果url为空,调用QQApi#sendMessage:时将返回FALSE + */ ++ (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageURL:(NSURL *)previewURL; + +@end + +// QQApiNewsObject +/** @brief 新闻URL对象 + 用于分享目标内容为新闻的URL的对象 + */ +@interface QQApiNewsObject : QQApiURLObject +/** + 获取一个autorelease的QQApiNewsObject + @param url 视频内容的目标URL + @param title 分享内容的标题 + @param description 分享内容的描述 + @param data 分享内容的预览图像 + @note 如果url为空,调用QQApi#sendMessage:时将返回FALSE + */ ++ (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageData:(NSData *)data; +/** + 获取一个autorelease的QQApiNewsObject + @param url 视频内容的目标URL + @param title 分享内容的标题 + @param description 分享内容的描述 + @param previewURL 分享内容的预览图像URL + @note 如果url为空,调用QQApi#sendMessage:时将返回FALSE + */ ++ (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageURL:(NSURL *)previewURL; + +@end + +// QQApiCommonContentObject; +/** @brief 通用模板类型对象 + 用于分享一个固定显示模板的图文混排对象 + @note 图片列表和文本列表不能同时为空 + */ +@interface QQApiCommonContentObject : QQApiObject +/** + 预定义的界面布局类型 + */ +@property (nonatomic,assign) unsigned int layoutType; +@property (nonatomic, copy) NSData *previewImageData;///<预览图 +@property (nonatomic, copy) NSArray *textArray;///<文本列表 +@property (nonatomic, copy) NSArray *pictureDataArray;///<图片列表 ++ (id)objectWithLayoutType:(int)layoutType textArray:(NSArray *)textArray pictureArray:(NSArray *)pictureArray previewImageData:(NSData *)data; +/** + 将一个NSDictionary对象转化为QQApiCommomContentObject,如果无法转换,则返回空 + */ ++ (id)objectWithDictionary:(NSDictionary *)dic; +- (NSDictionary *)toDictionary; +@end + +// QQApiExtraServiceObject; 通用业务消息处理类(旧版,后续使用QQApiCommonServiceObject) +/** + @brief OpenSDK扩展支持的服务,通用接口,后续会扩充能力 + serviceID [必选] 扩展支持的服务类型ID,参考官方文档说明 + openID [必选] 授权登录后对该用户的唯一标识 + toUin [可选] 对方的QQ号码 + extraInfo [可选] 扩展字段 + 该接口的使用须先登录 + */ +@interface QQApiExtraServiceObject : QQApiObject +@property (nonatomic, copy) NSString *serviceID; +@property (nonatomic, copy) NSString *openID; +@property (nonatomic, copy) NSString *toUin; +@property (nonatomic, copy) NSDictionary *extraInfo; + +- (id)initWithOpenID:(NSString *)openID serviceID:(NSString *)serviceID; ++ (id)objecWithOpenID:(NSString *)openID serviceID:(NSString *)serviceID; +@end + + +/** + * QQApiCommonServiceObject; 通用业务消息处理类(新),可以适用所有的需要通过互联SDK发消息给手Q的业务去处理。 + * 使用前需要申请serviceID,每个业务功能有个对应的serviceID + */ +@interface QQApiCommonServiceObject : QQApiObject + +// [必选] 授权登录后对该用户的唯一标识 +@property (nonatomic, copy) NSString *openID; + +// [必选] 扩展支持的服务类型ID,参考官方文档说明 +@property (nonatomic, copy) NSString *serviceID; + +// [可选] 扩展字段,由调用方跟具体的业务方协定具体的字段 +@property (nonatomic, copy) NSDictionary *extendInfo; + +- (instancetype)initWithOpenID:(NSString *)openID + serviceID:(NSString *)serviceID + extendInfo:(NSDictionary *)extendInfo; + ++ (instancetype)objecWithOpenID:(NSString *)openID + serviceID:(NSString *)serviceID + extendInfo:(NSDictionary *)extendInfo; + +@end + + +#pragma mark - QQApi请求消息类型 + +/** + QQApi请求消息类型 + */ +typedef NS_ENUM(NSUInteger, QQApiInterfaceReqType) { + EGETMESSAGEFROMQQREQTYPE = 0, /// < 手Q -> 第三方应用,请求第三方应用向手Q发送消息 + ESENDMESSAGETOQQREQTYPE = 1, /// < 第三方应用 -> 手Q,第三方应用向手Q分享消息 + ESHOWMESSAGEFROMQQREQTYPE = 2, /// < 手Q -> 第三方应用,请求第三方应用展现消息中的数据 + ESENDMESSAGEARKTOQQREQTYPE = 3, /// < 第三方应用 -> 手Q,第三方应用向手Q分享Ark消息 + ESENDMESSAGE_MINI_TOQQREQTYPE = 4 /// < 第三方应用 -> 手Q,第三方应用向手Q分享小程序消息 +}; + +/** + QQApi应答消息类型 + */ +typedef NS_ENUM(NSUInteger, QQApiInterfaceRespType) { + ESHOWMESSAGEFROMQQRESPTYPE = 0, /// < 第三方应用 -> 手Q,第三方应用应答消息展现结果 + EGETMESSAGEFROMQQRESPTYPE = 1, /// < 第三方应用 -> 手Q,第三方应用回应发往手Q的消息 + ESENDMESSAGETOQQRESPTYPE = 2 /// < 手Q -> 第三方应用,手Q应答处理分享消息的结果 +}; + +/** + QQApi请求消息基类 + */ +@interface QQBaseReq : NSObject + +/** 请求消息类型,参见\ref QQApiInterfaceReqType */ +@property (nonatomic, assign) int type; + +@end + +/** + QQApi应答消息基类 + */ +@interface QQBaseResp : NSObject + +/** 请求处理结果 */ +@property (nonatomic, copy) NSString *result; + +/** 具体错误描述信息 */ +@property (nonatomic, copy) NSString *errorDescription; + +/** 应答消息类型,参见\ref QQApiInterfaceRespType */ +@property (nonatomic, assign) int type; + +/** 扩展信息 */ +@property (nonatomic, copy) NSString *extendInfo; + +@end + +/** + GetMessageFromQQReq请求帮助类 + */ +@interface GetMessageFromQQReq : QQBaseReq + +/** + 创建一个GetMessageFromQQReq请求实例 + */ ++ (GetMessageFromQQReq *)req; + +@end + +@interface SendMessageToQQReq : QQBaseReq + +/** + 创建一个SendMessageToQQReq请求实例 + \param message 具体分享消息实例 + \return 新创建的SendMessageToQQReq请求实例 + */ ++ (SendMessageToQQReq *)reqWithContent:(QQApiObject *)message; + +/** + 创建一个支持Ark的SendMessageToQQReq请求实例 + \param message 具体分享消息实例 + \return 新创建的SendMessageToQQReq请求实例 + */ ++ (SendMessageToQQReq *)reqWithArkContent:(ArkObject *)message; +/** + * 创建一个支持小程序的消息请求实例 + * @param miniMessage 小程序实例对象 + * @return 消息请求实例 + */ ++ (SendMessageToQQReq *)reqWithMiniContent:(QQApiMiniProgramObject *)miniMessage; +/** 具体分享消息 */ +@property (nonatomic, strong) QQApiObject *apiObject; + +/** 支持Ark的具体分享消息 */ +@property (nonatomic, strong) ArkObject *arkObject; +/** 支持小程序的具体分享消息 */ +@property (nonatomic, strong) QQApiMiniProgramObject *miniProgramObject; +@end + +/** + SendMessageToQQResp应答帮助类 + */ +@interface SendMessageToQQResp : QQBaseResp + +/** 其他扩展信息 */ +@property (nonatomic, copy) NSDictionary *otherInfo; + +/** + 创建一个SendMessageToQQResp应答实例 + \param result 请求处理结果 + \param errDesp 具体错误描述信息 + \param extendInfo 扩展信息 + \return 新创建的SendMessageToQQResp应答实例 + */ ++ (SendMessageToQQResp *)respWithResult:(NSString *)result errorDescription:(NSString *)errDesp extendInfo:(NSString *)extendInfo; + ++ (SendMessageToQQResp *) respWithResult:(NSString *)result errorDescription:(NSString *)errDesp extendInfo:(NSString *)extendInfo otherInfo:(NSDictionary *)otherInfo; + +@end + +/** + ShowMessageFromQQReq请求帮助类 + */ +@interface ShowMessageFromQQReq : QQBaseReq + +/** + 创建一个ShowMessageFromQQReq请求实例 + \param message 具体待展现消息实例 + \return 新创建的ShowMessageFromQQReq请求实例 + */ ++ (ShowMessageFromQQReq *)reqWithContent:(QQApiObject *)message; + +/** 具体待展现消息 */ +@property (nonatomic, strong) QQApiObject *message; + +@end + +#pragma mark --一键加群&建群&解绑群 +// QQApiThirdAppBindGroupObject +/** \brief 第三方app绑定群 + */ +@interface QQApiThirdAppBindGroupObject : QQApiObject + +@property (nonatomic, copy) NSString *accessToken; +@property (nonatomic, copy) NSString *payToken; +@property (nonatomic, copy) NSString *pfkey; +@property (nonatomic, copy) NSString *unionID; +@property (nonatomic, copy) NSString *appDisplayName; + +- (id)initWithAccessToken:(NSString *)accessToken payToken:(NSString *)payToken pfkey:(NSString *)pfkey unionID:(NSString *)unionID appDisplayName:(NSString *)appDisplayName; ///<初始化方法 ++ (id)objectWithAccessToken:(NSString *)accessToken payToken:(NSString *)payToken pfkey:(NSString *)pfkey unionID:(NSString *)unionID appDisplayName:(NSString *)appDisplayName; ///<工厂方法,获取一个QQApiThirdAppBindGroupObject对象. + +@end + +// QQApiThirdAppJoinGroupObject +/** \brief 第三方app加入群 + */ +@interface QQApiThirdAppJoinGroupObject : QQApiObject + +@property (nonatomic, copy) NSString *accessToken; +@property (nonatomic, copy) NSString *payToken; +@property (nonatomic, copy) NSString *pfkey; +@property (nonatomic, copy) NSString *unionID; + +- (id)initWithAccessToken:(NSString *)accessToken payToken:(NSString *)payToken pfkey:(NSString *)pfkey unionID:(NSString *)unionID; ///<初始化方法 + ++ (id)objectWithAccessToken:(NSString *)accessToken payToken:(NSString *)payToken pfkey:(NSString *)pfkey unionID:(NSString *)unionID; ///<工厂方法,获取一个QQApiThirdAppJoinGroupObject对象. + +@end + +// QQApiThirdAppUnBindGroupObject +/** \brief 第三方app解绑群 + */ +@interface QQApiThirdAppUnBindGroupObject : QQApiObject + +@property (nonatomic, copy) NSString *accessToken; +@property (nonatomic, copy) NSString *openId; +@property (nonatomic, copy) NSString *payToken; +@property (nonatomic, copy) NSString *pfkey; +@property (nonatomic, copy) NSString *unionID; + +- (id)initWithAccessToken:(NSString *)accessToken payToken:(NSString *)payToken pfkey:(NSString *)pfkey unionID:(NSString *)unionID openId:(NSString *)openId appId:(NSString *)appId; ///<初始化方法 + ++ (id)objectWithAccessToken:(NSString *)accessToken payToken:(NSString *)payToken pfkey:(NSString *)pfkey unionID:(NSString *)unionID openId:(NSString *)openId appId:(NSString *)appId; ///<工厂方法,获取一个QQApiThirdAppBindGroupObject对象. + +@end + + +#endif diff --git a/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/SDKDef.h b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/SDKDef.h new file mode 100644 index 0000000..bb56770 --- /dev/null +++ b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/SDKDef.h @@ -0,0 +1,420 @@ +/// +/// \file sdkdef.h +/// \brief SDK中相关常量定义 +/// +/// Created by Tencent on 12-12-25. +/// Copyright (c) 2012年 Tencent. All rights reserved. +/// + +#import +#import + +/** + * \brief 设置sdk的log等级 + */ +typedef enum { + TCOLogLevel_Disabled = -1, // 关闭所有log + TCOLogLevel_Error = 0, + TCOLogLevel_Warning, + TCOLogLevel_Info, + TCOLogLevel_Debug, +} TCOLogLevel; + +/** + * \breif 授权/分享 方式 + */ +typedef enum TencentAuthShareType { + AuthShareType_QQ, + AuthShareType_TIM, +}TencentAuthShareType; + +/** + * \brief APIResponse.retCode可能的枚举常量 + */ +typedef enum +{ + URLREQUEST_SUCCEED = 0, /**< 网络请求成功发送至服务器,并且服务器返回数据格式正确 + * \note 这里包括所请求业务操作失败的情况,例如没有授权等原因导致 + */ + + URLREQUEST_FAILED = 1, /**< 网络异常,或服务器返回的数据格式不正确导致无法解析 */ +} REPONSE_RESULT; + +/** + * \brief 增量授权失败原因 + * + * \note 增量授权失败不影响原token的有效性(原token已失效的情况除外) + */ +typedef enum +{ + kUpdateFailUnknown = 1, ///< 未知原因 + kUpdateFailUserCancel, ///< 用户取消 + kUpdateFailNetwork, ///< 网络问题 +} UpdateFailType; + +/** + * \brief 封装服务器返回的结果 + * + * APIResponse用于封装所有请求的返回结果,包括错误码、错误信息、原始返回数据以及返回数据的json格式字典 + */ +@interface APIResponse : NSObject { + int _detailRetCode; + int _retCode; + int _seq; + NSString *_errorMsg; + NSDictionary *_jsonResponse; + NSString *_message; + id _userData; +} + +/** + * 新增的详细错误码\n + * detailRetCode主要用于区分不同的错误情况,参见\ref OpenSDKError + */ +@property (nonatomic, assign) int detailRetCode; + +/** + * 网络请求是否成功送达服务器,以及服务器返回的数据格式是否正确\n + * retCode具体取值可参考\ref REPONSE_RESULT + */ +@property (nonatomic, assign) int retCode; + +/** + * 网络请求对应的递增序列号,方便内部管理 + */ +@property (nonatomic, assign) int seq; + +/** + * 错误提示语 + */ +@property (nonatomic, copy) NSString *errorMsg; + +/** + * 服务器返回数据的json格式字典\n + * 字典内具体参数的命名和含义请参考\ref api_spec + */ +@property (nonatomic, copy) NSDictionary *jsonResponse; + +/** + * 服务器返回的原始数据字符串 + */ +@property (nonatomic, copy) NSString *message; + +/** + * 用户保留数据 + */ +@property (nonatomic, strong) id userData; + +@end + + +/** + * 用户自定义的保留字段 + */ +FOUNDATION_EXTERN NSString * const PARAM_USER_DATA; + +/** + * \name 应用邀请参数字段定义 + */ +///@{ + +/** 应用邀请展示图片url的key */ +FOUNDATION_EXTERN NSString * const PARAM_APP_ICON; + +/** 应用邀请描述文本的key */ +FOUNDATION_EXTERN NSString * const PARAM_APP_DESC; + +/** 应用邀请好友列表的key */ +FOUNDATION_EXTERN NSString * const PARAM_APP_INVITED_OPENIDS; + +///@} + +/** + * \name sendStory新分享参数字段定义 + */ +///@{ + +/** 预填入接受人列表的key */ +FOUNDATION_EXTERN NSString * const PARAM_SENDSTORY_RECEIVER; + +/** 分享feeds标题的key */ +FOUNDATION_EXTERN NSString * const PARAM_SENDSTORY_TITLE; + +/** 分享feeds评论内容的key */ +FOUNDATION_EXTERN NSString * const PARAM_SENDSTORY_COMMENT; + +/** 分享feeds摘要的key */ +FOUNDATION_EXTERN NSString * const PARAM_SENDSTORY_SUMMARY; + +/** 分享feeds展示图片url的key */ +FOUNDATION_EXTERN NSString * const PARAM_SENDSTORY_IMAGE; + +/** 分享feeds跳转链接url的key */ +FOUNDATION_EXTERN NSString * const PARAM_SENDSTORY_URL; + +/** 分享feeds点击操作默认行为的key */ +FOUNDATION_EXTERN NSString * const PARAM_SENDSTORY_ACT; + +///@} + +/** + * \name 设置头像参数字段定义 + */ +///@{ + +/** 头像图片数据的key */ +FOUNDATION_EXTERN NSString * const PARAM_SETUSERHEAD_PIC; + +/** 头像图片文件名的key */ +FOUNDATION_EXTERN NSString * const PARAM_SETUSERHEAD_FILENAME; + +///@} + +/** + * \name 服务器返回数据的参数字段定义 + */ +///@{ + +/** 服务器返回码的key */ +FOUNDATION_EXTERN NSString * const PARAM_RETCODE; + +/** 服务器返回错误信息的key */ +FOUNDATION_EXTERN NSString * const PARAM_MESSAGE; + +/** 服务器返回额外数据的key */ +FOUNDATION_EXTERN NSString * const PARAM_DATA; + +///@} + +/** + * \name 错误信息相关常量定义 + */ +///@{ + +/** 详细错误信息字典中额外信息的key */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorKeyExtraInfo; + +/** 详细错误信息字典中返回码的key */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorKeyRetCode; + +/** 详细错误信息字典中错误语句的key */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorKeyMsg; + +/** 不支持的接口 */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgUnsupportedAPI; + +/** 操作成功 */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgSuccess; + +/** 未知错误 */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgUnknown; + +/** 用户取消 */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgUserCancel; + +/** 请重新登录 */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgReLogin; + +/** 应用没有操作权限 */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgOperationDeny; + +/** 网络异常或没有网络 */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgNetwork; + +/** URL格式或协议错误 */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgURL; + +/** 解析数据出错 */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgDataParse; + +/** 传入参数有误 */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgParam; + +/** 连接超时 */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgTimeout; + +/** 安全问题 */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgSecurity; + +/** 文件读写错误 */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgIO; + +/** 服务器端错误 */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgServer; + +/** 页面错误 */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgWebPage; + +/** 设置头像图片过大 */ +FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgUserHeadPicLarge; + +/** 用户未同意授权隐私协议 */ +FOUNDATION_EXPORT NSString * const TCOpenSDKErrorMsgUserNotAgreedAuthorization; + +///@} + +/** + * \brief SDK新增详细错误常量 + */ +typedef enum +{ + kOpenSDKInvalid = -1, ///< 无效的错误码 + kOpenSDKErrorUnsupportedAPI = -2, ///< 不支持的接口 + + /** + * \name CommonErrorCode + * 公共错误码 + */ + ///@{ + kOpenSDKErrorSuccess = 0, ///< 成功 + kOpenSDKErrorUnknown, ///< 未知错误 + kOpenSDKErrorUserCancel, ///< 用户取消 + kOpenSDKErrorReLogin, ///< token无效或用户未授权相应权限需要重新登录 + kOpenSDKErrorOperationDeny, ///< 第三方应用没有该api操作的权限 + ///@} + + /** + * \name NetworkRelatedErrorCode + * 网络相关错误码 + */ + ///@{ + kOpenSDKErrorNetwork, ///< 网络错误,网络不通或连接不到服务器 + kOpenSDKErrorURL, ///< URL格式或协议错误 + kOpenSDKErrorDataParse, ///< 数据解析错误,服务器返回的数据解析出错 + kOpenSDKErrorParam, ///< 传入参数错误 + kOpenSDKErrorConnTimeout, ///< http连接超时 + kOpenSDKErrorSecurity, ///< 安全问题 + kOpenSDKErrorIO, ///< 下载和文件IO错误 + kOpenSDKErrorServer, ///< 服务器端错误 + ///@} + + /** + * \name WebViewRelatedError + * webview特有错误 + */ + ///@{ + kOpenSDKErrorWebPage, ///< 页面错误 + ///@} + + /** + * \name SetUserHeadRelatedErrorCode + * 设置头像自定义错误码段 + */ + ///@{ + kOpenSDKErrorUserHeadPicLarge = 0x010000, ///< 图片过大 设置头像自定义错误码 + ///@} +} OpenSDKError; + +/** + * \name SDK版本(v1.3)支持的授权列表常量 + */ +///@{ + +/** 发表一条说说到QQ空间(需要申请权限) */ +FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_ADD_TOPIC; + +/** 创建一个QQ空间相册(需要申请权限) */ +FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_ADD_ALBUM; + +/** 上传一张照片到QQ空间相册(需要申请权限) */ +FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_UPLOAD_PIC; + +/** 获取用户QQ空间相册列表(需要申请权限) */ +FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_LIST_ALBUM; + +/** 验证是否认证空间粉丝 */ +FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_CHECK_PAGE_FANS; + +/** 获取登录用户自己的详细信息 */ +FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_GET_INFO; + +/** 获取其他用户的详细信息 */ +FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_GET_OTHER_INFO; + +/** 获取会员用户基本信息 */ +FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_GET_VIP_INFO; + +/** 获取会员用户详细信息 */ +FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_GET_VIP_RICH_INFO; + +/** 获取用户信息 */ +FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_GET_USER_INFO; + +/** 移动端获取用户信息 */ +FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_GET_SIMPLE_USER_INFO; + +/** 移动端获取用户信息 */ +FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_ALL; +///@} + + +/** + * \name CGI接口相关参数类型定义 + */ + +/** 必填的字符串类型参数 */ +typedef NSString *TCRequiredStr; + +/** 必填的UIImage类型参数 */ +typedef UIImage *TCRequiredImage; + +/** 必填的整型参数 */ +typedef NSInteger TCRequiredInt; + +/** 必填的数字类型 */ +typedef NSNumber *TCRequiredNumber; + +/** 必填的NSData参数 */ +typedef NSData *TCRequiredData; + +/** 可选的字符串类型参数 */ +typedef NSString *TCOptionalStr; + +/** 可选的UIImage类型参数 */ +typedef UIImage *TCOptionalImage; + +/** 可选的整型参数 */ +typedef NSInteger TCOptionalInt; + +/** 可选的数字类型 */ +typedef NSNumber *TCOptionalNumber; + +/** 可选的不定类型参数 */ +typedef id TCRequiredId; +///@} + + +/** + * \brief CGI请求的参数字典封装辅助基类 + * + * 将相应属性的值以key-value的形式保存到参数字典中 + */ +@interface TCAPIRequest : NSMutableDictionary + +/** CGI请求的URL地址 */ +@property (nonatomic, readonly) NSURL *apiURL; + +/** CGI请求方式:"GET","POST" */ +@property (nonatomic, readonly) NSString *method; + +/** + * API参数中的保留字段,可以塞入任意字典支持的类型,再调用完成后会带回给调用方 + */ +@property (nonatomic, strong) TCRequiredId paramUserData; + +/** + * APIResponse,API的返回结果 + */ +@property (nonatomic, readonly) APIResponse *response; + +/** 取消相应的CGI请求任务 */ +- (void)cancel; + +@end + +@protocol TCAPIRequestDelegate +@optional +- (void)cgiRequest:(TCAPIRequest *)request didResponse:(APIResponse *)response; + +@end + diff --git a/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/TencentOAuth.h b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/TencentOAuth.h new file mode 100644 index 0000000..7bdbf8e --- /dev/null +++ b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/TencentOAuth.h @@ -0,0 +1,555 @@ +/// +/// \file TencentOAuth.h +/// \brief QQ互联开放平台授权登录及相关开放接口实现类 +/// +/// Created by Tencent on 12-12-21. +/// Copyright (c) 2012年 Tencent. All rights reserved. +/// + +#import +#import "SDKDef.h" + +@protocol TencentSessionDelegate; +@protocol TencentLoginDelegate; +@protocol TencentApiInterfaceDelegate; +@protocol TencentWebViewDelegate; + +@class TencentApiReq; +@class TencentApiResp; + +typedef NS_ENUM(NSUInteger, TencentAuthorizeState) { + kTencentNotAuthorizeState, + kTencentSSOAuthorizeState, + kTencentWebviewAuthorzieState, +}; + +typedef NS_ENUM(NSUInteger, TencentAuthMode) { + kAuthModeClientSideToken, + kAuthModeServerSideCode, +}; + +#pragma mark - TencentOAuth(授权登录及相关开放接口调用) + +/** + * \brief TencentOpenAPI授权登录及相关开放接口调用 + * + * TencentOAuth实现授权登录逻辑以及相关开放接口的请求调用 + */ +@interface TencentOAuth : NSObject { + NSMutableDictionary *_apiRequests; +} + +/** Access Token凭证,用于后续访问各开放接口 */ +@property(nonatomic, copy) NSString *accessToken; + +/** Access Token的失效期 */ +@property(nonatomic, strong) NSDate *expirationDate; + +/** 已实现的开放接口的回调委托对象 */ +@property(nonatomic, weak) id sessionDelegate; + +/** 第三方应用在开发过程中设置的URLSchema,用于浏览器登录后后跳到第三方应用 */ +@property(nonatomic, copy) NSString *localAppId; + +/** 用户授权登录后对该用户的唯一标识 */ +@property(nonatomic, copy) NSString *openId; + +/** 用户登录成功过后的跳转页面地址 */ +@property(nonatomic, copy) NSString *redirectURI; + +/** 第三方应用在互联开放平台申请的appID */ +@property(nonatomic, copy) NSString *appId; + +/** 第三方应用在互联开放平台注册的UniversalLink */ +@property(nonatomic, copy) NSString *universalLink; + +/** 主要是互娱的游戏设置uin */ +@property(nonatomic, copy) NSString *uin; + +/** 主要是互娱的游戏设置鉴定票据 */ +@property(nonatomic, copy) NSString *skey; + +/** 登陆透传的数据 */ +@property(nonatomic, copy) NSDictionary *passData; + +/** 授权方式(Client Side Token或者Server Side Code) */ +@property(nonatomic, assign) TencentAuthMode authMode; + +/** union id */ +@property(nonatomic, copy) NSString *unionid; + +/** 第三方在授权登录/分享 时选择 QQ,还是TIM 。在授权前一定要指定其中一个类型*/ +@property(nonatomic, assign) TencentAuthShareType authShareType; + +/** SDK打开web登录页,支持自动填充账号 */ +@property (nonatomic, copy) NSString *defaultUin; + +/** + * 获取上次登录得到的token + * + **/ +- (NSString *)getCachedToken; + +/** + * 获取上次登录得到的openid + * + **/ +- (NSString *)getCachedOpenID; + +/** + * 获取上次登录的token过期日期 + * + **/ +- (NSDate *)getCachedExpirationDate; + +/** + * 上次登录的token是否过期(本地判断) + **/ +- (BOOL)isCachedTokenValid; + +/** + * 删除上次登录登录的token信息 + * + **/ +- (BOOL)deleteCachedToken; + +/** + * 删除openid + * + **/ +- (void)deleteOpenId; + +/** + * 用来获得当前sdk的版本号 + * \return 返回sdk版本号 + **/ + ++ (NSString *)sdkVersion; + +/** + * 用来获得当前sdk的小版本号 + * \return 返回sdk小版本号 + **/ + ++ (NSString *)sdkSubVersion; + +/** + * 用来获得当前sdk的是否精简版 + * @return 返回YES表示精简版 + **/ + ++ (BOOL)isLiteSDK; + +/** + * 主要是用来帮助判断是否有登陆被发起,但是还没有过返回结果 + * \return + * kTencentNotAuthorizeState:无授权 + * kTencentSSOAuthorizeState:有人发起了sso授权但无返回 + * kTencentWebviewAuthorzieState:有人发起了webview授权还未返回 + **/ + ++ (TencentAuthorizeState *)authorizeState; + +/** + * 获取TencentOAuth单例 + */ ++ (instancetype)sharedInstance; + +/** + * 设置SDK参数 + * + * @param appId 不可为nil,第三方应用在互联开放平台申请的唯一标识 + * @param enableUniveralLink 默认为NO,第三方应用是否将sdk和手机QQ的交互方式切换为UniversalLink方式,启用后则在iOS9及以上的系统都会生效UniversalLink方式;否则,默认仅在iOS13及以上的系统生效UniversalLink方式。 + * @param universalLink 可以为nil,第三方应用在互联开放平台注册的UniversalLink,和bundleID一一对应(当为nil时,互联平台会按规则生成UniversalLink,详见官网说明) + * @param delegate 不可为nil,第三方应用用于接收请求返回结果的委托对象 + * + * @note + * 使用说明】 + * 1、支持sdk与手Q的交互切换为UniversalLink模式,主要目的"是为了避免手Q的UrlScheme被其他应用抢注后,导致sdk接口功能受到影响"。 + * 2 、由于手Q版本在 >=8.1.3 后才适配了UniversalLink,所以一旦开启了enabled开关,“务必做到”及时知会用户升级手Q版本。 + * + */ +- (void)setupAppId:(NSString *)appId +enableUniveralLink:(BOOL)enableUniveralLink + universalLink:(NSString *)universalLink + delegate:(id)delegate; + +/** + * 初始化TencentOAuth对象 + * !!!注意:3.5.17版本开始,内部单例实现,多次调用返回同一实例 + * + * @param appId 不可为nil,第三方应用在互联开放平台申请的唯一标识 + * @param delegate 不可为nil,第三方应用用于接收请求返回结果的委托对象 + * @return 初始化后的授权登录对象 + * + * 推荐使用初始化方法,并且适配UniversalLink: + * - (instancetype)initWithAppId:(NSString *)appId + * enableUniveralLink:(BOOL)enabled + * universalLink:(NSString *)universalLink + * delegate:(id)delegate; + */ +- (instancetype)initWithAppId:(NSString *)appId + andDelegate:(id)delegate __attribute__((deprecated("此接口即将下线!请使用setupAppId:enableUniveralLink:universalLink:delegate"))); + +/** + * 初始化TencentOAuth对象(>=3.3.7) + * !!!注意:3.5.17版本开始,内部单例实现,多次调用返回同一实例 + * + * @param appId 不可为nil,第三方应用在互联开放平台申请的唯一标识 + * @param universalLink 可以为nil,第三方应用在互联开放平台注册的UniversalLink,和bundleID一一对应(当为nil时,互联平台会按规则生成universallink,详见官网说明) + * @param delegate 不可为nil,第三方应用用于接收请求返回结果的委托对象 + * @return 初始化后的授权登录对象 + * + * 【使用说明】 + * 1、支持BundleId与UniversalLink的一一对应,主要目的"是为了解决应用的iPhone版本和iPad HD版本共用同一个AppId,导致同时安装情况下的跳转问题"。 + * 2、由于手Q版本在 >=8.1.8 后才支持了这种对应方式,所以一旦使用,“务必做到”及时知会用户升级手Q版本。 + * + * 推荐使用初始化方法,并且适配UniversalLink: + * - (instancetype)initWithAppId:(NSString *)appId + * enableUniveralLink:(BOOL)enabled + * universalLink:(NSString *)universalLink + * delegate:(id)delegate; + * + */ +- (instancetype)initWithAppId:(NSString *)appId + andUniversalLink:(NSString *)universalLink + andDelegate:(id)delegate __attribute__((deprecated("此接口即将下线!请使用setupAppId:enableUniveralLink:universalLink:delegate"))); + +/** + * 初始化TencentOAuth对象(>=3.3.8) + * !!!注意:3.5.17版本开始,内部单例实现,多次调用返回同一实例 + * + * @param appId 不可为nil,第三方应用在互联开放平台申请的唯一标识 + * @param enabled 默认为NO,第三方应用是否将sdk和手机QQ的交互方式切换为UniversalLink方式,启用后则在iOS9及以上的系统都会生效UniversalLink方式;否则,默认仅在iOS13及以上的系统生效UniversalLink方式。 + * @param universalLink 可以为nil,第三方应用在互联开放平台注册的UniversalLink,和bundleID一一对应(当为nil时,互联平台会按规则生成UniversalLink,详见官网说明) + * @param delegate 不可为nil,第三方应用用于接收请求返回结果的委托对象 + * @return 初始化后的授权登录对象 + * + * @note + * 使用说明】 + * 1、支持sdk与手Q的交互切换为UniversalLink模式,主要目的"是为了避免手Q的UrlScheme被其他应用抢注后,导致sdk接口功能受到影响"。 + * 2 、由于手Q版本在 >=8.1.3 后才适配了UniversalLink,所以一旦开启了enabled开关,“务必做到”及时知会用户升级手Q版本。 + * + */ +- (instancetype)initWithAppId:(NSString *)appId + enableUniveralLink:(BOOL)enabled + universalLink:(NSString *)universalLink + delegate:(id)delegate __attribute__((deprecated("此接口即将下线!请使用setupAppId:enableUniveralLink:universalLink:delegate"))); + +/** + * 设置用户是否已经授权同意授权隐私协议,在主体应用中,用户同意授权隐私协议后再初始化互联SDK,默认未同意授权 + * 注意:如未同意授权隐私协议,则互联SDK的所有功能都无法使用,包括初始化!!! + * 从3.5.7版本开始支持该方法 + * + * @param isAgreedAuthorization 是否已经授权,isAgreedAuthorization=YES, 表示已经同意授权;isAgreedAuthorization=NO,表示未同意授权,互联SDK的所有功能都无法使用 + */ ++ (void)setIsUserAgreedAuthorization:(BOOL)isUserAgreedAuthorization; + +/** + * 获取当前用户是否已经同意授权隐私协议 + * 从3.5.7版本开始支持该方法 + */ ++ (BOOL)isUserAgreedAuthorization; + +/** + * 判断用户手机上是否安装手机QQ + * @return YES:安装 NO:没安装 + * + * @note SDK目前已经支持QQ、TIM授权登录及分享功能, 会按照QQ>TIM的顺序进行调用。 + * 只要用户安装了QQ、TIM中任意一个应用,都可为第三方应用进行授权登录、分享功能。 + * 第三方应用在接入SDK时不需要判断是否安装QQ、TIM。若有判断安装QQ、TIM的逻辑建议移除。 + */ ++ (BOOL)iphoneQQInstalled; + +/** + * 判断用户手机上是否安装手机TIM + * @return YES:安装 NO:没安装 + * + * @note SDK目前已经支持QQ、TIM授权登录及分享功能, 会按照QQ>TIM的顺序进行调用。 + * 只要用户安装了QQ、TIM中任意一个应用,都可为第三方应用进行授权登录、分享功能。 + * 第三方应用在接入SDK时不需要判断是否安装QQ、TIM。若有判断安装QQ、TIM的逻辑建议移除。 + */ ++ (BOOL)iphoneTIMInstalled; + +/** + * 发起授权登录,如果安装了QQ APP,则拉起QQ发起授权登录;如果为安装QQ APP则在第三方应用进入H5页面,输入账密授权登录。 + * + * @param permissions 授权信息列 + * @return 发起调用是否成功 + */ +- (BOOL)authorize:(NSArray *)permissions; + +/** + * 发起授权登录, 在第三方应用进入H5页面,显示二维码,通过扫码完成授权登录 + * + * @param permissions 授权信息列 + * @return 发起调用结果 + */ +- (BOOL)authorizeWithQRlogin:(NSArray *)permissions; + +/** + * 增量授权,因用户没有授予相应接口调用的权限,需要用户确认是否授权 + * @param permissions 需增量授权的信息列表 + * @return 发起增量授权调用是否成功 + */ +- (BOOL)incrAuthWithPermissions:(NSArray *)permissions; + +/** + * 重新授权,因token废除或失效导致接口调用失败,需用户重新授权 + * @param permissions 授权信息列表,同登录授权 + * @return 重新授权调用是否成功 + */ +- (BOOL)reauthorizeWithPermissions:(NSArray *)permissions; + +/** + * 获取UnindID,可以根据UnindID的比较来确定OpenID是否属于同一个用户 + * 通过代理方法:- (void)didGetUnionID;返回请求结果。 + * + * @return NO未登录,信息不足;YES条件满足,发送请求成功,请等待回调 + */ +- (BOOL)RequestUnionId; + +/** + * (静态方法)处理应用拉起协议 + * @param url 处理被其他应用呼起时的逻辑 + * @return 处理结果,YES表示成功,NO表示失败 + */ ++ (BOOL)HandleOpenURL:(NSURL *)url; + +/** + * (静态方法)sdk是否可以处理应用拉起协议 + * @param url 处理被其他应用呼起时的逻辑 + * @return 处理结果,YES表示可以 NO表示不行 + */ ++ (BOOL)CanHandleOpenURL:(NSURL *)url; + +/** + * (静态方法)处理应用的UniversalLink拉起协议 + * @param url 处理被其他应用呼起时的逻辑 + * @return 处理结果,YES表示成功,NO表示失败 + */ ++ (BOOL)HandleUniversalLink:(NSURL *)url; + +/** + * (静态方法)sdk是否可以处理应用的Universallink拉起协议 + * @param url 处理被其他应用呼起时的逻辑(应用的Universallink链接须满足官网注册时的格式要求) + * @return 处理结果,YES表示可以 NO表示不行 + * 注:在调用其他Universallink相关处理接口之前,均需进行此项判断 + */ ++ (BOOL)CanHandleUniversalLink:(NSURL *)url; + +/** + * (静态方法)获取TencentOAuth调用的上一次错误信息 + */ ++ (NSString *)getLastErrorMsg; + +/** + * 以Server Side Code模式授权登录时,通过此接口获取返回的code值; + * 以Client Side Token模式授权登录时,忽略此接口。 + */ +- (NSString *)getServerSideCode; + +/** + * 退出登录(退出登录后,TecentOAuth失效,需要重新初始化) + * @param delegate 第三方应用用于接收请求返回结果的委托对象 + */ +- (void)logout:(id)delegate; + +/** + * 判断登录态是否有效 + * @return 处理结果,YES表示有效,NO表示无效,请用户重新登录授权 + */ +- (BOOL)isSessionValid; + +/** + * 获取用户个人信息 + * @return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录 + */ +- (BOOL)getUserInfo; + +/** + * 退出指定API调用 + * @param userData 用户调用某条API的时候传入的保留参数 + * @return 处理结果,YES表示成功 NO表示失败 + */ +- (BOOL)cancel:(id)userData; + +/** + * CGI类任务创建接口 + * @param apiURL CGI请求的URL地址 + * @param method CGI请求方式:"GET","POST" + * @param params CGI请求参数字典 + * @param callback CGI请求结果的回调接口对象 + * @return CGI请求任务实例,用于取消任务,返回nil代表任务创建失败 + */ +- (TCAPIRequest *)cgiRequestWithURL:(NSURL *)apiURL method:(NSString *)method params:(NSDictionary *)params callback:(id)callback; + +/** + * TencentOpenApi发送任务统一接口 + * @param request 请求发送的任务 + * @param callback 任务发送后的回调地址 + */ +- (BOOL)sendAPIRequest:(TCAPIRequest *)request callback:(id)callback; + +/** + * 获得用户的openId,仅有内存缓存 + * @return 返回openId + */ +- (NSString *)getUserOpenID; + +/** + * 获取appSignToken + * @return 返回appSignToken + */ ++ (NSString *)getAppSignToken; + +/** + * 设置appSignToken,跨进程的应用可以通过该方法手动设置appSignToken + */ ++ (void)setupAppSignToken:(NSString *)appSignToken; + +@end + +#pragma mark - TencentLoginDelegate(授权登录回调协议) + +/** + * \brief TencentLoginDelegate iOS Open SDK 1.3 API回调协议 + * + * 第三方应用实现登录的回调协议 + */ +@protocol TencentLoginDelegate + +@required + +/** + * 登录成功后的回调 + */ +- (void)tencentDidLogin; + +/** + * 登录失败后的回调 + * \param cancelled 代表用户是否主动退出登录 + */ +- (void)tencentDidNotLogin:(BOOL)cancelled; + +/** + * 登录时网络有问题的回调 + */ +- (void)tencentDidNotNetWork; + +@optional +/** + * 登录时权限信息的获得 + */ +- (NSArray *)getAuthorizedPermissions:(NSArray *)permissions withExtraParams:(NSDictionary *)extraParams __attribute__((deprecated("该接口已过期, 建议删除调用"))); + +/** + * unionID获得 + */ +- (void)didGetUnionID; + +/** + * 强制网页登录,包括账号密码登录和二维码登录 + * return YES时,就算本地有手Q也会打开web界面 + */ +- (BOOL)forceWebLogin; + +/* 获得appSignToken回调 */ +- (void)tencentDidGetAppSignToken:(NSString *)appSignToken; + +@end + +#pragma mark - TencentSessionDelegate(开放接口回调协议) + +/** + * \brief TencentSessionDelegate iOS Open SDK 1.3 API回调协议 + * + * 第三方应用需要实现每条需要调用的API的回调协议 + */ +@protocol TencentSessionDelegate + +@optional + +/** + * 退出登录的回调 + */ +- (void)tencentDidLogout; + +/** + * 因用户未授予相应权限而需要执行增量授权。在用户调用某个api接口时,如果服务器返回操作未被授权,则触发该回调协议接口,由第三方决定是否跳转到增量授权页面,让用户重新授权。 + * @param tencentOAuth 登录授权对象。 + * @param permissions 需增量授权的权限列表。 + * @return 是否仍然回调返回原始的api请求结果。 + * @note 不实现该协议接口则默认为不开启增量授权流程。若需要增量授权请调用\ref TencentOAuth#incrAuthWithPermissions: \n注意:增量授权时用户可能会修改登录的帐号 + */ +- (BOOL)tencentNeedPerformIncrAuth:(TencentOAuth *)tencentOAuth withPermissions:(NSArray *)permissions; + +/** + * [该逻辑未实现]因token失效而需要执行重新登录授权。在用户调用某个api接口时,如果服务器返回token失效,则触发该回调协议接口,由第三方决定是否跳转到登录授权页面,让用户重新授权。 + * @param tencentOAuth 登录授权对象。 + * @return 是否仍然回调返回原始的api请求结果。 + * @note 不实现该协议接口则默认为不开启重新登录授权流程。若需要重新登录授权请调用\ref TencentOAuth#reauthorizeWithPermissions: \n注意:重新登录授权时用户可能会修改登录的帐号 + */ +- (BOOL)tencentNeedPerformReAuth:(TencentOAuth *)tencentOAuth; + +/** + * 用户通过增量授权流程重新授权登录,token及有效期限等信息已被更新。 + * @param tencentOAuth token及有效期限等信息更新后的授权实例对象 + * @note 第三方应用需更新已保存的token及有效期限等信息。 + */ +- (void)tencentDidUpdate:(TencentOAuth *)tencentOAuth; + +/** + * 用户增量授权过程中因取消或网络问题导致授权失败 + * @param reason 授权失败原因,具体失败原因参见sdkdef.h文件中\ref UpdateFailType + */ +- (void)tencentFailedUpdate:(UpdateFailType)reason; + +/** + * 获取用户个人信息回调 + * @param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse + * @remarks 正确返回示例: \snippet example/getUserInfoResponse.exp success + * 错误返回示例: \snippet example/getUserInfoResponse.exp fail + */ +- (void)getUserInfoResponse:(APIResponse*) response; + +/** + * 社交API统一回调接口 + * @param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse + * @param message 响应的消息,目前支持‘SendStory’,‘AppInvitation’,‘AppChallenge’,‘AppGiftRequest’ + */ +- (void)responseDidReceived:(APIResponse*)response forMessage:(NSString *)message; + +/** + * post请求的上传进度 + * @param tencentOAuth 返回回调的tencentOAuth对象 + * @param bytesWritten 本次回调上传的数据字节数 + * @param totalBytesWritten 总共已经上传的字节数 + * @param totalBytesExpectedToWrite 总共需要上传的字节数 + * @param userData 用户自定义数据 + */ +- (void)tencentOAuth:(TencentOAuth *)tencentOAuth didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite userData:(id)userData; + + +/** + * 通知第三方界面需要被关闭 + * @param tencentOAuth 返回回调的tencentOAuth对象 + * @param viewController 需要关闭的viewController + */ +- (void)tencentOAuth:(TencentOAuth *)tencentOAuth doCloseViewController:(UIViewController *)viewController; + +@end + +#pragma mark - TencentWebViewDelegate(H5登录webview旋转方向回调) + +/** + * @brief TencentWebViewDelegate: H5登录webview旋转方向回调协议 + * + * 第三方应用可以根据自己APP的旋转方向限制,通过此协议设置 + */ +@protocol TencentWebViewDelegate +@optional +- (BOOL) tencentWebViewShouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation; +- (NSUInteger) tencentWebViewSupportedInterfaceOrientationsWithWebkit; +- (BOOL) tencentWebViewShouldAutorotateWithWebkit; +@end diff --git a/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/TencentOpenApiUmbrellaHeader.h b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/TencentOpenApiUmbrellaHeader.h new file mode 100644 index 0000000..6a8a10e --- /dev/null +++ b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/Headers/TencentOpenApiUmbrellaHeader.h @@ -0,0 +1,24 @@ +// +// TencentOpenApiUmbrellaHeader.h +// TencentOpenApi_IOS +// +// Created by jyukeizhang(张储祺) on 2020/7/27. +// Copyright © 2020 Tencent. All rights reserved. +// + +#ifndef TencentOpenApiUmbrellaHeader_h +#define TencentOpenApiUmbrellaHeader_h + +#import + +FOUNDATION_EXPORT double StaticLibraryModuleVersionNumber; +FOUNDATION_EXPORT const unsigned char StaticLibraryModuleVersionString[]; + +#import "QQApiInterface.h" +#import "QQApiInterfaceObject.h" +#import "SDKDef.h" +#import "TencentOAuth.h" + + +#endif /* TencentOpenApiUmbrellaHeader_h */ + diff --git a/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/PrivacyInfo.xcprivacy b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..79bc9e2 --- /dev/null +++ b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/PrivacyInfo.xcprivacy @@ -0,0 +1,17 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + + diff --git a/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/TencentOpenAPI b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/TencentOpenAPI new file mode 100644 index 0000000..61e0013 Binary files /dev/null and b/ios/Libraries/TencentOpenAPI.xcframework/ios-arm64_i386_x86_64-simulator/TencentOpenAPI.framework/TencentOpenAPI differ diff --git a/ios/tencent_kit.podspec b/ios/tencent_kit.podspec index 7fa8eb6..589837a 100644 --- a/ios/tencent_kit.podspec +++ b/ios/tencent_kit.podspec @@ -44,14 +44,14 @@ Pod::Spec.new do |s| s.dependency 'Flutter' s.platform = :ios, '11.0' - # v3.5.11 + # v3.5.18 s.subspec 'vendor' do |sp| - sp.vendored_frameworks = 'Libraries/*.framework' + sp.vendored_frameworks = 'Libraries/*.xcframework' sp.frameworks = 'Security', 'SystemConfiguration', 'CoreGraphics', 'CoreTelephony', 'WebKit' sp.libraries = 'iconv', 'sqlite3', 'stdc++', 'z' sp.requires_arc = true end # Flutter.framework does not contain a i386 slice. - s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386', 'OTHER_LDFLAGS' => '-ObjC' } end diff --git a/ohos/src/libs/QQOpenSdk.har b/ohos/src/libs/QQOpenSdk.har index e56bbc8..d6ef362 100644 Binary files a/ohos/src/libs/QQOpenSdk.har and b/ohos/src/libs/QQOpenSdk.har differ