WAQQImpl_CN.podspec
@@ -9,17 +9,18 @@ Pod::Spec.new do |s| s.name = 'WAQQImpl_CN' s.version = '2.1.0' s.version = '2.2.0' s.summary = 'WAQQImpl_CN framework in testing environment.' s.license = 'MIT' s.author = { "Hank" => "hank.zhang@gamehollywood.com" } s.homepage = 'http://admin@repo.wingsdk.cn:8082/summary/WAQQImpl_CN.git' s.source = { :git => "http://admin@repo.wingsdk.cn:8082/r/WAQQImpl_CN.git" , :tag => s.version} s.homepage = 'http://172.16.100.58:7070/summary/WAQQImpl_CN.git' s.source = { :git => "http://admin@172.16.100.58:7070/r/WAQQImpl_CN.git" , :tag => s.version} s.platform = :ios s.ios.deployment_target = "7.0" s.vendored_frameworks = 'frameworks/*.framework' s.resources = ['config/*.xml'] s.dependency 'WASdkIntf_CN' # s.dependency 'WASdkImpl_CN' s.resources = ['config/*.xml','bundle/TencentOpenApi_IOS_Bundle.bundle'] # s.dependency 'WASdkIntf_CN', '~> 2.1.0' # # s.dependency 'WASdkImpl_CN', '~> 2.1.0' s.requires_arc = true end WAQQImpl_CN/2.2.0/WAQQImpl_CN.podspec
New file @@ -0,0 +1,26 @@ # # Be sure to run `pod spec lint WAApImpl_CN.podspec' to ensure this is a # valid spec and to remove all comments including this before submitting the spec. # # To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html # To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/ # Pod::Spec.new do |s| s.name = 'WAQQImpl_CN' s.version = '2.2.0' s.summary = 'WAQQImpl_CN framework in testing environment.' s.license = 'MIT' s.author = { "Hank" => "hank.zhang@gamehollywood.com" } s.homepage = 'http://172.16.100.58:7070/summary/WAQQImpl_CN.git' s.source = { :git => "http://admin@172.16.100.58:7070/r/WAQQImpl_CN.git" , :tag => s.version} s.platform = :ios s.ios.deployment_target = "7.0" s.vendored_frameworks = 'frameworks/*.framework' s.resources = ['config/*.xml','bundle/TencentOpenApi_IOS_Bundle.bundle'] # s.dependency 'WASdkIntf_CN', '~> 2.1.0' # # s.dependency 'WASdkImpl_CN', '~> 2.1.0' s.requires_arc = true end bundle/TencentOpenApi_IOS_Bundle.bundle/Info.plistBinary files differ
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/btn_cancel.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/btn_cancel_hover.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/refresh.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/refresh@2x.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_pengyouquan.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_pengyouquan@2x.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_qq.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_qq@2x.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_qzone.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_qzone@2x.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_safari.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_safari@2x.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_weixin.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_weixin@2x.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_back.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_back@2x.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_backtogame.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_backtogame@2x.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_backward.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_backward@2x.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_for.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_for@2x.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_forward.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_forward@2x.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_more.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_more@2x.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_recommand.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_recommand@2x.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_stop.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_stop@2x.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_toolbg.png
bundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_toolbg@2x.png
bundle/TencentOpenApi_IOS_Bundle.bundle/error.png
bundle/TencentOpenApi_IOS_Bundle.bundle/local.html
New file @@ -0,0 +1,73 @@ <!DOCTYPE html> <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <meta charset="UTF-8"> <title>社交渠道</title> <meta name="viewport" content="width=device-width,initial-scale=1.0, maximum-scale = 1.0,user-scalable=no" /> <meta name="format-detection" content="telephone=no" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <style> *{margin:0;padding:0} .header{text-align:center;height:44px;background:-webkit-gradient(linear,0 0,0 100%,from(#4c4c4c),to(#313131));border-top:#5b5b5b 1px solid;position:relative;line-height:44px} .header h1{color:#fff;font-weight:bold;font-size:20px} .header a{width:49px;height:29px;background-size:49px 29px;position:absolute;top:7px;display:block;text-indent:-999em;cursor:pointer} .header .back{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEkAAAAsCAYAAAApSpU1AAAFgElEQVR42u2bSWgsRRjH40XEg3rwIujBg6KCp4CH7AnZ933f9z0hK7kk8RCEhCwEMTmID81C8JIVQRJEfGQ5PEwOnpKDh+T0nomCGngolvUrpsaeYWbSnel5ODOv4Jfp/mrpqv9UffV1TyciwqYUGRn5keRjydeS7yWPgogfJOuSVsnrEXYn2ei7ku+Sk5NFZWWlaG1tFd3d3aK/vz9o6OnpES0tLaKoqEjIsfwu6bNToDzJbU1NjRgbGxPDw8NiYGAgqATSDA4OitHRUXXsEGvJDoEqJX8zcxCG2dPR0SHa2tqCkvb2dtHZ2Sl6e3vFyMiIKCwsRKgufwTKlTxFIKYqF2G6Njc3Bz2MA7EQTY7xRvLafQR6X/JHY2OjaoxGm5qaQgrEYlXk5OQgVJtVgV6W/FRRUaEEorFQE8goVFlZGSI9sCrS5wUFBaKrq0s1wmwKZZgMcsz7VgQqyszMVA4apRsaGkKe8vJyRHpoVqA3JL/U1dUpH4TKz0VyFegFybfEDuxmVK6vrw8LHD7JlEjdubm5aktEIGZTuFBaWnq3SLLAB0TUennV1taGFSUlJb5FkpkvcvNHQRw1lbj9CCfMiPQJy4ytngrV1dXPDEKMxcVFsbe390yv605xcbF3kWRGDPdlCMQMqqqq8gsCz5ubG7G7u+tiRwhscHJyIi4uLlQ5nW5vb8XU1JTXOlagntV+O250H3oS6BXJz3h2nBeFeQTiL4hA4lPb6DxCIA6Qh21jY0OJ46kd8km6jhm4BvWs9tlxk+tRpAcsMxw1BYk67eL4+Fh1Wp/TceO5GbRIVupwDepZ7a9HkaShOC0tTTlqBCKYshtCCX28s7Mjrq6uxMLCgld4bGGsTx2SlWsiEvWs9pVbMBeRHFH1NQqyxFhugUYP2FeijKc6+hwBPCXsxjLu7ZghPz//P5F0VJ2Xl6d2MgoQSNnF0NCQmJ+fd6LteiYZ8zQHBwdqsMbyug5Jn5+fn6tlbKzLOXZjGepZ7Td6GEXqycrKUo4agYgP7GR7e9vlW3a3M4i5uTmnnftDnC12b23pc8pgcy9jrOupjBmcIsk/bxFVs8RYh3YLdNcAr6+v1Sfp6OhICXR2dqZEYgb+X0RiqW2mpKSoDAKoQKEHqM8RCBvH6+vrShidODfThhbAvQx2X2XMwC5vXG6vSs5TU1NVABUo9AA5np2dVceTk5POfGaSTswmdllfbQACaBE02mYsg91qfx2Pb112tw8lf+KbiA8CwdbWlhogx3qpcYxQl5eXKm9tbU3BrMJGnrc2YH9/3ymKEey6DOfUs9rf7Oxsj3FSdVxcnIoPAoEeIMd0fHV11WlDsImJCWdZjhEKu7c2zKJFstpfJoy3iPvThIQEFSPYDd8uaXx83GnTQhHhu5fnh8Ll5WUXmxbJynW1SFb760skHpEcJSUlKe9uB319feL09FQNTn+ylDY3N50g1szMjEeor9ui7H0S9az2m2f6vp4CvCl5zI6Hh/eXpaUl1dGVlRV1Pj09LQ4PD112M1+J8rotLRI2s+gvxGq/MzIy7nyelMTjEtTEy/sLnfWV5wv3sgzYyrX5cnxd3xvp6emmHt+OxsbGKi8fjpgVSQWa7Hg4sXCDJyJmfy1RgWZiYqJyZOEEwbWVHydVoMmLWjizcIGNy7RIDqGqoqOjn4tkQqjPYmJilEMLB1g5ll6YcIj0kuRHHDlOLdTBD8vxfnGfl7jekfzGrUuoi8SqkWNtue/rgASaT1GaHSAU4bZMjvEJP7H5895kueSv+Ph45eBCjaioKERqsuMN3HTeeyYqDxVxmEEOgebtfJf7bcmu5B9CBJw6syvYoN8OcX7lPwMiApFkw+9JhiRfSb5h6wwyvpQ0evJB/wIFDhaTvqlwnwAAAABJRU5ErkJggg==);left:5px} </style> </head> <body> <div class="container" id="container"> <div class="header"> <h1 id="title"></h1> <a href="javascript:void(0)" class="back" id="cancel">返回</a> <a href="javascript:void(0)" style="display:none" id="confirm"></a> </div> <div id="main"></div> </div> <script> (function () { try { document.domain = "qq.com"; } catch (_) { alert("invalid domain"); } function getParam(name) { var re = new RegExp("(?:\\?|#|&)" + name + "=([^&]*)(?:$|&|#)", "i"), m = re.exec(window.location.href); var ret = m ? m[1] : ""; ret = ret.replace(/[+]/ig, "%20"); return ret; } var iface = getParam("iface"); switch (iface) { case "AppChallenge": case "AppInvitation": case "AppGiftRequest": case "SendStory": { var appid = getParam("oauth_consumer_key"), type = getParam("type"); var url = "tencent" + appid + "://" + iface + "/cancel"; document.getElementById("cancel").addEventListener("click", function () { setTimeout(function () { window.open(url, "_self"); }, 0); }, false); document.getElementById("title").innerHTML = { AppChallenge : type == "pk" ? "发送挑战" : "发送炫耀", AppInvitation : "发送应用邀请", AppGiftRequest : type == "request" ? "发送应用请求" : "发送免费礼物", SendStory : "发送分享" }[iface]; document.write('<script type="text/javascript" src="https://qzonestyle.gtimg.cn/open/mobile/' + { AppChallenge : "brag_ios/js/sdk_brag.js", AppInvitation : "invite_ios/js/sdk_invite.js", AppGiftRequest : "request_ios/js/sdk_request.js", SendStory : "story_ios/js/sdk_story.js" }[iface] + '"><\/script>'); break; } default: return; } })(); </script> </body> </html> bundle/TencentOpenApi_IOS_Bundle.bundle/qqicon.png
bundle/TencentOpenApi_IOS_Bundle.bundle/success.png
config/wa_sdk_impl_config_qq.xml
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <config> <version val="QQ2.1.0"/> <version val="QQ2.2.0"/> <comps> <!-- 公共模块 --> <comp module="CORE" plaf="QQ" mandatory="YES" value="WAQQCore" desc="公共模块"/> frameworks/TencentOpenAPI.framework/Headers/QQApiInterface.h
@@ -155,4 +155,20 @@ \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 frameworks/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h
@@ -37,6 +37,7 @@ EQQAPIQZONENOTSUPPORTIMAGE = 10001, //qzone分享不支持image类型分享 EQQAPIVERSIONNEEDUPDATE = 10002, //当前QQ版本太低,需要更新至新版本才可以支持 ETIMAPIVERSIONNEEDUPDATE = 10004, //当前TIM版本太低,需要更新至新版本才可以支持 EAPPURLTYPESILLEGALITY = 20000, //(>=3.3.8)第三方APP的info.plist中UrlTypes字段存在QQ的UrlScheme }; #pragma mark - QQApiObject(分享对象类型) @@ -44,7 +45,7 @@ // QQApiObject control flags typedef NS_ENUM(NSUInteger,kQQAPICtrlFlag) { kQQAPICtrlFlagQZoneShareOnStart = 0x01, kQQAPICtrlFlagQZoneShareForbid = 0x02, kQQAPICtrlFlagQZoneShareForbid = 0x02, //屏蔽好友选择器上的空间入口 kQQAPICtrlFlagQQShare = 0x04, kQQAPICtrlFlagQQShareFavorites = 0x08, //收藏 kQQAPICtrlFlagQQShareDataline = 0x10, //数据线 @@ -65,6 +66,9 @@ MiniProgramType_Online=3, // 正式版,默认 MiniProgramType_Preview=4, // 预览版 }; /// 打印回调的block typedef void(^QQApiLogBolock)(NSString *logStr); // QQApiObject /** \brief 所有在QQ及插件间发送的数据对象的根类。 @@ -106,9 +110,16 @@ //唤起小程序 - QQ 8.1.8 __attribute__((visibility("default"))) @interface QQApiLaunchMiniProgramObject : QQApiObject @property(nonatomic,retain) NSString* miniAppID; //必填,小程序的AppId(注:必须在QQ互联平台中,将该小程序与分享的App绑定) @property(nonatomic,retain) NSString* miniPath; //必填,小程序的展示路径 @property(nonatomic,retain) 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 用于请求回应的数据类型。 <h3>可能错误码及描述如下:</h3> frameworks/TencentOpenAPI.framework/Headers/TencentOAuth.h
@@ -88,7 +88,6 @@ /** 第三方在授权登录/分享 时选择 QQ,还是TIM 。在授权前一定要指定其中一个类型*/ @property(nonatomic, assign) TencentAuthShareType authShareType; /** * 获取上次登录得到的token * @@ -150,22 +149,9 @@ + (TencentAuthorizeState *)authorizeState; /** * 用来获得当前手机qq的版本号 * \return 返回手机qq版本号 **/ + (int)iphoneQQVersion __attribute__((deprecated("已过期, 建议删除调用"))); /** * 用来获得当前手机TIM的版本号 * \return 返回手机qq版本号 **/ + (int)iphoneTIMVersion __attribute__((deprecated("已过期, 建议删除调用"))); /** * 初始化TencentOAuth对象 * \param appId 第三方应用在互联开放平台申请的唯一标识 * \param delegate 第三方应用用于接收请求返回结果的委托对象 * \param appId 不可为nil,第三方应用在互联开放平台申请的唯一标识 * \param delegate 不可为nil,第三方应用用于接收请求返回结果的委托对象 * \return 初始化后的授权登录对象 */ - (id)initWithAppId:(NSString *)appId @@ -173,14 +159,37 @@ /** * 初始化TencentOAuth对象(>=3.3.7) * \param appId 第三方应用在互联开放平台申请的唯一标识 * \param universalLink 第三方应用在互联开放平台注册的universallink,和bundleID一一对应 * \param delegate 第三方应用用于接收请求返回结果的委托对象 * \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<TencentSessionDelegate>)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<TencentSessionDelegate>)delegate; /** * 判断用户手机上是否安装手机QQ @@ -203,18 +212,6 @@ + (BOOL)iphoneTIMInstalled; /** * 判断用户手机上的手机QQ是否支持SSO登录 * \return YES:支持 NO:不支持 */ + (BOOL)iphoneQQSupportSSOLogin __attribute__((deprecated("QQ版本均支持SSO登录。该接口已过期, 建议删除调用"))); /** * 判断用户手机上的手机TIM是否支持SSO登录 * \return YES:支持 NO:不支持 */ + (BOOL)iphoneTIMSupportSSOLogin __attribute__((deprecated("TIM版本均支持SSO登录。该接口已过期, 建议删除调用"))); /** * 登录授权 * * \param permissions 授权信息列 @@ -224,20 +221,10 @@ /** * 登录授权 * \param permissions 授权信息列表 * \param bInSafari 是否使用safari进行登录.<b>IOS SDK 1.3版本开始此参数废除</b> */ - (BOOL)authorize:(NSArray *)permissions inSafari:(BOOL)bInSafari; /** * 登录授权 * \param permissions 授权信息列表 * \param localAppId 应用APPID * \param bInSafari 是否使用safari进行登录.<b>IOS SDK 1.3版本开始此参数废除</b> */ - (BOOL)authorize:(NSArray *)permissions localAppId:(NSString *)localAppId inSafari:(BOOL)bInSafari; localAppId:(NSString *)localAppId; /** * 登录授权<web为二维码扫码方式> @@ -383,7 +370,7 @@ /** * 登录时权限信息的获得 */ - (NSArray *)getAuthorizedPermissions:(NSArray *)permissions withExtraParams:(NSDictionary *)extraParams; - (NSArray *)getAuthorizedPermissions:(NSArray *)permissions withExtraParams:(NSDictionary *)extraParams __attribute__((deprecated("该接口已过期, 建议删除调用"))); /** * unionID获得 frameworks/TencentOpenAPI.framework/Headers/TencentOpenApiUmbrellaHeader.h
New file @@ -0,0 +1,22 @@ // // TencentOpenApiUmbrellaHeader.h // TencentOpenApi_IOS // // Created by jyukeizhang(张储祺) on 2020/7/27. // Copyright © 2020 Tencent. All rights reserved. // #ifndef TencentOpenApiUmbrellaHeader_h #define TencentOpenApiUmbrellaHeader_h FOUNDATION_EXPORT double StaticLibraryModuleVersionNumber; FOUNDATION_EXPORT const unsigned char StaticLibraryModuleVersionString[]; #imoort "QQApiInterface.h" #import "QQApiInterfaceObject.h" #import "sdkdef.h" #import "TencentOAuth.h" #endif /* TencentOpenApiUmbrellaHeader_h */ frameworks/TencentOpenAPI.framework/Headers/module.modulemap
New file @@ -0,0 +1,9 @@ framework module TencentOpenAPI { header "QQApiInterface.h" header "QQApiInterfaceObject.h" header "TencentOAuth.h" header "TencentOpenApiUmbrellaHeader.h" header "sdkdef.h" export * } frameworks/TencentOpenAPI.framework/TencentOpenAPIBinary files differ
frameworks/WAQQImpl.framework/Headers/WAQQImpl.h
@@ -15,6 +15,6 @@ FOUNDATION_EXPORT const unsigned char WAQQImplVersionString[]; // In this header, you should import all the public headers of your framework using statements like #import <WAQQImpl/PublicHeader.h> //time:2020/05/08 15:35 ver:2.1.0 //time:2021/01/29 15:35 ver:2.2.0 frameworks/WAQQImpl.framework/Info.plistBinary files differ
frameworks/WAQQImpl.framework/WAQQImplBinary files differ