WAQQImpl_CN.podspec
@@ -9,7 +9,7 @@ Pod::Spec.new do |s| s.name = 'WAQQImpl_CN' s.version = '2.2.0' s.version = '2.5.0' s.summary = 'WAQQImpl_CN framework in testing environment.' s.license = 'MIT' s.author = { "Hank" => "hank.zhang@gamehollywood.com" } WAQQImpl_CN/2.5.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.5.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.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/btn_cancel_hover.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_pengyouquan.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_pengyouquan@2x.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_qq.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_qq@2x.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_qzone.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_qzone@2x.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_weixin.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_weixin@2x.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_back.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_back@2x.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_backtogame.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_backtogame@2x.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_backward.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_backward@2x.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_forward.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_forward@2x.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_more.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_more@2x.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_stop.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_stop@2x.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_toolbg.pngbundle/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_toolbg@2x.pngbundle/TencentOpenApi_IOS_Bundle.bundle/local.html
@@ -1,73 +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> <!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> config/wa_sdk_impl_config_qq.xml
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <config> <version val="QQ2.2.0"/> <version val="QQ2.5.0"/> <comps> <!-- 公共模块 --> <comp module="CORE" plaf="QQ" mandatory="YES" value="WAQQCore" desc="公共模块"/> frameworks/TencentOpenAPI.framework/Headers/QQApiInterface.h
@@ -11,6 +11,9 @@ typedef void (^sendResultBlock)(NSDictionary *result); // 发送消息回调是否发送成功 typedef void(^QQApiInterfaceSendMessageResultBlock)(QQApiSendResultCode sendResultCode, NSString *message); /** \brief 处理来至QQ的请求及响应的回调协议 */ @@ -76,6 +79,56 @@ \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发起组图分享到表情收藏 @@ -157,6 +210,7 @@ + (NSString *)getTIMInstallUrl; #pragma mark - Log /*! @brief 调用此函数可以导出QQSDK的Log到第三方中,用于定位问题 注意1:SDK会强引用这个block,注意不要导致内存泄漏,注意不要导致内存泄漏 @@ -165,10 +219,14 @@ * @param logBlock 打印log的回调block */ + (void)startLogWithBlock:(QQApiLogBolock)logBlock; ///停止回调打印 + (void)stopLog; ///设置打印日志到文件开关on/off,如果不设置,默认不打印到文件 + (void)setSwitchPrintLogToFile:(BOOL)on; ///日志文件目录 + (NSString*)getLogFilePath; + (NSString *)getLogFilePath; @end frameworks/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h
@@ -11,46 +11,48 @@ #import <Foundation/Foundation.h> 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, // 该组织尚未绑定群聊 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 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, // 该组织已经解绑群聊 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, //支持小程序 kQQAPICtrlFlagQZoneShareOnStart = 0x01, kQQAPICtrlFlagQZoneShareForbid = 0x02, //屏蔽好友选择器上的空间入口 kQQAPICtrlFlagQQShare = 0x04, kQQAPICtrlFlagQQShareFavorites = 0x08, //收藏 kQQAPICtrlFlagQQShareDataline = 0x10, //数据线 kQQAPICtrlFlagQQShareEnableArk = 0x20, //支持ARK kQQAPICtrlFlagQQShareEnableMiniProgram = 0x40, //支持小程序 }; // 分享到QQ或TIM @@ -61,10 +63,10 @@ //小程序的类型 typedef NS_ENUM(NSUInteger, MiniProgramType) { MiniProgramType_Develop=0, // 开发版 MiniProgramType_Test=1, // 测试版 MiniProgramType_Online=3, // 正式版,默认 MiniProgramType_Preview=4, // 预览版 MiniProgramType_Develop = 0, // 开发版 MiniProgramType_Test = 1, // 测试版 MiniProgramType_Online = 3, // 正式版,默认 MiniProgramType_Preview = 4, // 预览版 }; /// 打印回调的block @@ -74,10 +76,14 @@ /** \brief 所有在QQ及插件间发送的数据对象的根类。 */ __attribute__((visibility("default"))) @interface QQApiObject : NSObject @property(nonatomic, retain) NSString* title; ///< 标题,最长128个字符 @property(nonatomic, retain) NSString* description; ///<简要描述,最长512个字符 @property(nonatomic, retain) NSString* universalLink; ///(>=3.3.7)支持第三方传入在互联开放平台注册的universallink @property(nonatomic, assign) uint64_t cflag; @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 @@ -90,8 +96,8 @@ /** \brief 支持Ark的根类。 */ __attribute__((visibility("default"))) @interface ArkObject : NSObject @property(nonatomic,retain) NSString* arkData; ///< 显示Ark所需的数据,json串,长度暂不限制 @property(nonatomic,assign) QQApiObject* qqApiObject; ///<原有老版本的QQApiObject @property (nonatomic, copy) NSString *arkData; ///< 显示Ark所需的数据,json串,长度暂不限制 @property (nonatomic,assign) QQApiObject* qqApiObject; ///<原有老版本的QQApiObject - (id)initWithData:(NSString *)arkData qqApiObject:(QQApiObject*)qqApiObject; + (id)objectWithData:(NSString *)arkData qqApiObject:(QQApiObject*)qqApiObject; @@ -100,24 +106,24 @@ #pragma mark QQ小程序 //分享小程序消息 - QQ 8.0.8 __attribute__((visibility("default"))) @interface QQApiMiniProgramObject : NSObject @property(nonatomic,retain) QQApiObject* qqApiObject; //原有老版本的QQApiObject @property(nonatomic,retain) NSString* miniAppID; //必填,小程序的AppId(注:必须在QQ互联平台中,将该小程序与分享的App绑定) @property(nonatomic,retain) NSString* miniPath; //必填,小程序的展示路径 @property(nonatomic,retain) NSString* webpageUrl; //必填,兼容低版本的网页链接 @property(nonatomic,assign) MiniProgramType miniprogramType; //非必填,小程序的类型,默认正式版(3),可选测试版(1)、预览版(4) @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,retain) NSString* miniAppID; //必填,小程序的AppId(注:必须在QQ互联平台中,将该小程序与分享的App绑定) @property(nonatomic,retain) NSString* miniPath; //小程序的展示路径,不填展示默认小程序首页 @property(nonatomic,assign) MiniProgramType miniprogramType; //非必填,小程序的类型,默认正式版(3),可选测试版(1)、开发版(0) @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; @property (nonatomic, copy) NSString *appParameter; //小程序带来的数据,透传 + (instancetype)newWithAppParameter:(NSString *)parameter; @end // QQApiResultObject @@ -134,19 +140,21 @@ </TABLE> */ __attribute__((visibility("default"))) @interface QQApiResultObject : QQApiObject @property(nonatomic,retain) NSString* error; ///<错误 @property(nonatomic,retain) NSString* errorDescription; ///<错误描述 @property(nonatomic,retain) NSString* extendInfo; ///<扩展信息 @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,retain)NSString* text; ///<文本内容,必填,最长1536个字符 @property (nonatomic, copy)NSString *text; ///<文本内容,必填,最长1536个字符 -(id)initWithText:(NSString*)text; ///<初始化方法 +(id)objectWithText:(NSString*)text;///<工厂方法,获取一个QQApiTextObject对象. - (id)initWithText:(NSString *)text; ///<初始化方法 + (id)objectWithText:(NSString *)text;///<工厂方法,获取一个QQApiTextObject对象. @end // QQApiURLObject @@ -166,31 +174,34 @@ URL地址所指向的目标类型. @note 参见QQApi.h 中的 QQApiURLTargetType 定义. */ @property(nonatomic)QQApiURLTargetType targetContentType; @property (nonatomic)QQApiURLTargetType targetContentType; @property(nonatomic,retain)NSURL* url; ///<URL地址,必填,最长512个字符 @property(nonatomic,retain)NSData* previewImageData;///<预览图像数据,最大1M字节 @property(nonatomic, retain) NSURL *previewImageURL; ///<预览图像URL **预览图像数据与预览图像URL可二选一 @property (nonatomic, strong) NSURL *url; ///<URL地址,必填,最长512个字符 @property (nonatomic, copy) NSData *previewImageData;///<预览图像数据,最大1M字节 @property (nonatomic, strong) NSURL *previewImageURL; ///<预览图像URL **预览图像数据与预览图像URL可二选一 /** 初始化方法 */ -(id)initWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageData:(NSData*)data targetContentType:(QQApiURLTargetType)targetContentType; -(id)initWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageURL:(NSURL*)previewURL targetContentType:(QQApiURLTargetType)targetContentType; - (id)initWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageData:(NSData *)data targetContentType:(QQApiURLTargetType)targetContentType; - (id)initWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageURL:(NSURL *)previewURL targetContentType:(QQApiURLTargetType)targetContentType; /** 工厂方法,获取一个QQApiURLObject对象 */ +(id)objectWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageData:(NSData*)data targetContentType:(QQApiURLTargetType)targetContentType; +(id)objectWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageURL:(NSURL*)previewURL targetContentType:(QQApiURLTargetType)targetContentType; + (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageData:(NSData *)data targetContentType:(QQApiURLTargetType)targetContentType; + (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageURL:(NSURL *)previewURL targetContentType:(QQApiURLTargetType)targetContentType; @end // QQApiExtendObject /** @brief 扩展数据类型 */ @interface QQApiExtendObject : QQApiObject @property(nonatomic,retain) NSData* data;///<具体数据内容,必填,最大5M字节 @property(nonatomic,retain) NSData* previewImageData;///<预览图像,最大1M字节 @property(nonatomic,retain) NSArray* imageDataArray;///图片数组(多图暂只支持分享到手机QQ收藏功能) @property (nonatomic, copy) NSData *data;///<具体数据内容,必填,最大5M字节 @property (nonatomic, copy) NSData *previewImageData;///<预览图像,最大1M字节 @property (nonatomic, copy) NSArray *imageDataArray;///图片数组(多图暂只支持分享到手机QQ收藏功能) /** 初始化方法 @@ -199,7 +210,7 @@ @param title 标题 @param description 此对象,分享的描述 */ - (id)initWithData:(NSData*)data previewImageData:(NSData*)previewImageData title:(NSString*)title description:(NSString*)description; - (id)initWithData:(NSData *)data previewImageData:(NSData *)previewImageData title:(NSString *)title description:(NSString *)description; /** 初始化方法 @@ -208,7 +219,8 @@ @param description 此对象,分享的描述 @param imageDataArray 发送的多张图片队列 */ - (id)initWithData:(NSData *)data previewImageData:(NSData*)previewImageData title:(NSString *)title description:(NSString *)description imageDataArray:(NSArray *)imageDataArray; - (id)initWithData:(NSData *)data previewImageData:(NSData *)previewImageData title:(NSString *)title description:(NSString *)description imageDataArray:(NSArray *)imageDataArray; /** helper方法获取一个autorelease的<code>QQApiExtendObject</code>对象 @@ -219,8 +231,7 @@ @return 一个自动释放的<code>QQApiExtendObject</code>实例 */ + (id)objectWithData:(NSData*)data previewImageData:(NSData*)previewImageData title:(NSString*)title description:(NSString*)description; + (id)objectWithData:(NSData *)data previewImageData:(NSData *)previewImageData title:(NSString *)title description:(NSString *)description; /** helper方法获取一个autorelease的<code>QQApiExtendObject</code>对象 @param data 数据内容 @@ -231,7 +242,8 @@ @return 一个自动释放的<code>QQApiExtendObject</code>实例 */ + (id)objectWithData:(NSData*)data previewImageData:(NSData*)previewImageData title:(NSString*)title description:(NSString*)description imageDataArray:(NSArray*)imageDataArray; + (id)objectWithData:(NSData *)data previewImageData:(NSData *)previewImageData title:(NSString *)title description:(NSString *)description imageDataArray:(NSArray *)imageDataArray; @end @@ -265,7 +277,13 @@ @"ret=-17&error_des=account diff"//账号不一致 */ @interface QQApiVideoForQQAvatarObject : QQApiExtendObject @property(nonatomic, retain) NSString *assetURL; @property (nonatomic, copy) NSString *assetURL; @end //QQApiAuthObject 用于拉起手Q的授权详情页 @interface QQApiAuthObject : QQApiObject @end // QQApiImageArrayForFaceCollectionObject @@ -274,13 +292,13 @@ */ @interface QQApiImageArrayForFaceCollectionObject : QQApiObject @property(nonatomic,retain) NSArray* imageDataArray;///图片数组 @property (nonatomic, copy) NSArray *imageDataArray;///图片数组 /** 初始化方法 @param imageDataArray 图片数组 */ - (id)initWithImageArrayData:(NSArray*)imageDataArray; - (id)initWithImageArrayData:(NSArray *)imageDataArray; /** helper方法获取一个autorelease的<code>QQApiObject</code>对象 @param imageDataArray 发送的多张图片队列 @@ -297,8 +315,8 @@ */ @interface QQApiImageArrayForQZoneObject : QQApiObject @property(nonatomic,retain) NSArray* imageDataArray;///图片数组 @property(nonatomic,retain) NSDictionary* extMap; // 扩展字段 @property (nonatomic, copy) NSArray *imageDataArray;///图片数组 @property (nonatomic, copy) NSDictionary *extMap; // 扩展字段 /** 初始化方法 @@ -306,7 +324,7 @@ @param title 写说说的内容,可以为空 @param extMap 扩展字段 */ - (id)initWithImageArrayData:(NSArray*)imageDataArray title:(NSString*)title extMap:(NSDictionary *)extMap; - (id)initWithImageArrayData:(NSArray *)imageDataArray title:(NSString *)title extMap:(NSDictionary *)extMap; /** helper方法获取一个autorelease的<code>QQApiExtendObject</code>对象 @@ -316,7 +334,7 @@ @return 一个自动释放的<code>QQApiExtendObject</code>实例 */ + (id)objectWithimageDataArray:(NSArray*)imageDataArray title:(NSString*)title extMap:(NSDictionary *)extMap; + (id)objectWithimageDataArray:(NSArray *)imageDataArray title:(NSString *)title extMap:(NSDictionary *)extMap; @end @@ -329,17 +347,17 @@ */ @interface QQApiVideoForQZoneObject : QQApiObject @property(nonatomic, retain) NSString *assetURL; @property(nonatomic,retain) NSDictionary* extMap; // 扩展字段 @property(nonatomic,retain) NSData* videoData; @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)initWithAssetURL:(NSString *)assetURL title:(NSString *)title extMap:(NSDictionary *)extMap; + (id)objectWithAssetURL:(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)initWithVideoData:(NSData *)videoData title:(NSString *)title extMap:(NSDictionary *)extMap; + (id)objectWithVideoData:(NSData*)videoData title:(NSString*)title extMap:(NSDictionary *)extMap; + (id)objectWithVideoData:(NSData *)videoData title:(NSString *)title extMap:(NSDictionary *)extMap; @end @@ -350,7 +368,7 @@ */ @interface QQApiWebImageObject : QQApiObject @property(nonatomic, retain) NSURL *previewImageURL; ///<预览图像URL @property (nonatomic, strong) NSURL *previewImageURL; ///<预览图像URL /** 初始化方法 @@ -358,7 +376,7 @@ @param title 标题 @param description 此对象,分享的描述 */ - (id)initWithPreviewImageURL:(NSURL*)previewImageURL title:(NSString*)title description:(NSString*)description; - (id)initWithPreviewImageURL:(NSURL *)previewImageURL title:(NSString *)title description:(NSString *)description; /** helper方法获取一个autorelease的<code>QQApiWebImageObject</code>对象 @@ -366,7 +384,7 @@ @param title 标题 @param description 此对象,分享的描述 */ + (id)objectWithPreviewImageURL:(NSURL*)previewImageURL title:(NSString*)title description:(NSString*)description; + (id)objectWithPreviewImageURL:(NSURL *)previewImageURL title:(NSString *)title description:(NSString *)description; @end @@ -375,11 +393,12 @@ /** @brief 本地文件对象(暂只支持分享到手机QQ数据线功能) 用于分享文件内容的对象,是一个指定为文件类型的<code>QQApiExtendObject</code> */ @interface QQApiFileObject : QQApiExtendObject { NSString* _fileName; @interface QQApiFileObject : QQApiExtendObject { NSString *_fileName; } @property(nonatomic, retain)NSString* fileName; @property (nonatomic, copy)NSString *fileName; @end // QQApiAudioObject @@ -388,7 +407,7 @@ */ @interface QQApiAudioObject : QQApiURLObject @property (nonatomic, retain) NSURL *flashURL; ///<音频URL地址,最长512个字符 @property (nonatomic, strong) NSURL *flashURL; ///<音频URL地址,最长512个字符 /** 获取一个autorelease的<code>QQApiAudioObject</code> @@ -398,7 +417,7 @@ @param data 分享内容的预览图像 @note 如果url为空,调用<code>QQApi#sendMessage:</code>时将返回FALSE */ +(id)objectWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageData:(NSData*)data; + (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageData:(NSData *)data; /** 获取一个autorelease的<code>QQApiAudioObject</code> @@ -408,7 +427,7 @@ @param previewURL 分享内容的预览图像URL @note 如果url为空,调用<code>QQApi#sendMessage:</code>时将返回FALSE */ +(id)objectWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageURL:(NSURL*)previewURL; + (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageURL:(NSURL *)previewURL; @end @@ -421,7 +440,7 @@ */ @interface QQApiVideoObject : QQApiURLObject @property (nonatomic, retain) NSURL *flashURL; ///<视频URL地址,最长512个字符 @property (nonatomic, strong) NSURL *flashURL; ///<视频URL地址,最长512个字符 /** 获取一个autorelease的<code>QQApiVideoObject</code> @@ -431,8 +450,7 @@ @param data 分享内容的预览图像 @note 如果url为空,调用<code>QQApi#sendMessage:</code>时将返回FALSE */ +(id)objectWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageData:(NSData*)data; + (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageData:(NSData *)data; /** 获取一个autorelease的<code>QQApiVideoObject</code> @param url 视频内容的目标URL @@ -441,7 +459,7 @@ @param previewURL 分享内容的预览图像URL @note 如果url为空,调用<code>QQApi#sendMessage:</code>时将返回FALSE */ +(id)objectWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageURL:(NSURL*)previewURL; + (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageURL:(NSURL *)previewURL; @end @@ -458,8 +476,7 @@ @param data 分享内容的预览图像 @note 如果url为空,调用<code>QQApi#sendMessage:</code>时将返回FALSE */ +(id)objectWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageData:(NSData*)data; + (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageData:(NSData *)data; /** 获取一个autorelease的<code>QQApiNewsObject</code> @param url 视频内容的目标URL @@ -468,7 +485,7 @@ @param previewURL 分享内容的预览图像URL @note 如果url为空,调用<code>QQApi#sendMessage:</code>时将返回FALSE */ +(id)objectWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageURL:(NSURL*)previewURL; + (id)objectWithURL:(NSURL *)url title:(NSString *)title description:(NSString *)description previewImageURL:(NSURL *)previewURL; @end @@ -481,19 +498,19 @@ /** 预定义的界面布局类型 */ @property(nonatomic,assign) unsigned int layoutType; @property(nonatomic,assign) NSData* previewImageData;///<预览图 @property(nonatomic,retain) NSArray* textArray;///<文本列表 @property(nonatomic,retain) NSArray* pictureDataArray;///<图片列表 +(id)objectWithLayoutType:(int)layoutType textArray:(NSArray*)textArray pictureArray:(NSArray*)pictureArray previewImageData:(NSData*)data; @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; + (id)objectWithDictionary:(NSDictionary *)dic; - (NSDictionary *)toDictionary; @end // QQApiExtraServiceObject; // QQApiExtraServiceObject; 通用业务消息处理类(旧版,后续使用QQApiCommonServiceObject) /** @brief OpenSDK扩展支持的服务,通用接口,后续会扩充能力 @param serviceID [必选] 扩展支持的服务类型ID,参考官方文档说明 @@ -503,13 +520,39 @@ @note 该接口的使用须先登录 */ @interface QQApiExtraServiceObject : QQApiObject @property (nonatomic,retain) NSString* serviceID; @property (nonatomic,retain) NSString* openID; @property (nonatomic,retain) NSString* toUin; @property (nonatomic,retain) NSDictionary* extraInfo; @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 @@ -519,10 +562,10 @@ /** @brief 广告数据对象 */ @interface QQApiAdItem : NSObject @property(nonatomic,retain) NSString* title; ///<名称 @property(nonatomic,retain) NSString* description;///<描述 @property(nonatomic,retain) NSData* imageData;///<广告图片 @property(nonatomic,retain) NSURL* target;///<广告目标链接 @property (nonatomic, copy) NSString *title; ///<名称 @property (nonatomic, copy) NSString *description;///<描述 @property (nonatomic, copy) NSData *imageData;///<广告图片 @property (nonatomic, strong) NSURL *target;///<广告目标链接 @end @@ -532,20 +575,20 @@ 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分享小程序消息 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应答处理分享消息的结果 ESHOWMESSAGEFROMQQRESPTYPE = 0, /// < 第三方应用 -> 手Q,第三方应用应答消息展现结果 EGETMESSAGEFROMQQRESPTYPE = 1, /// < 第三方应用 -> 手Q,第三方应用回应发往手Q的消息 ESENDMESSAGETOQQRESPTYPE = 2 /// < 手Q -> 第三方应用,手Q应答处理分享消息的结果 }; /** @@ -564,16 +607,16 @@ @interface QQBaseResp : NSObject /** 请求处理结果 */ @property (nonatomic, copy) NSString* result; @property (nonatomic, copy) NSString *result; /** 具体错误描述信息 */ @property (nonatomic, copy) NSString* errorDescription; @property (nonatomic, copy) NSString *errorDescription; /** 应答消息类型,参见\ref QQApiInterfaceRespType */ @property (nonatomic, assign) int type; /** 扩展信息 */ @property (nonatomic, assign) NSString* extendInfo; @property (nonatomic, copy) NSString *extendInfo; @end @@ -609,20 +652,23 @@ * @param miniMessage 小程序实例对象 * @return 消息请求实例 */ +(SendMessageToQQReq*) reqWithMiniContent:(QQApiMiniProgramObject *)miniMessage; + (SendMessageToQQReq *)reqWithMiniContent:(QQApiMiniProgramObject *)miniMessage; /** 具体分享消息 */ @property (nonatomic, retain) QQApiObject *message; @property (nonatomic, strong) QQApiObject *apiObject; /** 支持Ark的具体分享消息 */ @property (nonatomic, retain) ArkObject *arkMessage; @property (nonatomic, strong) ArkObject *arkObject; /** 支持小程序的具体分享消息 */ @property (nonatomic, retain) QQApiMiniProgramObject *miniMessage; @property (nonatomic, strong) QQApiMiniProgramObject *miniProgramObject; @end /** SendMessageToQQResp应答帮助类 */ @interface SendMessageToQQResp : QQBaseResp /** 其他扩展信息 */ @property (nonatomic, copy) NSDictionary *otherInfo; /** 创建一个SendMessageToQQResp应答实例 @@ -631,7 +677,9 @@ \param extendInfo 扩展信息 \return 新创建的SendMessageToQQResp应答实例 */ + (SendMessageToQQResp *)respWithResult:(NSString *)result errorDescription:(NSString *)errDesp extendInfo:(NSString*)extendInfo; + (SendMessageToQQResp *)respWithResult:(NSString *)result errorDescription:(NSString *)errDesp extendInfo:(NSString *)extendInfo; + (SendMessageToQQResp *) respWithResult:(NSString *)result errorDescription:(NSString *)errDesp extendInfo:(NSString *)extendInfo otherInfo:(NSDictionary *)otherInfo; @end @@ -648,7 +696,57 @@ + (ShowMessageFromQQReq *)reqWithContent:(QQApiObject *)message; /** 具体待展现消息 */ @property (nonatomic, retain) 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 frameworks/TencentOpenAPI.framework/Headers/TencentOAuth.h
@@ -7,7 +7,7 @@ /// #import <UIKit/UIKit.h> #import "sdkdef.h" #import <TencentOpenAPI/SDKDef.h> @protocol TencentSessionDelegate; @protocol TencentLoginDelegate; @@ -37,57 +37,58 @@ */ @interface TencentOAuth : NSObject { NSMutableDictionary* _apiRequests; NSString* _accessToken; NSDate* _expirationDate; NSMutableDictionary *_apiRequests; NSString *_accessToken; NSDate *_expirationDate; id<TencentSessionDelegate> _sessionDelegate; NSString* _localAppId; NSString* _openId; NSString* _redirectURI; NSArray* _permissions; NSString *_localAppId; NSString *_openId; NSString *_redirectURI; NSArray *_permissions; } /** Access Token凭证,用于后续访问各开放接口 */ @property(nonatomic, copy) NSString* accessToken; @property(nonatomic, copy) NSString *accessToken; /** Access Token的失效期 */ @property(nonatomic, copy) NSDate* expirationDate; @property(nonatomic, copy) NSDate *expirationDate; /** 已实现的开放接口的回调委托对象 */ @property(nonatomic, assign) id<TencentSessionDelegate> sessionDelegate; @property(nonatomic, weak) id<TencentSessionDelegate> sessionDelegate; /** 第三方应用在开发过程中设置的URLSchema,用于浏览器登录后后跳到第三方应用 */ @property(nonatomic, copy) NSString* localAppId; @property(nonatomic, copy) NSString *localAppId; /** 用户授权登录后对该用户的唯一标识 */ @property(nonatomic, copy) NSString* openId; @property(nonatomic, copy) NSString *openId; /** 用户登录成功过后的跳转页面地址 */ @property(nonatomic, copy) NSString* redirectURI; @property(nonatomic, copy) NSString *redirectURI; /** 第三方应用在互联开放平台申请的appID */ @property(nonatomic, retain) NSString* appId; @property(nonatomic, retain) NSString *appId; /** 第三方应用在互联开放平台注册的UniversalLink */ @property(nonatomic, retain) NSString* universalLink; @property(nonatomic, retain) NSString *universalLink; /** 主要是互娱的游戏设置uin */ @property(nonatomic, retain) NSString* uin; @property(nonatomic, retain) NSString *uin; /** 主要是互娱的游戏设置鉴定票据 */ @property(nonatomic, retain) NSString* skey; @property(nonatomic, retain) NSString *skey; /** 登陆透传的数据 */ @property(nonatomic, copy) NSDictionary* passData; @property(nonatomic, copy) NSDictionary *passData; /** 授权方式(Client Side Token或者Server Side Code) */ @property(nonatomic, assign) TencentAuthMode authMode; /** union id */ @property(nonatomic, retain) NSString* unionid; @property(nonatomic, retain) NSString *unionid; /** 第三方在授权登录/分享 时选择 QQ,还是TIM 。在授权前一定要指定其中一个类型*/ @property(nonatomic, assign) TencentAuthShareType authShareType; /** * 获取上次登录得到的token * @@ -122,14 +123,14 @@ * \return 返回sdk版本号 **/ + (NSString*)sdkVersion; + (NSString *)sdkVersion; /** * 用来获得当前sdk的小版本号 * \return 返回sdk小版本号 **/ + (NSString*)sdkSubVersion; + (NSString *)sdkSubVersion; /** * 用来获得当前sdk的是否精简版 @@ -192,6 +193,21 @@ delegate:(id<TencentSessionDelegate>)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:没安装 * frameworks/TencentOpenAPI.framework/Headers/TencentOpenApiUmbrellaHeader.h
@@ -9,12 +9,14 @@ #ifndef TencentOpenApiUmbrellaHeader_h #define TencentOpenApiUmbrellaHeader_h #import <Foundation/Foundation.h> FOUNDATION_EXPORT double StaticLibraryModuleVersionNumber; FOUNDATION_EXPORT const unsigned char StaticLibraryModuleVersionString[]; #imoort "QQApiInterface.h" #import "QQApiInterface.h" #import "QQApiInterfaceObject.h" #import "sdkdef.h" #import "SDKDef.h" #import "TencentOAuth.h" frameworks/TencentOpenAPI.framework/Headers/module.modulemap
@@ -1,9 +1,4 @@ framework module TencentOpenAPI { header "QQApiInterface.h" header "QQApiInterfaceObject.h" header "TencentOAuth.h" header "TencentOpenApiUmbrellaHeader.h" header "sdkdef.h" export * module TencentOpenApi{ umbrella header "TencentOpenApiUmbrellaHeader.h" export * } frameworks/TencentOpenAPI.framework/Headers/sdkdef.h
@@ -57,7 +57,7 @@ * * APIResponse用于封装所有请求的返回结果,包括错误码、错误信息、原始返回数据以及返回数据的json格式字典 */ @interface APIResponse : NSObject<NSCoding> { @interface APIResponse : NSObject<NSSecureCoding> { int _detailRetCode; int _retCode; int _seq; @@ -248,6 +248,9 @@ /** 设置头像图片过大 */ FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgUserHeadPicLarge; /** 用户未同意授权隐私协议 */ FOUNDATION_EXPORT NSString * const TCOpenSDKErrorMsgUserNotAgreedAuthorization; ///@} /** 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:2021/01/29 15:35 ver:2.2.0 //time:2022/03/15 15:35 ver:2.5.0 frameworks/WAQQImpl.framework/Info.plistBinary files differ
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/Info.plistBinary files differ
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/btn_cancel.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/btn_cancel_hover.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/refresh.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/refresh@2x.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_pengyouquan.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_pengyouquan@2x.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_qq.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_qq@2x.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_qzone.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_qzone@2x.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_safari.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_safari@2x.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_weixin.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/share_weixin@2x.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_back.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_back@2x.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_backtogame.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_backtogame@2x.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_backward.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_backward@2x.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_for.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_for@2x.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_forward.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_forward@2x.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_more.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_more@2x.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_recommand.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_recommand@2x.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_stop.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_stop@2x.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_toolbg.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/WebViewResources/webview_toolbg@2x.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/error.png
frameworks/WAQQImpl.framework/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> frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/qqicon.png
frameworks/WAQQImpl.framework/TencentOpenApi_IOS_Bundle.bundle/success.png
frameworks/WAQQImpl.framework/WAQQImplBinary files differ