diff --git a/.gitignore b/.gitignore index 75c71d3..ead445e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,62 @@ -/android/build +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directory +# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git +node_modules +npm-debug.log + +# OSX +# +.DS_Store + +examples/ + +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +project.xcworkspace + +# Android/IJ +# +react-native-dialogs.iml .idea +.gradle +local.properties +android/*.iml diff --git a/android/build.gradle b/android/build.gradle index 737f3b3..373fc7c 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -25,6 +25,6 @@ repositories { dependencies { compile 'com.facebook.react:react-native:+' - compile files('libs/open_sdk_r5793_lite.jar') + compile fileTree(dir: "libs", include: ["*.jar"]) } diff --git a/android/libs/open_sdk_r5793_lite.jar b/android/libs/open_sdk_r5793_lite.jar deleted file mode 100644 index 9d0430b..0000000 Binary files a/android/libs/open_sdk_r5793_lite.jar and /dev/null differ diff --git a/android/libs/open_sdk_r6137_lite.jar b/android/libs/open_sdk_r6137_lite.jar new file mode 100755 index 0000000..574c2bb Binary files /dev/null and b/android/libs/open_sdk_r6137_lite.jar differ diff --git a/android/src/main/java/cn/reactnative/modules/qq/QQModule.java b/android/src/main/java/cn/reactnative/modules/qq/QQModule.java index 5091e48..7e14593 100644 --- a/android/src/main/java/cn/reactnative/modules/qq/QQModule.java +++ b/android/src/main/java/cn/reactnative/modules/qq/QQModule.java @@ -164,6 +164,8 @@ private void _shareToQQ(ReadableMap data, int scene) { if (data.hasKey(RCTQQShareImageUrl)){ bundle.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, data.getString(RCTQQShareImageUrl)); } + + if (data.hasKey("appName")){ bundle.putString(QQShare.SHARE_TO_QQ_APP_NAME, data.getString("appName")); } @@ -177,7 +179,10 @@ private void _shareToQQ(ReadableMap data, int scene) { bundle.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT); } else if (type.equals(RCTQQShareTypeImage)){ bundle.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_IMAGE); - bundle.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL, data.getString(RCTQQShareImageUrl)); + if (data.hasKey(RCTQQShareImageUrl)) { + bundle.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL, data.getString(RCTQQShareImageUrl)); + bundle.remove(QQShare.SHARE_TO_QQ_IMAGE_URL); + } } else if (type.equals(RCTQQShareTypeAudio)) { bundle.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_AUDIO); if (data.hasKey("flashUrl")){ diff --git a/index.js b/index.js index c3df6b9..df69d24 100644 --- a/index.js +++ b/index.js @@ -34,6 +34,7 @@ function waitForResponse(type) { } savedCallback = result => { if (result.type !== type) { + reject(new Error('undefined type')); return; } savedCallback = undefined; diff --git a/ios/RCTQQAPI.debug.xcconfig b/ios/RCTQQAPI.debug.xcconfig deleted file mode 100644 index a50ebc5..0000000 --- a/ios/RCTQQAPI.debug.xcconfig +++ /dev/null @@ -1,15 +0,0 @@ -// -// RCTQQAPI.debug.xcconfig -// RCTQQAPI -// -// Created by LvBingru on 12/18/15. -// Copyright © 2015 erica. All rights reserved. -// - -FRAMEWORK_SEARCH_PATHS = $(inherited) "${QQAPI_ROOT}/RCTQQAPI" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) -HEADER_SEARCH_PATHS = $(inherited) "${QQAPI_ROOT}/RCTQQAPI" -LIBRARY_SEARCH_PATHS = $(inherited) -OTHER_CFLAGS = $(inherited) -isystem "${QQAPI_ROOT}/RCTQQAPI/" -OTHER_LDFLAGS = $(inherited) -ObjC -weak_library /usr/lib/libz.dylib -l"c++" -l"c++abi" -l"iconv" -l"sqlite3" -l"stdc++" -l"z" -framework "CoreGraphics" -framework "CoreTelephony" -framework "CoreText" -framework "CoreVideo" -framework "Foundation" -framework "Security" -framework "SystemConfiguration" -framework "TencentOpenAPI" -QQAPI_ROOT = ${SRCROOT} \ No newline at end of file diff --git a/ios/RCTQQAPI.release.xcconfig b/ios/RCTQQAPI.release.xcconfig deleted file mode 100644 index effdbfb..0000000 --- a/ios/RCTQQAPI.release.xcconfig +++ /dev/null @@ -1,15 +0,0 @@ -// -// RCTQQAPI.release.xcconfig -// RCTQQAPI -// -// Created by LvBingru on 12/18/15. -// Copyright © 2015 erica. All rights reserved. -// - -FRAMEWORK_SEARCH_PATHS = $(inherited) "${QQAPI_ROOT}/RCTQQAPI" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) -HEADER_SEARCH_PATHS = $(inherited) "${QQAPI_ROOT}/RCTQQAPI" -LIBRARY_SEARCH_PATHS = $(inherited) -OTHER_CFLAGS = $(inherited) -isystem "${QQAPI_ROOT}/RCTQQAPI/" -OTHER_LDFLAGS = $(inherited) -ObjC -weak_library /usr/lib/libz.dylib -l"c++" -l"c++abi" -l"iconv" -l"sqlite3" -l"stdc++" -l"z" -framework "CoreGraphics" -framework "CoreTelephony" -framework "CoreText" -framework "CoreVideo" -framework "Foundation" -framework "Security" -framework "SystemConfiguration" -framework "TencentOpenAPI" -QQAPI_ROOT = ${SRCROOT} \ No newline at end of file diff --git a/ios/RCTQQAPI.xcodeproj/project.pbxproj b/ios/RCTQQAPI.xcodeproj/project.pbxproj index e7ae159..482dfee 100644 --- a/ios/RCTQQAPI.xcodeproj/project.pbxproj +++ b/ios/RCTQQAPI.xcodeproj/project.pbxproj @@ -29,8 +29,6 @@ 9139321F1C232D310085E3BA /* RCTQQAPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTQQAPI.h; sourceTree = ""; }; 913932211C232D310085E3BA /* RCTQQAPI.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTQQAPI.m; sourceTree = ""; }; 913932401C232ED60085E3BA /* TencentOpenAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = TencentOpenAPI.framework; sourceTree = ""; }; - 9139325C1C233E370085E3BA /* RCTQQAPI.debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = RCTQQAPI.debug.xcconfig; sourceTree = ""; }; - 9139325D1C233E480085E3BA /* RCTQQAPI.release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = RCTQQAPI.release.xcconfig; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -47,8 +45,6 @@ 913932131C232D310085E3BA = { isa = PBXGroup; children = ( - 9139325C1C233E370085E3BA /* RCTQQAPI.debug.xcconfig */, - 9139325D1C233E480085E3BA /* RCTQQAPI.release.xcconfig */, 9139321E1C232D310085E3BA /* RCTQQAPI */, 9139321D1C232D310085E3BA /* Products */, ); @@ -111,6 +107,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, ); mainGroup = 913932131C232D310085E3BA; @@ -171,7 +168,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -208,7 +205,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -217,7 +214,6 @@ }; 913932261C232D310085E3BA /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9139325C1C233E370085E3BA /* RCTQQAPI.debug.xcconfig */; buildSettings = { FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -239,7 +235,6 @@ }; 913932271C232D310085E3BA /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9139325D1C233E480085E3BA /* RCTQQAPI.release.xcconfig */; buildSettings = { FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", diff --git a/ios/RCTQQAPI/RCTQQAPI.h b/ios/RCTQQAPI/RCTQQAPI.h index 3435c78..3391b3c 100644 --- a/ios/RCTQQAPI/RCTQQAPI.h +++ b/ios/RCTQQAPI/RCTQQAPI.h @@ -21,6 +21,6 @@ #define RCTQQShareWebpageUrl @"webpageUrl" #define RCTQQShareImageUrl @"imageUrl" -@interface RCTQQAPI : RCTEventEmitter +@interface RCTQQAPI : RCTEventEmitter @end diff --git a/ios/RCTQQAPI/RCTQQAPI.m b/ios/RCTQQAPI/RCTQQAPI.m index 27a3f4c..2212a0b 100644 --- a/ios/RCTQQAPI/RCTQQAPI.m +++ b/ios/RCTQQAPI/RCTQQAPI.m @@ -8,7 +8,6 @@ #import "RCTQQAPI.h" #import -#import #import #import @@ -29,7 +28,7 @@ @interface RCTQQAPI() { @implementation RCTQQAPI -@synthesize bridge = _bridge; +//@synthesize bridge = _bridge; RCT_EXPORT_MODULE(); @@ -124,13 +123,13 @@ - (void)handleOpenURL:(NSNotification *)note - (void)_shareToQQWithData:(NSDictionary *)aData scene:(int)aScene resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject{ NSString *imageUrl = aData[RCTQQShareImageUrl]; - if (imageUrl.length && _bridge.imageLoader) { + if (imageUrl.length && self.bridge.imageLoader) { CGSize size = CGSizeZero; if (![aData[RCTQQShareType] isEqualToString:RCTQQShareTypeImage]) { CGFloat thumbImageSize = 80; size = CGSizeMake(thumbImageSize,thumbImageSize); } - [_bridge.imageLoader loadImageWithURLRequest:[RCTConvert NSURLRequest:imageUrl] callback:^(NSError *error, UIImage *image) { + [self.bridge.imageLoader loadImageWithURLRequest:[RCTConvert NSURLRequest:imageUrl] callback:^(NSError *error, UIImage *image) { dispatch_async(dispatch_get_main_queue(), ^{ [self _shareToQQWithData:aData image:image scene:aScene resolve:resolve reject:reject]; }); diff --git a/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/QQApiInterface.h b/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/QQApiInterface.h index 7354c81..f1d236e 100644 --- a/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/QQApiInterface.h +++ b/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/QQApiInterface.h @@ -9,6 +9,8 @@ #import #import "QQApiInterfaceObject.h" +typedef void (^sendResultBlock)(NSDictionary *result); + /** \brief 处理来至QQ的请求及响应的回调协议 */ @@ -51,6 +53,7 @@ */ + (QQApiSendResultCode)sendReq:(QQBaseReq *)req; + /** 向手Q QZone结合版发起分享请求 \note H5分享只支持单张网络图片的传递 @@ -60,37 +63,39 @@ + (QQApiSendResultCode)SendReqToQZone:(QQBaseReq *)req; /** - 向手Q 群部落发起分享请求 - \note H5分享只支持单张网络图片的传递 + 向手Q发起设置QQ头像 \param req 分享内容的请求 \return 请求发送结果码 */ -+ (QQApiSendResultCode)SendReqToQQGroupTribe:(QQBaseReq *)req; ++ (QQApiSendResultCode)sendMessageToQQAvatarWithReq:(QQBaseReq*)req; /** - 向手Q发送应答消息 - \param resp 应答消息 - \return 应答发送结果码 + 向手Q发起组图分享到表情收藏 + \param req 分享内容的请求 + \return 请求发送结果码 */ -+ (QQApiSendResultCode)sendResp:(QQBaseResp *)resp; ++ (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号码是否在线 - */ -+ (void)getQQUinOnlineStatues:(NSArray *)QQUins delegate:(id)delegate; - /** 检测QQ是否支持API调用 \return 如果当前安装QQ版本支持API调用则返回YES,否则返回NO @@ -101,7 +106,19 @@ 检测TIM是否支持API调用 \return 如果当前安装TIM版本支持API调用则返回YES,否则返回NO */ -+ (BOOL)isTIMSupportApi; ++ (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 @@ -126,9 +143,8 @@ /** 获取TIM下载地址 - 如果App通过QQApiInterface#isTIMInstalledQQApiInterface#isTIMSupportApi检测发现TIM没安装或当前版本TIM不支持API调用,可引导用户通过打开此链接下载最新版TIM。 + 如果App通过QQApiInterface#isTIMInstalled检测发现TIM没安装或当前版本TIM不支持API调用,可引导用户通过打开此链接下载最新版TIM。 \return iPhoneTIM下载地址 */ + (NSString *)getTIMInstallUrl; - @end diff --git a/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h b/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h index 318b799..8aefe1e 100644 --- a/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h +++ b/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/QQApiInterfaceObject.h @@ -11,49 +11,59 @@ #import - -typedef enum -{ +typedef NS_ENUM(NSInteger,QQApiSendResultCode) { EQQAPISENDSUCESS = 0, - EQQAPIQQNOTINSTALLED = 1, - EQQAPIQQNOTSUPPORTAPI = 2, + EQQAPIQQNOTINSTALLED = 1, //QQ未安装 + EQQAPIQQNOTSUPPORTAPI = 2, // QQ api不支持 EQQAPIMESSAGETYPEINVALID = 3, EQQAPIMESSAGECONTENTNULL = 4, EQQAPIMESSAGECONTENTINVALID = 5, EQQAPIAPPNOTREGISTED = 6, EQQAPIAPPSHAREASYNC = 7, - EQQAPIQQNOTSUPPORTAPI_WITH_ERRORSHOW = 8, - EQQAPISENDFAILD = -1, + 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不支持 - //qzone分享不支持text类型分享 - EQQAPIQZONENOTSUPPORTTEXT = 10000, - //qzone分享不支持image类型分享 - EQQAPIQZONENOTSUPPORTIMAGE = 10001, - //当前QQ版本太低,需要更新至新版本才可以支持 - EQQAPIVERSIONNEEDUPDATE = 10002, - ETIMAPIVERSIONNEEDUPDATE = 10004, -} QQApiSendResultCode; + 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版本太低,需要更新至新版本才可以支持 +}; #pragma mark - QQApiObject(分享对象类型) // QQApiObject control flags -enum -{ +typedef NS_ENUM(NSUInteger,kQQAPICtrlFlag) { kQQAPICtrlFlagQZoneShareOnStart = 0x01, kQQAPICtrlFlagQZoneShareForbid = 0x02, kQQAPICtrlFlagQQShare = 0x04, kQQAPICtrlFlagQQShareFavorites = 0x08, //收藏 kQQAPICtrlFlagQQShareDataline = 0x10, //数据线 + kQQAPICtrlFlagQQShareEnableArk = 0x20, //支持ARK + kQQAPICtrlFlagQQShareEnableMiniProgram = 0x40, //支持小程序 }; // 分享到QQ或TIM -typedef enum ShareDestType { - ShareDestTypeQQ, +typedef NS_ENUM(NSUInteger, ShareDestType) { + ShareDestTypeQQ = 0, ShareDestTypeTIM, -}ShareDestType; +}; + +//小程序的类型 +typedef NS_ENUM(NSUInteger, MiniProgramType) { + MiniProgramType_Test=1, // 测试版 + MiniProgramType_Online=3, // 正式版,默认 + MiniProgramType_Preview=4, // 预览版 +}; // QQApiObject /** \brief 所有在QQ及插件间发送的数据对象的根类。 @@ -63,7 +73,32 @@ __attribute__((visibility("default"))) @interface QQApiObject : NSObject @property(nonatomic,retain) NSString* description; ///<简要描述,最长512个字符 @property (nonatomic, assign) uint64_t cflag; -@property (nonatomic, assign) ShareDestType shareDestType; //分享到QQ或TIM,必须指定 +/* + * 分享到QQ/TIM + * SDK根据是否安装对应客户端进行判断,判断顺序:QQ > TIM + * 默认分享到QQ,如果QQ未安装检测TIM是否安装 + */ +@property (nonatomic, assign) ShareDestType shareDestType; +@end + +// ArkObject +/** \brief 支持Ark的根类。 + */ +__attribute__((visibility("default"))) @interface ArkObject : NSObject +@property(nonatomic,retain) NSString* arkData; ///< 显示Ark所需的数据,json串,长度暂不限制 +@property(nonatomic,assign) QQApiObject* qqApiObject; ///<原有老版本的QQApiObject + +- (id)initWithData:(NSString *)arkData qqApiObject:(QQApiObject*)qqApiObject; ++ (id)objectWithData:(NSString *)arkData qqApiObject:(QQApiObject*)qqApiObject; +@end + +#pragma mark QQ小程序 +__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) @end // QQApiResultObject @@ -96,12 +131,12 @@ __attribute__((visibility("default"))) @interface QQApiResultObject : QQApiObjec @end // QQApiURLObject -typedef enum QQApiURLTargetType{ +typedef NS_ENUM(NSUInteger, QQApiURLTargetType) { QQApiURLTargetTypeNotSpecified = 0x00, QQApiURLTargetTypeAudio = 0x01, QQApiURLTargetTypeVideo = 0x02, QQApiURLTargetTypeNews = 0x03 -}QQApiURLTargetType; +}; /** @brief URL对象类型。 @@ -188,6 +223,55 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject @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, retain) NSString *assetURL; +@end + +// QQApiImageArrayForFaceCollectionObject +/** @brief 图片数组对象 + 用于分享图片组到表情收藏,是一个指定为图片类型的QQApiObject + */ +@interface QQApiImageArrayForFaceCollectionObject : QQApiObject + +@property(nonatomic,retain) NSArray* imageDataArray;///图片数组 + +/** + 初始化方法 + @param imageDataArray 图片数组 + */ +- (id)initWithImageArrayData:(NSArray*)imageDataArray; +/** + helper方法获取一个autorelease的QQApiObject对象 + @param imageDataArray 发送的多张图片队列 + @return + 一个自动释放的QQApiObject实例 + */ ++ (id)objectWithimageDataArray:(NSArray *)imageDataArray; + +@end + // QQApiImageArrayForQZoneObject /** @brief 图片对象 用于分享图片到空间,走写说说路径,是一个指定为图片类型的,当图片数组为空时,默认走文本写说说QQApiObject @@ -219,19 +303,25 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject // QQApiVideoForQZoneObject /** @brief 视频对象 - 用于分享视频到空间,走写说说路径QQApiObject - assetURL可传ALAsset的ALAssetPropertyAssetURL,或者PHAsset的localIdentifier - @param extMap 扩展字段 + 用于分享视频到空间,走写说说路径QQApiObject,assetURL和videoData两个参数必须设置至少一个参数,如果assetURL设置了忽略videoData参数 + @param assetURL可传ALAsset的ALAssetPropertyAssetURL,或者PHAsset的localIdentifier + @param extMap 扩展字段 + @param videoData 视频数据,大小不超过50M */ @interface QQApiVideoForQZoneObject : QQApiObject @property(nonatomic, retain) NSString *assetURL; @property(nonatomic,retain) NSDictionary* extMap; // 扩展字段 +@property(nonatomic,retain) 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 @@ -261,23 +351,6 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject @end -// QQApiGroupTribeImageObject -/** @brief 群部落图片对象 - 用于分享图片内容的对象,是一个指定为图片类型的 可以指定一些其他的附加数据QQApiExtendObject - */ -@interface QQApiGroupTribeImageObject : QQApiImageObject -{ - NSString *_bid; - NSString *_bname; -} -// 群部落id -@property (nonatomic, retain)NSString* bid; - -// 群部落名称 -@property (nonatomic, retain)NSString* bname; - -@end - //QQApiFileObject /** @brief 本地文件对象(暂只支持分享到手机QQ数据线功能) @@ -380,17 +453,6 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject @end -// QQApiPayObject -/** \brief 支付对象 - */ -@interface QQApiPayObject : QQApiObject -@property(nonatomic,retain)NSString* OrderNo; ///<支付订单号,必填 -@property(nonatomic,retain)NSString* AppInfo; ///<支付来源信息,必填 - --(id)initWithOrderNo:(NSString*)OrderNo AppInfo:(NSString*)AppInfo; ///<初始化方法 -+(id)objectWithOrderNo:(NSString*)OrderNo AppInfo:(NSString*)AppInfo;///<工厂方法,获取一个QQApiPayObject对象. -@end - // QQApiCommonContentObject; /** @brief 通用模板类型对象 用于分享一个固定显示模板的图文混排对象 @@ -424,83 +486,24 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject @property(nonatomic,retain) NSURL* target;///<广告目标链接 @end -// QQApiWPAObject -/** \brief 发起WPA对象 - */ -@interface QQApiWPAObject : QQApiObject -@property(nonatomic,retain)NSString* uin; ///<想要对话的QQ号 - --(id)initWithUin:(NSString*)uin; ///<初始化方法 -+(id)objectWithUin:(NSString*)uin;///<工厂方法,获取一个QQApiWPAObject对象. -@end - -// QQApiAddFriendObject -/** \brief 添加好友 - */ -@interface QQApiAddFriendObject : QQApiObject -@property (nonatomic,retain)NSString* openID; -@property (nonatomic,retain)NSString* subID; -@property (nonatomic,retain)NSString* remark; - --(id)initWithOpenID:(NSString*)openID; ///<初始化方法 -+(id)objecWithOpenID:(NSString*)openID; ///<工厂方法,获取一个QQApiAddFriendObject对象. - -@end - -// QQApiGameConsortiumBindingGroupObject -/** \brief 游戏公会绑定群 - */ -@interface QQApiGameConsortiumBindingGroupObject : QQApiObject -@property (nonatomic,retain)NSString* signature; -@property (nonatomic,retain)NSString* unionid; -@property (nonatomic,retain)NSString* zoneID; -@property (nonatomic,retain)NSString* appDisplayName; - --(id)initWithGameConsortium:(NSString*)signature unionid:(NSString*)unionid zoneID:(NSString*)zoneID appDisplayName:(NSString*)appDisplayName; ///<初始化方法 -+(id)objectWithGameConsortium:(NSString*)signature unionid:(NSString*)unionid zoneID:(NSString*)zoneID appDisplayName:(NSString*)appDisplayName; ///<工厂方法,获取一个QQApiAddFriendObject对象. - -@end - -// QQApiGameConsortiumBindingGroupObject -/** \brief 加入群 - */ -@interface QQApiJoinGroupObject : QQApiObject -@property (nonatomic,retain)NSString* groupUin; -@property (nonatomic,retain)NSString* groupKey; - -- (id)initWithGroupInfo:(NSString*)groupUin key:(NSString*)groupKey; ///<初始化方法 -+ (id)objectWithGroupInfo:(NSString*)groupUin key:(NSString*)groupKey; ///<同时提供群号和群KEY 工厂方法,获取一个QQApiAddFriendObject对象. -+ (id)objectWithGroupKey:(NSString*)groupKey; ///<只需要群的KEY 工厂方法,获取一个QQApiAddFriendObject对象. - -@end - -// QQApiGroupChatObject -/** \brief 发起群会话对象 - */ -@interface QQApiGroupChatObject : QQApiObject -@property(nonatomic,retain)NSString* groupID; ///<想要对话的群号 - --(id)initWithGroup:(NSString*)groupID; ///<初始化方法 -+(id)objectWithGroup:(NSString*)groupID;///<工厂方法,获取一个QQApiGroupChatObject对象. -@end #pragma mark - QQApi请求消息类型 /** QQApi请求消息类型 */ -enum QQApiInterfaceReqType -{ +typedef NS_ENUM(NSUInteger, QQApiInterfaceReqType) { EGETMESSAGEFROMQQREQTYPE = 0, ///< 手Q -> 第三方应用,请求第三方应用向手Q发送消息 ESENDMESSAGETOQQREQTYPE = 1, ///< 第三方应用 -> 手Q,第三方应用向手Q分享消息 - ESHOWMESSAGEFROMQQREQTYPE = 2 ///< 手Q -> 第三方应用,请求第三方应用展现消息中的数据 + ESHOWMESSAGEFROMQQREQTYPE = 2, ///< 手Q -> 第三方应用,请求第三方应用展现消息中的数据 + ESENDMESSAGEARKTOQQREQTYPE = 3, ///< 第三方应用 -> 手Q,第三方应用向手Q分享Ark消息 + ESENDMESSAGE_MINI_TOQQREQTYPE = 4 ///< 第三方应用 -> 手Q,第三方应用向手Q分享小程序消息 }; /** QQApi应答消息类型 */ -enum QQApiInterfaceRespType -{ +typedef NS_ENUM(NSUInteger, QQApiInterfaceRespType) { ESHOWMESSAGEFROMQQRESPTYPE = 0, ///< 第三方应用 -> 手Q,第三方应用应答消息展现结果 EGETMESSAGEFROMQQRESPTYPE = 1, ///< 第三方应用 -> 手Q,第三方应用回应发往手Q的消息 ESENDMESSAGETOQQRESPTYPE = 2 ///< 手Q -> 第三方应用,手Q应答处理分享消息的结果 @@ -547,26 +550,6 @@ enum QQApiInterfaceRespType @end -/** - GetMessageFromQQResp应答帮助类 - */ -@interface GetMessageFromQQResp : QQBaseResp - -/** - 创建一个GetMessageFromQQResp应答实例 - \param message 具体分享消息实例 - \return 新创建的GetMessageFromQQResp应答实例 - */ -+ (GetMessageFromQQResp *)respWithContent:(QQApiObject *)message; - -/** 具体分享消息 */ -@property (nonatomic, retain) QQApiObject *message; - -@end - -/** - SendMessageToQQReq请求帮助类 - */ @interface SendMessageToQQReq : QQBaseReq /** @@ -576,9 +559,25 @@ enum QQApiInterfaceRespType */ + (SendMessageToQQReq *)reqWithContent:(QQApiObject *)message; +/** + 创建一个支持Ark的SendMessageToQQReq请求实例 + \param message 具体分享消息实例 + \return 新创建的SendMessageToQQReq请求实例 + */ ++ (SendMessageToQQReq *)reqWithArkContent:(ArkObject *)message; +/** + * 创建一个支持小程序的消息请求实例 + * @param miniMessage 小程序实例对象 + * @return 消息请求实例 + */ ++(SendMessageToQQReq*) reqWithMiniContent:(QQApiMiniProgramObject *)miniMessage; /** 具体分享消息 */ @property (nonatomic, retain) QQApiObject *message; +/** 支持Ark的具体分享消息 */ +@property (nonatomic, retain) ArkObject *arkMessage; +/** 支持小程序的具体分享消息 */ +@property (nonatomic, retain) QQApiMiniProgramObject *miniMessage; @end /** @@ -614,19 +613,5 @@ enum QQApiInterfaceRespType @end -/** - ShowMessageFromQQResp应答帮助类 - */ -@interface ShowMessageFromQQResp : QQBaseResp - -/** - 创建一个ShowMessageFromQQResp应答实例 - \param result 展现消息结果 - \param errDesp 具体错误描述信息 - \return 新创建的ShowMessageFromQQResp应答实例 - */ -+ (ShowMessageFromQQResp *)respWithResult:(NSString *)result errorDescription:(NSString *)errDesp; - -@end #endif diff --git a/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/TencentOAuth.h b/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/TencentOAuth.h index 8abde1b..6777b83 100644 --- a/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/TencentOAuth.h +++ b/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/TencentOAuth.h @@ -8,7 +8,6 @@ #import #import "sdkdef.h" -#import "TencentOAuthObject.h" @protocol TencentSessionDelegate; @protocol TencentLoginDelegate; @@ -18,18 +17,16 @@ @class TencentApiReq; @class TencentApiResp; -typedef enum -{ +typedef NS_ENUM(NSUInteger, TencentAuthorizeState) { kTencentNotAuthorizeState, kTencentSSOAuthorizeState, kTencentWebviewAuthorzieState, -} TencentAuthorizeState; +}; -typedef enum -{ +typedef NS_ENUM(NSUInteger, TencentAuthMode) { kAuthModeClientSideToken, kAuthModeServerSideCode, -} TencentAuthMode; +}; #pragma mark - TencentOAuth(授权登录及相关开放接口调用) @@ -89,6 +86,36 @@ typedef enum /** 第三方在授权登录/分享 时选择 QQ,还是TIM 。在授权前一定要指定其中一个类型*/ @property(nonatomic, assign) TencentAuthShareType authShareType; +/** + * 获取上次登录得到的token + * + **/ +- (NSString *)getCachedToken; + +/** + * 获取上次登录得到的openid + * + **/ +- (NSString *)getCachedOpenID; + +/** + * 获取上次登录的token过期日期 + * + **/ +- (NSDate *)getCachedExpirationDate; + +/** + * 上次登录的token是否过期 + * + **/ +- (BOOL)isCachedTokenValid; + +/** + * 删除上次登录登录的token信息 + * + **/ +- (BOOL)deleteCachedToken; + /** * 用来获得当前sdk的版本号 * \return 返回sdk版本号 @@ -124,14 +151,14 @@ typedef enum * 用来获得当前手机qq的版本号 * \return 返回手机qq版本号 **/ -+ (QQVersion)iphoneQQVersion; ++ (int)iphoneQQVersion __attribute__((deprecated("已过期, 建议删除调用"))); /** * 用来获得当前手机TIM的版本号 * \return 返回手机qq版本号 **/ -+ (QQVersion)iphoneTIMVersion; ++ (int)iphoneTIMVersion __attribute__((deprecated("已过期, 建议删除调用"))); /** * 初始化TencentOAuth对象 @@ -146,12 +173,20 @@ typedef enum /** * 判断用户手机上是否安装手机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; @@ -159,25 +194,13 @@ typedef enum * 判断用户手机上的手机QQ是否支持SSO登录 * \return YES:支持 NO:不支持 */ -+ (BOOL)iphoneQQSupportSSOLogin; ++ (BOOL)iphoneQQSupportSSOLogin __attribute__((deprecated("QQ版本均支持SSO登录。该接口已过期, 建议删除调用"))); /** * 判断用户手机上的手机TIM是否支持SSO登录 * \return YES:支持 NO:不支持 */ -+ (BOOL)iphoneTIMSupportSSOLogin; - -/** - * 判断用户手机上是否安装手机QZone - * \return YES:安装 NO:没安装 - */ -+ (BOOL)iphoneQZoneInstalled; - -/** - * 判断用户手机上的手机QZone是否支持SSO登录 - * \return YES:支持 NO:不支持 - */ -+ (BOOL)iphoneQZoneSupportSSOLogin; ++ (BOOL)iphoneTIMSupportSSOLogin __attribute__((deprecated("TIM版本均支持SSO登录。该接口已过期, 建议删除调用"))); /** * 登录授权 @@ -204,6 +227,13 @@ typedef enum localAppId:(NSString *)localAppId inSafari:(BOOL)bInSafari; +/** + * 登录授权 + * + * \param permissions 授权信息列 + */ +- (BOOL)authorizeWithQRlogin:(NSArray *)permissions; + /** * 增量授权,因用户没有授予相应接口调用的权限,需要用户确认是否授权 * \param permissions 需增量授权的信息列表 @@ -238,6 +268,20 @@ typedef enum */ + (BOOL)CanHandleOpenURL:(NSURL *)url; +/** + * (静态方法)处理应用的UniversalLink拉起协议 + * \param url 处理被其他应用呼起时的逻辑 + * \return 处理结果,YES表示成功,NO表示失败 + */ ++ (BOOL)HandleUniversalLink:(NSURL *)url; + +/** + * (静态方法)sdk是否可以处理应用的Universallink拉起协议 + * \param url 处理被其他应用呼起时的逻辑 + * \return 处理结果,YES表示可以 NO表示不行 + */ ++ (BOOL)CanHandleUniversalLink:(NSURL *)url; + /** * (静态方法)获取TencentOAuth调用的上一次错误信息 */ @@ -267,14 +311,6 @@ typedef enum */ - (BOOL)getUserInfo; -/** - * SDK内置webview实现定向分享时,第三方应用可以根据应用是否在白名单里来开启该配置开关,默认为关闭; - * 在白名单里的应用调用该接口后,即打开sdk内置webview的二级白名单开关(相对与sdk后台的白名单), - * 那么在sdk后台白名单校验请求失败的情况下,会继续先尝试采用内置webview进行分享。 - */ -- (void)openSDKWebViewQQShareEnable; - - /** * 退出指定API调用 * \param userData 用户调用某条API的时候传入的保留参数 @@ -341,6 +377,11 @@ typedef enum */ - (void)didGetUnionID; +/** + * 强制网页登录,包括账号密码登录和二维码登录 + * return YES时,就算本地有手Q也会打开web界面 + */ +- (BOOL)forceWebLogin; @end #pragma mark - TencentSessionDelegate(开放接口回调协议) @@ -399,7 +440,6 @@ typedef enum - (void)getUserInfoResponse:(APIResponse*) response; - /** * 社交API统一回调接口 * \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse @@ -424,7 +464,6 @@ typedef enum * \param viewController 需要关闭的viewController */ - (void)tencentOAuth:(TencentOAuth *)tencentOAuth doCloseViewController:(UIViewController *)viewController; - @end #pragma mark - TencentWebViewDelegate(H5登录webview旋转方向回调) diff --git a/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/TencentOAuthObject.h b/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/TencentOAuthObject.h deleted file mode 100644 index 2fc3a65..0000000 --- a/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/TencentOAuthObject.h +++ /dev/null @@ -1,452 +0,0 @@ -/// -/// \file TencentOAuthObject.h -/// 对开放接口的调用提供参数字典封装的辅助类 -/// -/// Created by Tencent on 12-12-28. -/// Copyright (c) 2012年 Tencent. All rights reserved. -/// - -#import -#import -#import "sdkdef.h" - - -#pragma mark - -#pragma mark TCAddTopicDic - -/** - * \brief 发表说说的参数字典定义 - * - * 可以直接填写相应参数后将对象当作参数传入API中 - */ -@interface TCAddTopicDic : TCAPIRequest - -/** - * 返回一个对象用来进行API参数的填充 - * \note 不用释放,返回的对象是自动释放的 - */ -+ (TCAddTopicDic *) dictionary; - -/** - * 发布心情时引用的信息的类型。 - * \note 1表示图片; 2表示网页; 3表示视频 - */ -@property (nonatomic, retain) TCOptionalStr paramRichtype; - -/** - * 发布心情时引用的信息的值。有richtype时必须有richval - * - * \note - * -# 当richtype为图片(即richtype为1,应用场景为发布心情时引用某张图片)时,\n - * richval需要传入该图片的相关参数。引用的图片来源分为两种:一种为网站图片,\n - * 一种为QQ空间相册中的某张图片。 - * - 当引用的图片来自网站,richval包含下列参数的值:\n - * | 参数名称 | 是否必须 | 类型 | 描述 | - * | ------ | ------- | ------ | ----------------- | - * | url | 必须 | string | 网站图片的URL | - * | height | 必须 | string | 图片高度,单位: px | - * | width | 必须 | string | 图片宽度,单位: px | - * \n - * 输入时每个值中间用“&”分隔,如下所示:\n - * “url=http://qq.com/logo.png&width=25&height=21” - * - * - 当引用的图片来自QQ空间相册,richval包含下列参数的值。\n - * 这些值都需要通过调用相册OpenAPI来获得。参数意义如下:\n - * | 参数名称 | 是否必须 | 类型 | 描述 | - * | --------- | ------ | ------ | ---------------------------------- | - * | albumid | 必须 | string | 图片所属空间相册的ID | - * | pictureid | 必须 | string | 图片ID | - * | sloc | 必须 | string | 小图ID | - * | pictype | | string | 图片类型(JPG = 1;GIF = 2;PNG = 3) | - * | picheight | | string | 图片高度,单位: px | - * | picwidth | | string | 图片宽度,单位: px | - * 输入时每个值中间用逗号分隔,如下所示 :\n - * “albumid,pictureid,sloc,pictype,picheight,picwidth” - * -# 当richtype为网页(即richtype为2,应用场景为针对某网页发表评论)时,\n - * richval需要传入该网页的URL,发表为feeds时,后台会自动将该URL转换为短URL。 - * -# 当richtype为视频(即richtype为3,应用场景为针对某视频发表评论)时,\n - * richval需要传入该视频的URL,发表为feeds时,后台会对该URL进行解析,\n - * 在feeds上显示播放器,视频源及缩略图。 - */ -@property (nonatomic, retain) TCOptionalStr paramRichval; - -/** - * 发布的心情的内容。 - */ -@property (nonatomic, retain) TCRequiredStr paramCon; - -/** - * 地址文。例如:广东省深圳市南山区高新科技园腾讯大厦。lbs_nm,lbs_x,lbs_y通常一起使用,来明确标识一个地址。 - */ -@property (nonatomic, retain) TCOptionalStr paramLbs_nm; - -/** - * 经度。-180.0到+180.0,+表示东经。lbs_nm,lbs_x,lbs_y通常一起使用,来明确标识一个地址。 - */ -@property (nonatomic, retain) TCOptionalStr paramLbs_x; - -/** - * 纬度。-90.0到+90.0,+表示北纬。lbs_nm,lbs_x,lbs_y通常一起使用,来明确标识一个地址。 - */ -@property (nonatomic, retain) TCOptionalStr paramLbs_y; - -/** - * 第三方应用的平台类型。 - * \note 1表示QQ空间; 2表示腾讯朋友; 3表示腾讯微博平台; 4表示腾讯Q+平台。 - */ -@property (nonatomic, retain) TCOptionalStr paramThirdSource; -@end - - -#pragma mark - -#pragma mark TCAddOneBlogDic -/** - * \brief 发表日志的参数字典定义 - * - * 可以直接填写相应参数后将对象当作参数传入API中 - */ -@interface TCAddOneBlogDic : TCAPIRequest - -/** - * 返回一个对象用来进行API参数的填充 - * \note 不用释放,返回的对象是自动释放的 - */ -+ (TCAddOneBlogDic *) dictionary; - -/** - * 日志标题(纯文本,最大长度128个字节,utf-8编码)。 - */ -@property (nonatomic, retain) TCRequiredStr paramTitle; - -/** - * content 文章内容(html数据,最大长度100*1024个字节,utf-8编码) - */ -@property (nonatomic, retain) TCRequiredStr paramContent; -@end - -#pragma mark - -#pragma mark TCAddAlbumDic -/** - * \brief 创建空间相册的参数字典定义 - * - * 可以直接填写相应参数后将对象当作参数传入API中 - */ -@interface TCAddAlbumDic : TCAPIRequest - -/** - * 返回一个对象用来进行API参数的填充 - * - * \note 不用释放,返回的对象是自动释放的 - */ -+ (TCAddAlbumDic *) dictionary; - -/** - * albumname 必须 string 相册名 不能超过30个字符。 - */ -@property (nonatomic, retain) TCRequiredStr paramAlbumname; - - -/** - * albumdesc string 相册描述,不能超过200个字符。 - */ -@property (nonatomic, retain) TCOptionalStr paramAlbumdesc; - -/** - * priv string 相册权限 - * - * \note 其取值含义为: 1=公开;3=只主人可见; 4=QQ好友可见; 5=问答加密。\n - * 不传则相册默认为公开权限。\n - * 如果priv取值为5,即相册是问答加密的,则必须包含问题和答案两个参数:\n - * - question: 问题,不能超过30个字符。 - * - answer: 答案,不能超过30个字符。 - */ -@property (nonatomic, retain) TCOptionalStr paramPriv; - -/** - * question 问题,不能超过30个字符。 - * \note 如果priv取值为5,必须包含这个参数: - **/ -@property (nonatomic, retain) TCOptionalStr paramQuestion; - -/** - * answer 答案,不能超过30个字符。 - * \note 如果priv取值为5,必须包含这个参数: - **/ -@property (nonatomic, retain) TCOptionalStr paramAnswer; - -@end - -#pragma mark - -#pragma mark TCUploadPicDic -/** - * \brief 上传一张照片到QQ空间相册的参数字典定义 - * - * 可以直接填写相应参数后将对象当作参数传入API中 - */ -@interface TCUploadPicDic : TCAPIRequest - -/** - * 返回一个对象用来进行API参数的填充 - * \note 不用释放,返回的对象是自动释放的 - */ -+ (TCUploadPicDic *) dictionary; - -/** - * photodesc string 照片描述,注意照片描述不能超过200个字符。 - */ -@property (nonatomic, retain) TCOptionalStr paramPhotodesc; -/** - * string 照片的命名,必须以.jpg, .gif, .png, .jpeg, .bmp此类后缀结尾。 - */ -@property (nonatomic, retain) TCOptionalStr paramTitle; - -/** - * string 相册id。可不填,不填时则根据“mobile”标识选择默认上传的相册。 - */ -@property (nonatomic, retain) TCOptionalStr paramAlbumid; - -/** - * 标志位 - * - * \note 0表示PC,1表示手机。用于当不传相册id时(即albumid为空时)控制是否传到手机相册。\n - * -# 如果传1,则当albumid为空时,图片会上传到手机相册; - * -# 如果不传或传0,则当albumid为空时,图片会上传到贴图相册; - */ -@property (nonatomic, assign) TCOptionalStr paramMobile; - -/** - * x string 照片拍摄时的地理位置的经度。请使用原始数据(纯经纬度,0-360)。 - */ -@property (nonatomic, retain) TCOptionalStr paramX; - -/** - * y string 照片拍摄时的地理位置的纬度。请使用原始数据(纯经纬度,0-360)。 - */ -@property (nonatomic, retain) TCOptionalStr paramY; - -/** - * picture 必须 string 上传照片的文件名以及图片的内容(在发送请求时,图片内容以二进制数据流的形式发送,见下面的请求示例),注意照片名称不能超过30个字符。 - */ -@property (nonatomic, retain) TCRequiredImage paramPicture; - -/** - * needfeed int 标识上传照片时是否要发feed - * \note(0:不发feed; 1:发feed)。如果不填则默认为发feed。 - */ -@property (nonatomic, assign)TCOptionalStr paramNeedfeed; - -/** - * successnum int 批量上传照片时,已成功上传的张数,指明上传完成情况。 - * \note 单张上传时可以不填,不填则默认为0。 - */ -@property (nonatomic, assign)TCOptionalStr paramSuccessnum; - -/** - * picnum int 批量上传照片的总张数,如果不填则默认为1。 - * \note - * - 如果picnum=1,为单张上传,发送单张上传feed; - * - 如果picnum>1,为批量上传,发送批量上传feed。 - * 批量上传方式:picnum为一次上传照片的张数,successnum初始值为0,每调用一次照片上传接口后递增其值。 - * 信息中心中的feed表现形式:批量上传时最新的7张在feed中展示。其中最新上传的一张图片展示为大图,剩下的 - * 六张按从新到旧的顺序展示为小图,其他图片不在feed中展示。 - */ -@property (nonatomic, assign)TCOptionalStr paramPicnum; - -@end - -#pragma mark - -#pragma mark TCAddShareDic -/** - * \brief 同步分享到QQ空间,腾讯微博的参数字典定义 - * - * 可以直接填写相应参数后将对象当作参数传入API中 - */ -@interface TCAddShareDic : TCAPIRequest - -/** - * 返回一个对象用来进行API参数的填充 - * - * \note 不用释放,返回的对象是自动释放的 - */ -+ (TCAddShareDic *) dictionary; - -/** - * title 必须 string feeds的标题 最长36个中文字,超出部分会被截断。 - */ -@property (nonatomic, retain) TCRequiredStr paramTitle; - - -/** - * url 必须 string 分享所在网页资源的链接,点击后跳转至第三方网页,对应上文接口说明中2的超链接。请以http://开头。 - */ -@property (nonatomic, retain) TCRequiredStr paramUrl; - - -/** - * comment string 用户评论内容,也叫发表分享时的分享理由 禁止使用系统生产的语句进行代替。 - * 最长40个中文字,超出部分会被截断。 - */ -@property (nonatomic, retain) TCOptionalStr paramComment; - - -/** - * summary string 所分享的网页资源的摘要内容,或者是网页的概要描述 最长80个中文字,超出部分会被截断。 - */ -@property (nonatomic, retain) TCOptionalStr paramSummary; - -/** - * images string 所分享的网页资源的代表性图片链接",请以http://开头,长度限制255字符。多张图片以竖线(|)分隔,目前只有第一张图片有效,图片规格100*100为佳。 - */ -@property (nonatomic, retain) TCOptionalStr paramImages; - -/** - * type string 分享内容的类型。 - * - * \note 4表示网页;5表示视频(type=5时,必须传入playurl) - */ -@property (nonatomic, retain) TCOptionalStr paramType; - -/** - * playurl string 长度限制为256字节。仅在type=5的时候有效,表示视频的swf播放地址。 - */ -@property (nonatomic, retain) TCOptionalStr paramPlayurl; - -/** - * site 必须 string 分享的来源网站名称,请填写网站申请接入时注册的网站名称 - */ -@property (nonatomic, retain) TCRequiredStr paramSite; - -/** - * fromurl 必须 string 分享的来源网站对应的网站地址url 请以http://开头。 - */ -@property (nonatomic, retain) TCRequiredStr paramFromurl; - -/** - * nswb string 值为1时,表示分享不默认同步到微博,其他值或者不传此参数表示默认同步到微博。 - */ -@property (nonatomic, retain) TCOptionalStr paramNswb; - -@end - -#pragma mark - -#pragma mark TCCheckPageFansDic -/** - * \brief 验证是否认证空间粉丝tttyttyyyu的参数字典定义 - * - * 可以直接填写相应参数后将对象当作参数传入API中 - */ -@interface TCCheckPageFansDic : TCAPIRequest - -/** - * 返回一个对象用来进行API参数的填充 - * - * \note 不用释放,返回的对象是自动释放的 - */ -+ (TCCheckPageFansDic *) dictionary; - -/** - * 表示认证空间的QQ号码 - */ -@property (nonatomic, retain) TCRequiredStr paramPage_id; -@end - -#pragma mark - -#pragma mark TCSetUserHeadpic -/** - * \brief 设置用户头像 - * - * 可以直接填写相应参数后将对象当作参数传入API中 - */ -@interface TCSetUserHeadpic : TCAPIRequest - -/** - * 返回一个对象用来进行API参数的填充 - * \note 不用释放,返回的对象是自动释放的 - */ -+ (TCSetUserHeadpic *) dictionary; - -/** - * 设置用户头像的图片 - */ -@property (nonatomic, retain) TCRequiredImage paramImage; - -/** - * 图片的文件名 - */ -@property (nonatomic, retain) TCOptionalStr paramFileName; -@end - -#pragma mark - -#pragma mark TCListPhotoDic - -/** - * \brief 获取用户QQ空间相册中的照片列表 - * - * 可以直接填写相应参数后将对象当作参数传入API中 - */ -@interface TCListPhotoDic : TCAPIRequest - -/** - * 返回一个对象用来进行API参数的填充 - * - * \note 不用释放,返回的对象是自动释放的 - */ -+ (TCListPhotoDic *) dictionary; - -/** - * 表示要获取的照片列表所在的相册ID - */ -@property (nonatomic, retain) TCRequiredStr paramAlbumid; - -@end - -#pragma mark - -#pragma mark TCSendStoryDic -/** - * \brief QQ空间定向分享的参数字典定义 - * - * 该分享支持@到指定好友,最多支持10个好友。 - * 其中第三方应用可预传最多5个指定好友的openid,其余好友由用户自行选择。 - * 该分享形式仅提供跳QZone分享和本地Html5分享两种形式。 - * sendStroy不支持userData参数 - */ -@interface TCSendStoryDic : TCAPIRequest - -/** - * 返回一个对象用来进行API参数的填充 - * - * \note 不用释放,返回的对象是自动释放的 - */ -+ (TCSendStoryDic *) dictionary; - -/** - * 分享的标题 - */ -@property (nonatomic, retain) TCRequiredStr paramTitle; - -/** - * 故事摘要,最多不超过50个汉字,可以为空 - */ -@property (nonatomic, retain) TCOptionalStr paramSummary; - -/** - * 默认展示在输入框里的分享理由,最多120个汉字,可以为空 - */ -@property (nonatomic, retain) TCOptionalStr paramDescription; - -/** - * 图片url - */ -@property (nonatomic, retain) TCOptionalStr paramPics; - -/** - * 如果不填,则默认为"进入应用" - */ -@property (nonatomic, retain) TCRequiredStr paramAct; - -/** - * 点击分享的Url - */ -@property (nonatomic, retain) TCOptionalStr paramShareUrl; - -@end diff --git a/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/sdkdef.h b/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/sdkdef.h index 0eefc78..fc112a7 100644 --- a/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/sdkdef.h +++ b/ios/RCTQQAPI/TencentOpenAPI.framework/Headers/sdkdef.h @@ -20,29 +20,6 @@ typedef enum { TCOLogLevel_Debug, } TCOLogLevel; -/** - * \brief 手机qq的当前版本 - */ -typedef enum QQVersion -{ - kQQUninstall, - kQQVersion3_0, - kQQVersion4_0, //支持sso登陆 - kQQVersion4_2_1, //ios7兼容 - kQQVersion4_5, //4.5版本,wpa会话 - kQQVersion4_6, //4.6版本,sso登陆信令通道切换 - kQQVersion4_7, //4.7版本 不确定新支持了什么样的属性 -} QQVersion; - - -/** - * \breif TIM的当前版本 - */ -typedef enum TIMVersion { - kTIMUinstall, - kTIMVersion1_1, -}TIMVersion; - /** * \breif 授权/分享 方式 */ @@ -333,9 +310,6 @@ typedef enum /** 发表一条说说到QQ空间(需要申请权限) */ FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_ADD_TOPIC; -/** 发表一篇日志到QQ空间(需要申请权限) */ -FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_ADD_ONE_BLOG; - /** 创建一个QQ空间相册(需要申请权限) */ FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_ADD_ALBUM; @@ -345,9 +319,6 @@ FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_UPLOAD_PIC; /** 获取用户QQ空间相册列表(需要申请权限) */ FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_LIST_ALBUM; -/** 同步分享到QQ空间、腾讯微博 */ -FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_ADD_SHARE; - /** 验证是否认证空间粉丝 */ FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_CHECK_PAGE_FANS; @@ -374,7 +345,6 @@ FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_GET_SIMPLE_USER_INFO; /** * \name CGI接口相关参数类型定义 */ -///@{ /** 必填的字符串类型参数 */ typedef NSString *TCRequiredStr; diff --git a/ios/RCTQQAPI/TencentOpenAPI.framework/Resources/ios_open_sdk_3.2.2.141_iphone_release b/ios/RCTQQAPI/TencentOpenAPI.framework/Resources/opensdkdemo_3.3.5.16_iphone similarity index 100% rename from ios/RCTQQAPI/TencentOpenAPI.framework/Resources/ios_open_sdk_3.2.2.141_iphone_release rename to ios/RCTQQAPI/TencentOpenAPI.framework/Resources/opensdkdemo_3.3.5.16_iphone diff --git a/ios/RCTQQAPI/TencentOpenAPI.framework/TencentOpenAPI b/ios/RCTQQAPI/TencentOpenAPI.framework/TencentOpenAPI index de1f03a..24ef1d8 100644 Binary files a/ios/RCTQQAPI/TencentOpenAPI.framework/TencentOpenAPI and b/ios/RCTQQAPI/TencentOpenAPI.framework/TencentOpenAPI differ diff --git a/package.json b/package.json index 5ce37fd..f6c73d9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "react-native-qq", - "version": "3.0.0", + "name": "react-native-qq-nevo", + "version": "3.0.9", "description": "QQ Login&Share support in React Native.", "main": "index.js", "scripts": { @@ -8,7 +8,7 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/reactnativecn/react-native-qq.git" + "url": "git+https://github.com/yiky84119/react-native-qq.git" }, "keywords": [ "react-native", @@ -18,7 +18,7 @@ "author": "tdzl2003", "license": "ISC", "bugs": { - "url": "https://github.com/reactnativecn/react-native-qq/issues" + "url": "https://github.com/yiky84119/react-native-qq/issues" }, - "homepage": "https://github.com/reactnativecn/react-native-qq#readme" + "homepage": "https://github.com/yiky84119/react-native-qq" } diff --git a/react-native-qq-nevo.podspec b/react-native-qq-nevo.podspec new file mode 100644 index 0000000..6e28fcb --- /dev/null +++ b/react-native-qq-nevo.podspec @@ -0,0 +1,23 @@ +require 'json' + +package = JSON.parse(File.read(File.join(__dir__, 'package.json'))) + +Pod::Spec.new do |s| + s.name = package['name'] + s.version = package['version'] + s.summary = package['description'] + s.license = package['license'] + + s.authors = package['author'] + s.homepage = package['homepage'] + s.platform = :ios, "9.0" + + s.source = { :git => "https://github.com/yiky84119/react-native-alipays.git", :tag => "v#{s.version}" } + s.source_files = "ios/**/*.{h,m}" + + s.frameworks = "WebKit" + s.vendored_frameworks = "ios/RCTQQAPI/TencentOpenAPI.framework" + s.libraries = "iconv", "sqlite3", "z", "c++" + + s.dependency 'React' +end