diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d29f88..2d53cc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## 3.1.0 + +* 升级 Android/iOS SDK +* 新增 setIsPermissionGranted 函数 + ## 3.0.0 * 重构 diff --git a/android/src/main/java/io/github/v7lin/tencent_kit/TencentKitPlugin.java b/android/src/main/java/io/github/v7lin/tencent_kit/TencentKitPlugin.java index fd14293..94d9e05 100644 --- a/android/src/main/java/io/github/v7lin/tencent_kit/TencentKitPlugin.java +++ b/android/src/main/java/io/github/v7lin/tencent_kit/TencentKitPlugin.java @@ -167,7 +167,16 @@ public class TencentKitPlugin implements FlutterPlugin, ActivityAware, ActivityR @Override public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) { - if (METHOD_REGISTERAPP.equals(call.method)) { + if ("setIsPermissionGranted".equals(call.method)) { + final boolean granted = call.argument("granted"); + final String buildModel = call.argument("build_model"); + if (!TextUtils.isEmpty(buildModel)) { + Tencent.setIsPermissionGranted(granted, buildModel); + } else { + Tencent.setIsPermissionGranted(granted); + } + result.success(null); + } else if (METHOD_REGISTERAPP.equals(call.method)) { final String appId = call.argument(ARGUMENT_KEY_APPID); // final String universalLink = call.argument(ARGUMENT_KEY_UNIVERSALLINK); String authority = null; @@ -183,15 +192,6 @@ public class TencentKitPlugin implements FlutterPlugin, ActivityAware, ActivityR tencent = Tencent.createInstance(appId, applicationContext); } result.success(null); - } else if ("setIsPermissionGranted".equals(call.method)) { - final boolean granted = call.argument("granted"); - final String buildModel = call.argument("build_model"); - if (!TextUtils.isEmpty(buildModel)) { - Tencent.setIsPermissionGranted(granted, buildModel); - } else { - Tencent.setIsPermissionGranted(granted); - } - result.success(null); } else if (METHOD_ISQQINSTALLED.equals(call.method)) { result.success(isAppInstalled(applicationContext, "com.tencent.mobileqq")); } else if (METHOD_ISTIMINSTALLED.equals(call.method)) { diff --git a/example/ios/Flutter/AppFrameworkInfo.plist b/example/ios/Flutter/AppFrameworkInfo.plist index 6b4c0f7..f2872cf 100644 --- a/example/ios/Flutter/AppFrameworkInfo.plist +++ b/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 8.0 + 9.0 diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 15221da..07a7302 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -35,7 +35,7 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/tencent_kit/ios" SPEC CHECKSUMS: - Flutter: 434fef37c0980e73bb6479ef766c45957d4b510c + Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904 @@ -43,4 +43,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 8e679eca47255a8ca8067c4c67aab20e64cb974d -COCOAPODS: 1.10.1 +COCOAPODS: 1.11.2 diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index 3861e5b..c28564b 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -165,7 +165,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1020; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a28140c..3db53b6 100644 --- a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ -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, ShareDestType) { //小程序的类型 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,13 +76,14 @@ typedef void(^QQApiLogBolock)(NSString *logStr); /** \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, retain) NSString* tagName; -@property(nonatomic, retain) NSString* messageExt; +@property (nonatomic, copy) NSString *tagName; +@property (nonatomic, copy) NSString *messageExt; /* * 分享到QQ/TIM * SDK根据是否安装对应客户端进行判断,判断顺序:QQ > TIM @@ -93,8 +96,8 @@ __attribute__((visibility("default"))) @interface QQApiObject : NSObject /** \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; @@ -103,24 +106,24 @@ __attribute__((visibility("default"))) @interface ArkObject : NSObject #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 @@ -137,19 +140,20 @@ __attribute__((visibility("default"))) @interface QQApiMiniProgramLaunchObject : */ __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 @@ -170,22 +174,24 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject URL地址所指向的目标类型. @note 参见QQApi.h 中的 QQApiURLTargetType 定义. */ -@property(nonatomic)QQApiURLTargetType targetContentType; +@property (nonatomic)QQApiURLTargetType targetContentType; -@property(nonatomic,retain)NSURL* url; ///QQApiExtendObject实例 */ -+ (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的QQApiExtendObject对象 @param data 数据内容 @@ -236,7 +242,7 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject @return 一个自动释放的QQApiExtendObject实例 */ -+ (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 @@ -271,9 +277,11 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject @"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 @@ -284,13 +292,13 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject */ @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的QQApiObject对象 @param imageDataArray 发送的多张图片队列 @@ -307,8 +315,8 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject */ @interface QQApiImageArrayForQZoneObject : QQApiObject -@property(nonatomic,retain) NSArray* imageDataArray;///图片数组 -@property(nonatomic,retain) NSDictionary* extMap; // 扩展字段 +@property (nonatomic, copy) NSArray *imageDataArray;///图片数组 +@property (nonatomic, copy) NSDictionary *extMap; // 扩展字段 /** 初始化方法 @@ -316,7 +324,7 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject @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的QQApiExtendObject对象 @@ -326,7 +334,7 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject @return 一个自动释放的QQApiExtendObject实例 */ -+ (id)objectWithimageDataArray:(NSArray*)imageDataArray title:(NSString*)title extMap:(NSDictionary *)extMap; ++ (id)objectWithimageDataArray:(NSArray *)imageDataArray title:(NSString *)title extMap:(NSDictionary *)extMap; @end @@ -339,17 +347,17 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject */ @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 @@ -360,7 +368,7 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject */ @interface QQApiWebImageObject : QQApiObject -@property(nonatomic, retain) NSURL *previewImageURL; ///<预览图像URL +@property (nonatomic, strong) NSURL *previewImageURL; ///<预览图像URL /** 初始化方法 @@ -368,7 +376,7 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject @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的QQApiWebImageObject对象 @@ -376,7 +384,7 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject @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 @@ -385,11 +393,12 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject /** @brief 本地文件对象(暂只支持分享到手机QQ数据线功能) 用于分享文件内容的对象,是一个指定为文件类型的QQApiExtendObject */ -@interface QQApiFileObject : QQApiExtendObject -{ - NSString* _fileName; +@interface QQApiFileObject : QQApiExtendObject { + NSString *_fileName; } -@property(nonatomic, retain)NSString* fileName; + +@property (nonatomic, copy)NSString *fileName; + @end // QQApiAudioObject @@ -398,7 +407,7 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject */ @interface QQApiAudioObject : QQApiURLObject -@property (nonatomic, retain) NSURL *flashURL; ///<音频URL地址,最长512个字符 +@property (nonatomic, strong) NSURL *flashURL; ///<音频URL地址,最长512个字符 /** 获取一个autorelease的QQApiAudioObject @@ -408,7 +417,7 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject @param data 分享内容的预览图像 @note 如果url为空,调用QQApi#sendMessage:时将返回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的QQApiAudioObject @@ -418,7 +427,7 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject @param previewURL 分享内容的预览图像URL @note 如果url为空,调用QQApi#sendMessage:时将返回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 @@ -431,7 +440,7 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject */ @interface QQApiVideoObject : QQApiURLObject -@property (nonatomic, retain) NSURL *flashURL; ///<视频URL地址,最长512个字符 +@property (nonatomic, strong) NSURL *flashURL; ///<视频URL地址,最长512个字符 /** 获取一个autorelease的QQApiVideoObject @@ -441,7 +450,7 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject @param data 分享内容的预览图像 @note 如果url为空,调用QQApi#sendMessage:时将返回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的QQApiVideoObject @param url 视频内容的目标URL @@ -450,7 +459,7 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject @param previewURL 分享内容的预览图像URL @note 如果url为空,调用QQApi#sendMessage:时将返回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 @@ -467,7 +476,7 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject @param data 分享内容的预览图像 @note 如果url为空,调用QQApi#sendMessage:时将返回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的QQApiNewsObject @param url 视频内容的目标URL @@ -476,7 +485,7 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject @param previewURL 分享内容的预览图像URL @note 如果url为空,调用QQApi#sendMessage:时将返回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 @@ -489,19 +498,19 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject /** 预定义的界面布局类型 */ -@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,参考官方文档说明 @@ -511,26 +520,52 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject @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 + + //////////////////////////////////////////////////////////////////////////////////////////////////////////// // Ad item object definition //////////////////////////////////////////////////////////////////////////////////////////////////////////// /** @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 @@ -540,20 +575,20 @@ __attribute__((visibility("default"))) @interface QQApiURLObject : QQApiObject 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应答处理分享消息的结果 }; /** @@ -572,16 +607,16 @@ typedef NS_ENUM(NSUInteger, QQApiInterfaceRespType) { @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 @@ -617,14 +652,14 @@ typedef NS_ENUM(NSUInteger, QQApiInterfaceRespType) { * @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 /** @@ -632,6 +667,9 @@ typedef NS_ENUM(NSUInteger, QQApiInterfaceRespType) { */ @interface SendMessageToQQResp : QQBaseResp +/** 其他扩展信息 */ +@property (nonatomic, copy) NSDictionary *otherInfo; + /** 创建一个SendMessageToQQResp应答实例 \param result 请求处理结果 @@ -639,7 +677,9 @@ typedef NS_ENUM(NSUInteger, QQApiInterfaceRespType) { \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 @@ -656,7 +696,57 @@ typedef NS_ENUM(NSUInteger, QQApiInterfaceRespType) { + (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 diff --git a/ios/Libraries/TencentOpenAPI.framework/Headers/TencentOAuth.h b/ios/Libraries/TencentOpenAPI.framework/Headers/TencentOAuth.h index 982edaa..c09af8b 100644 --- a/ios/Libraries/TencentOpenAPI.framework/Headers/TencentOAuth.h +++ b/ios/Libraries/TencentOpenAPI.framework/Headers/TencentOAuth.h @@ -7,7 +7,7 @@ /// #import -#import "sdkdef.h" +#import "SDKDef.h" @protocol TencentSessionDelegate; @protocol TencentLoginDelegate; @@ -37,57 +37,58 @@ typedef NS_ENUM(NSUInteger, TencentAuthMode) { */ @interface TencentOAuth : NSObject { - NSMutableDictionary* _apiRequests; - NSString* _accessToken; - NSDate* _expirationDate; + NSMutableDictionary *_apiRequests; + NSString *_accessToken; + NSDate *_expirationDate; id _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 sessionDelegate; +@property(nonatomic, weak) id 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 @@ typedef NS_ENUM(NSUInteger, TencentAuthMode) { * \return 返回sdk版本号 **/ -+ (NSString*)sdkVersion; ++ (NSString *)sdkVersion; /** * 用来获得当前sdk的小版本号 * \return 返回sdk小版本号 **/ -+ (NSString*)sdkSubVersion; ++ (NSString *)sdkSubVersion; /** * 用来获得当前sdk的是否精简版 @@ -191,6 +192,21 @@ typedef NS_ENUM(NSUInteger, TencentAuthMode) { universalLink:(NSString *)universalLink delegate:(id)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:没安装 diff --git a/ios/Libraries/TencentOpenAPI.framework/Headers/TencentOpenApiUmbrellaHeader.h b/ios/Libraries/TencentOpenAPI.framework/Headers/TencentOpenApiUmbrellaHeader.h index 6d6ad55..6a8a10e 100644 --- a/ios/Libraries/TencentOpenAPI.framework/Headers/TencentOpenApiUmbrellaHeader.h +++ b/ios/Libraries/TencentOpenAPI.framework/Headers/TencentOpenApiUmbrellaHeader.h @@ -16,7 +16,7 @@ FOUNDATION_EXPORT const unsigned char StaticLibraryModuleVersionString[]; #import "QQApiInterface.h" #import "QQApiInterfaceObject.h" -#import "sdkdef.h" +#import "SDKDef.h" #import "TencentOAuth.h" diff --git a/ios/Libraries/TencentOpenAPI.framework/Headers/sdkdef.h b/ios/Libraries/TencentOpenAPI.framework/Headers/sdkdef.h index 651d278..72d9a95 100644 --- a/ios/Libraries/TencentOpenAPI.framework/Headers/sdkdef.h +++ b/ios/Libraries/TencentOpenAPI.framework/Headers/sdkdef.h @@ -248,6 +248,9 @@ FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgWebPage; /** 设置头像图片过大 */ FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgUserHeadPicLarge; +/** 用户未同意授权隐私协议 */ +FOUNDATION_EXPORT NSString * const TCOpenSDKErrorMsgUserNotAgreedAuthorization; + ///@} /** diff --git a/ios/Libraries/TencentOpenAPI.framework/TencentOpenAPI b/ios/Libraries/TencentOpenAPI.framework/TencentOpenAPI index 02c8fc4..56ca89c 100644 Binary files a/ios/Libraries/TencentOpenAPI.framework/TencentOpenAPI and b/ios/Libraries/TencentOpenAPI.framework/TencentOpenAPI differ diff --git a/ios/tencent_kit.podspec b/ios/tencent_kit.podspec index 497ff6e..6ceb062 100644 --- a/ios/tencent_kit.podspec +++ b/ios/tencent_kit.podspec @@ -18,7 +18,7 @@ A powerful Flutter plugin allowing developers to auth/share with natvie Android s.dependency 'Flutter' s.platform = :ios, '8.0' - # v3.5.3 + # v3.5.10 s.subspec 'vendor' do |sp| sp.vendored_frameworks = 'Libraries/*.framework' sp.frameworks = 'Security', 'SystemConfiguration', 'CoreGraphics', 'CoreTelephony', 'WebKit' diff --git a/lib/src/tencent.dart b/lib/src/tencent.dart index 73da62b..a39fc64 100644 --- a/lib/src/tencent.dart +++ b/lib/src/tencent.dart @@ -43,26 +43,35 @@ class Tencent { static const String _SCHEME_FILE = 'file'; - late final MethodChannel _channel = - const MethodChannel('v7lin.github.io/tencent_kit') - ..setMethodCallHandler(_handleMethod); + late final MethodChannel _channel = const MethodChannel('v7lin.github.io/tencent_kit')..setMethodCallHandler(_handleMethod); - final StreamController _respStreamController = - StreamController.broadcast(); + final StreamController _respStreamController = StreamController.broadcast(); Future _handleMethod(MethodCall call) async { switch (call.method) { case _METHOD_ONLOGINRESP: - _respStreamController.add(LoginResp.fromJson( - (call.arguments as Map).cast())); + _respStreamController.add(LoginResp.fromJson((call.arguments as Map).cast())); break; case _METHOD_ONSHARERESP: - _respStreamController.add(ShareMsgResp.fromJson( - (call.arguments as Map).cast())); + _respStreamController.add(ShareMsgResp.fromJson((call.arguments as Map).cast())); break; } } + /// 设置是否已授权获取设备信息/是否同意隐私协议 + Future setIsPermissionGranted({ + required bool granted, + String? buildModel /* android.os.Build.MODEL */, + }) { + return _channel.invokeMethod( + 'setIsPermissionGranted', + { + 'granted': granted, + if (buildModel?.isNotEmpty ?? false) 'build_model': buildModel, + }, + ); + } + /// 向 Open_SDK 注册 Future registerApp({ required String appId, @@ -72,22 +81,7 @@ class Tencent { _METHOD_REGISTERAPP, { _ARGUMENT_KEY_APPID: appId, - if (universalLink?.isNotEmpty ?? false) - _ARGUMENT_KEY_UNIVERSALLINK: universalLink, - }, - ); - } - - /// 设置是否已授权获取设备信息 - Future setIsPermissionGranted({ - required bool granted, - String? buildModel, - }) { - return _channel.invokeMethod( - 'setIsPermissionGranted', - { - 'granted': granted, - if (buildModel?.isNotEmpty ?? false) 'build_model': buildModel, + if (universalLink?.isNotEmpty ?? false) _ARGUMENT_KEY_UNIVERSALLINK: universalLink, }, ); } @@ -133,18 +127,14 @@ class Tencent { }) { assert(scene == TencentScene.SCENE_QZONE); assert((summary?.isNotEmpty ?? false) || - ((imageUris?.isNotEmpty ?? false) && - imageUris! - .every((Uri element) => element.isScheme(_SCHEME_FILE))) || + ((imageUris?.isNotEmpty ?? false) && imageUris!.every((Uri element) => element.isScheme(_SCHEME_FILE))) || (videoUri != null && videoUri.isScheme(_SCHEME_FILE))); return _channel.invokeMethod( _METHOD_SHAREMOOD, { _ARGUMENT_KEY_SCENE: scene, if (summary?.isNotEmpty ?? false) _ARGUMENT_KEY_SUMMARY: summary, - if (imageUris?.isNotEmpty ?? false) - _ARGUMENT_KEY_IMAGEURIS: - imageUris!.map((Uri imageUri) => imageUri.toString()).toList(), + if (imageUris?.isNotEmpty ?? false) _ARGUMENT_KEY_IMAGEURIS: imageUris!.map((Uri imageUri) => imageUri.toString()).toList(), if (videoUri != null) _ARGUMENT_KEY_VIDEOURI: videoUri.toString(), }, ); diff --git a/pubspec.yaml b/pubspec.yaml index ac74a4f..345ed8b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: tencent_kit description: A powerful Flutter plugin allowing developers to auth/share with natvie Android & iOS Tencent SDKs. -version: 3.0.0 +version: 3.1.0 # author: v7lin homepage: https://github.com/v7lin/fake_tencent