Commit 0fba8aa7 by pierce

添加第三方登录

parent 372823f0
Showing with 990 additions and 84 deletions
......@@ -104,8 +104,7 @@ public final class GDPersonalAuthModel: BaseModel, NetworkArrType {
public static func createArrFrom(_ json: JSON) -> [GDPersonalAuthModel] {
return json["result"].arrayValue
.map { GDPersonalAuthModel.createFrom($0) }
.filter { $0.key != .unknown && $0.key != .wechat }
//TODO:添加微信认证: added By Pidan
.filter { $0.key != .unknown }
}
public static func createFrom(_ json: JSON) -> GDPersonalAuthModel {
......
......@@ -29,8 +29,8 @@ Pod::Spec.new do |s|
s.libraries = 'stdc++', 'c++', 'bz2'
# s.vendored_libraries = ['GDToolBox/Classes/ThirdParty/TalkingData/libTalkingData.a', 'GDToolBox/Classes/ThirdParty/WeChat/libWeChatSDK.a']
s.vendored_libraries = ['GDToolBox/Classes/ThirdParty/TalkingData/libTalkingData.a']
s.vendored_libraries = ['GDToolBox/Classes/ThirdParty/TalkingData/libTalkingData.a', 'GDToolBox/Classes/ThirdParty/WeChat/libWeChatSDK.a']
# s.vendored_libraries = ['GDToolBox/Classes/ThirdParty/TalkingData/libTalkingData.a']
s.vendored_frameworks = ['GDToolBox/Frameworks/IJKMediaFramework.framework']
s.dependency 'SSZipArchive'
......
......@@ -249,17 +249,16 @@ public struct GDSDK {
// public static let gd_agoraAppKey = "fa0ac42433c44f05af173aa0a617f2db"
// /// 微信 Appid
// public static let gd_wechatAppid = "wx2e7b3d9b89161887"
// /// 微信 Key
// public static let gd_wechatAppKey = "5e4f5f37782aba45e36d8b3e0b64765e"
// /// 微信 UniversalLink
// public static let gd_wechatUniversalLink = "https://yabolive.com/qiezi/"
// static let gd_wechatUniversalLink = "https://r06f9c.openinstall.io/ulink/"
// /// QQ Appid
// public static let gd_QQAppId = "1110627651"
// /// QQ key
// public static let gd_QQAppKey = "xF0T9ElsZgDoC6N0"
public static let gd_wechatAppid = "wx2e7b3d9b89161887"
/// 微信 Key
public static let gd_wechatAppKey = "5e4f5f37782aba45e36d8b3e0b64765e"
/// 微信 UniversalLink
public static let gd_wechatUniversalLink = "https://yabolive.com/qiezi/"
/// QQ Appid
public static let gd_QQAppId = "1110627651"
/// QQ key
public static let gd_QQAppKey = "xF0T9ElsZgDoC6N0"
//
// /// 字节推拉流SDK AppID
// public static let gd_byteDanceAppID = "201548"
......
重要!
SDK1.8.7.1
1. 修复Xcode11以下编译不通过
SDK1.8.7
1. 修复iPadOS,未安装微信的情况下,因为UA问题无法授权登录
2. 修复未安装微信的情况下, 适配了UIScene的App因为UIAlertView Crash
3. 增加Universal Link检测函数
SDK1.8.6.2
1. 修改包含"UIWebView"字符的类名
SDK1.8.6.1
1.短信授权登录使用的UIWebview切换成WKWebview
SDK1.8.6
1. 支持Universal Link拉起微信以及返回App
2. SDK移除MTA库
SDK1.8.5
1. 更换MTA库:取消对剪切板的访问, 防止和其他SDK竞争导致crash
2. NSMutableArray的MTA分类方法改名,减少命名冲突
3. 不含支付功能版本移除非税支付和医保支付接口
4. 分享音乐支持填写歌词和高清封面图
SDK1.8.4
1. 调整分享图片大小限制
2. 新增openBusinessView接口
SDK1.8.3
1. SDK增加调起微信刷卡支付接口
2. SDK增加小程序订阅消息接口
3. 修复小程序订阅消息接口没有resp的问题
SDK1.8.2
1. SDK增加开发票授权 WXInvoiceAuthInsert
2. SDK增加非税接口 WXNontaxPay
3. SDK增加医保接口 WXPayInsurance
4. 更换MTA库
SDK1.8.1
1. SDK打开小程序支持指定版本(体验,开发,正式版)
2. SDK分享小程序支持指定版本(体验,开发,正式版)
3. SDK支持输出log日志
SDK1.8.0
1. SDK支持打开小程序
2. SDK分享小程序支持shareTicket
SDK1.7.9
1. SDK订阅一次性消息
SDK1.7.8
1 SDK分享小程序支持大图
SDK1.7.7
1 增加SDK分享小程序
2 增加选择发票接口
SDK1.7.6
1. 提高稳定性
1 修复mta崩溃
2 新增接口支持开发者关闭mta数据统计上报
SDK1.7.5
1. 提高稳定性
2. 加快registerApp接口启动速度
SDK1.7.4
1. 更新支持iOS启用 ATS(App Transport Security)
2. 需要在工程中链接CFNetwork.framework
3. 在工程配置中的”Other Linker Flags”中加入”-Objc -all_load”
SDK1.7.3
1. 增强稳定性,适配iOS10
2. 修复小于32K的jpg格式缩略图设置失败的问题
SDK1.7.2
1. 修复因CTTeleponyNetworkInfo引起的崩溃问题
SDK1.7.1
1. 支持兼容ipv6(提升稳定性)
2. xCode Version 7.3.1 (7D1014) 编译
SDK1.7
1. 支持兼容ipv6
2. 修复若干问题增强稳定性
SDK1.6.3
1. xCode7.2 构建的sdk包。
2. 请使用xCode7.2进行编译。
3. 需要在Build Phases中Link Security.framework
4. 修复若干小问题。
SDK1.6.2
1、xCode7.1 构建的sdk包
2、请使用xCode7.1进行编译
SDK1.6.1
1、修复armv7s下,bitcode可能编译不过
2、解决warning
SDK1.6
1、iOS 9系统策略更新,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用的URL Schemes列为白名单,才可正常检查其他应用是否安装。
受此影响,当你的应用在iOS 9中需要使用微信SDK的相关能力(分享、收藏、支付、登录等)时,需要在“Info.plist”里增加如下代码:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixin</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
2、开发者需要在工程中链接上 CoreTelephony.framework
3、解决bitcode编译不过问题
SDK1.5
1、废弃safeSendReq:接口,使用sendReq:即可。
2、新增+(BOOL) sendAuthReq:(SendAuthReq*) req viewController : (UIViewController*) viewController delegate:(id<WXApiDelegate>) delegate;
支持未安装微信情况下Auth,具体见WXApi.h接口描述
3、微信开放平台新增了微信模块用户统计功能,便于开发者统计微信功能模块的用户使用和活跃情况。开发者需要在工程中链接上:SystemConfiguration.framework,libz.dylib,libsqlite3.0.dylib。
//
// WXApi.h
// 所有Api接口
//
// Created by Wechat on 12-2-28.
// Copyright (c) 2012年 Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "WXApiObject.h"
NS_ASSUME_NONNULL_BEGIN
#pragma mark - WXApiDelegate
/*! @brief 接收并处理来自微信终端程序的事件消息
*
* 接收并处理来自微信终端程序的事件消息,期间微信界面会切换到第三方应用程序。
* WXApiDelegate 会在handleOpenURL:delegate:中使用并触发。
*/
@protocol WXApiDelegate <NSObject>
@optional
/*! @brief 收到一个来自微信的请求,第三方应用程序处理完后调用sendResp向微信发送结果
*
* 收到一个来自微信的请求,异步处理完成后必须调用sendResp发送处理结果给微信。
* 可能收到的请求有GetMessageFromWXReq、ShowMessageFromWXReq等。
* @param req 具体请求内容,是自动释放的
*/
- (void)onReq:(BaseReq*)req;
/*! @brief 发送一个sendReq后,收到微信的回应
*
* 收到一个来自微信的处理结果。调用一次sendReq后会收到onResp。
* 可能收到的处理结果有SendMessageToWXResp、SendAuthResp等。
* @param resp具体的回应内容,是自动释放的
*/
- (void)onResp:(BaseResp*)resp;
@end
#pragma mark - WXApiLogDelegate
@protocol WXApiLogDelegate <NSObject>
- (void)onLog:(NSString*)log logLevel:(WXLogLevel)level;
@end
#pragma mark - WXApi
/*! @brief 微信Api接口函数类
*
* 该类封装了微信终端SDK的所有接口
*/
@interface WXApi : NSObject
/*! @brief WXApi的成员函数,向微信终端程序注册第三方应用。
*
* 需要在每次启动第三方应用程序时调用。
* @attention 请保证在主线程中调用此函数
* @param appid 微信开发者ID
* @param universalLink 微信开发者Universal Link
* @return 成功返回YES,失败返回NO。
*/
+ (BOOL)registerApp:(NSString *)appid universalLink:(NSString *)universalLink;
/*! @brief 处理旧版微信通过URL启动App时传递的数据
*
* 需要在 application:openURL:sourceApplication:annotation:或者application:handleOpenURL中调用。
* @param url 微信启动第三方应用时传递过来的URL
* @param delegate WXApiDelegate对象,用来接收微信触发的消息。
* @return 成功返回YES,失败返回NO。
*/
+ (BOOL)handleOpenURL:(NSURL *)url delegate:(nullable id<WXApiDelegate>)delegate;
/*! @brief 处理微信通过Universal Link启动App时传递的数据
*
* 需要在 application:continueUserActivity:restorationHandler:中调用。
* @param userActivity 微信启动第三方应用时系统API传递过来的userActivity
* @param delegate WXApiDelegate对象,用来接收微信触发的消息。
* @return 成功返回YES,失败返回NO。
*/
+ (BOOL)handleOpenUniversalLink:(NSUserActivity *)userActivity delegate:(nullable id<WXApiDelegate>)delegate;
/*! @brief 检查微信是否已被用户安装
*
* @return 微信已安装返回YES,未安装返回NO。
*/
+ (BOOL)isWXAppInstalled;
/*! @brief 判断当前微信的版本是否支持OpenApi
*
* @return 支持返回YES,不支持返回NO。
*/
+ (BOOL)isWXAppSupportApi;
/*! @brief 获取微信的itunes安装地址
*
* @return 微信的安装地址字符串。
*/
+ (NSString *)getWXAppInstallUrl;
/*! @brief 获取当前微信SDK的版本号
*
* @return 返回当前微信SDK的版本号
*/
+ (NSString *)getApiVersion;
/*! @brief 打开微信
*
* @return 成功返回YES,失败返回NO。
*/
+ (BOOL)openWXApp;
/*! @brief 发送请求到微信,等待微信返回onResp
*
* 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持以下类型
* SendAuthReq、SendMessageToWXReq、PayReq等。
* @param req 具体的发送请求。
* @param completion 调用结果回调block
*/
+ (void)sendReq:(BaseReq *)req completion:(void (^ __nullable)(BOOL success))completion;
/*! @brief 收到微信onReq的请求,发送对应的应答给微信,并切换到微信界面
*
* 函数调用后,会切换到微信的界面。第三方应用程序收到微信onReq的请求,异步处理该请求,完成后必须调用该函数。可能发送的相应有
* GetMessageFromWXResp、ShowMessageFromWXResp等。
* @param resp 具体的应答内容
* @param completion 调用结果回调block
*/
+ (void)sendResp:(BaseResp*)resp completion:(void (^ __nullable)(BOOL success))completion;
/*! @brief 发送Auth请求到微信,支持用户没安装微信,等待微信返回onResp
*
* 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持SendAuthReq类型。
* @param req 具体的发送请求。
* @param viewController 当前界面对象。
* @param delegate WXApiDelegate对象,用来接收微信触发的消息。
* @param completion 调用结果回调block
*/
+ (void)sendAuthReq:(SendAuthReq *)req viewController:(UIViewController*)viewController delegate:(nullable id<WXApiDelegate>)delegate completion:(void (^ __nullable)(BOOL success))completion;
/*! @brief 测试函数,用于排查当前App通过Universal Link方式分享到微信的流程
注意1: 调用自检函数之前必须要先调用registerApp:universalLink接口, 并确认调用成功
注意2: 自检过程中会有Log产生,可以先调用startLogByLevel函数,根据Log排查问题
注意3: 会多次回调block
注意4: 仅用于新接入SDK时调试使用,请勿在正式环境的调用
*
* 当completion回调的step为WXULCheckStepFinal时,表示检测通过,Universal Link接入成功
* @param completion 回调Block
*/
+ (void)checkUniversalLinkReady:(nonnull WXCheckULCompletion)completion;
/*! @brief WXApi的成员函数,接受微信的log信息。byBlock
注意1:SDK会强引用这个block,注意不要导致内存泄漏,注意不要导致内存泄漏
注意2:调用过一次startLog by block之后,如果再调用一次任意方式的startLoad,会释放上一次logBlock,不再回调上一个logBlock
*
* @param level 打印log的级别
* @param logBlock 打印log的回调block
*/
+ (void)startLogByLevel:(WXLogLevel)level logBlock:(WXLogBolock)logBlock;
/*! @brief WXApi的成员函数,接受微信的log信息。byDelegate
注意1:sdk会弱引用这个delegate,这里可加任意对象为代理,不需要与WXApiDelegate同一个对象
注意2:调用过一次startLog by delegate之后,再调用一次任意方式的startLoad,不会再回调上一个logDelegate对象
* @param level 打印log的级别
* @param logDelegate 打印log的回调代理,
*/
+ (void)startLogByLevel:(WXLogLevel)level logDelegate:(id<WXApiLogDelegate>)logDelegate;
/*! @brief 停止打印log,会清理block或者delegate为空,释放block
* @param
*/
+ (void)stopLog;
@end
NS_ASSUME_NONNULL_END
//
// WechatAuthSDK.h
// WechatAuthSDK
//
// Created by 李凯 on 13-11-29.
// Copyright (c) 2013年 Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
enum AuthErrCode {
WechatAuth_Err_Ok = 0, //Auth成功
WechatAuth_Err_NormalErr = -1, //普通错误
WechatAuth_Err_NetworkErr = -2, //网络错误
WechatAuth_Err_GetQrcodeFailed = -3, //获取二维码失败
WechatAuth_Err_Cancel = -4, //用户取消授权
WechatAuth_Err_Timeout = -5, //超时
};
@protocol WechatAuthAPIDelegate<NSObject>
@optional
- (void)onAuthGotQrcode:(UIImage *)image; //得到二维码
- (void)onQrcodeScanned; //二维码被扫描
- (void)onAuthFinish:(int)errCode AuthCode:(nullable NSString *)authCode; //成功登录
@end
@interface WechatAuthSDK : NSObject{
NSString *_sdkVersion;
__weak id<WechatAuthAPIDelegate> _delegate;
}
@property(nonatomic, weak, nullable) id<WechatAuthAPIDelegate> delegate;
@property(nonatomic, readonly) NSString *sdkVersion; //authSDK版本号
/*! @brief 发送登录请求,等待WechatAuthAPIDelegate回调
*
* @param appId 微信开发者ID
* @param nonceStr 一个随机的尽量不重复的字符串,用来使得每次的signature不同
* @param timeStamp 时间戳
* @param scope 应用授权作用域,拥有多个作用域用逗号(,)分隔
* @param signature 签名
* @param schemeData 会在扫码后拼在scheme后
* @return 成功返回YES,失败返回NO
注:该实现只保证同时只有一个Auth在运行,Auth未完成或未Stop再次调用Auth接口时会返回NO。
*/
- (BOOL)Auth:(NSString *)appId
nonceStr:(NSString *)nonceStr
timeStamp:(NSString *)timeStamp
scope:(NSString *)scope
signature:(NSString *)signature
schemeData:(nullable NSString *)schemeData;
/*! @brief 暂停登录请求
*
* @return 成功返回YES,失败返回NO。
*/
- (BOOL)StopAuth;
@end
NS_ASSUME_NONNULL_END
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "icon_苹果.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "icon_QQ.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "icon_微信.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images": [
{
"idiom": "universal",
"scale": "1x"
},
{
"filename": "visitor_login_close_icon.png",
"idiom": "universal",
"scale": "2x"
},
{
"idiom": "universal",
"scale": "3x"
}
],
"info": {
"author": "xcode",
"version": 1
}
}
\ No newline at end of file
......@@ -12,17 +12,17 @@ import Bifrost
// 分享枚举
extension GDSocial.Target {
//TODO:处理这里的逻辑: added By Pidan
// public var wechatSession: WXScene {
// switch self {
// case .WeChatCircle:
// return WXSceneTimeline
// case .WeChatFriend:
// return WXSceneSession
// default:
// return WXSceneSession
// }
// }
public var wechatSession: WXScene {
switch self {
case .WeChatCircle:
return WXSceneTimeline
case .WeChatFriend:
return WXSceneSession
default:
return WXSceneSession
}
}
}
public class GDSocialCenterModule: NSObject, GDSocialCenterSwiftRouter {
......@@ -39,8 +39,7 @@ public class GDSocialCenterModule: NSObject, GDSocialCenterSwiftRouter {
/// 第三方登录
/// - Parameter model: 登录数据 Model
public func login(with model: GDSocialLoginModel, vc: UIViewController?) {
//TODO:第三方登录: added By Pidan
// GDSocialPlatCenter.shared.login(with: model, vc: vc)
GDSocialPlatCenter.shared.login(with: model, vc: vc)
}
/// 分享
......@@ -49,8 +48,7 @@ public class GDSocialCenterModule: NSObject, GDSocialCenterSwiftRouter {
/// - type: 分享类型
/// - completion: 完成回调
public func share(with model: GDShareModel, expireTime: CGFloat) {
//TODO:第三方登录: added By Pidan
// GDSocialPlatCenter.shared.share(with: model, expireTime: expireTime)
GDSocialPlatCenter.shared.share(with: model, expireTime: expireTime)
}
}
......@@ -82,29 +80,28 @@ extension GDSocialCenterModule: BifrostModuleProtocol {
}
public func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
//TODO:第三方登录: added By Pidan
// if url.absoluteString.contains(GDSDK.gd_wechatAppid) {
// return GDSocialPlatCenter.shared.handler(for: .wechat, url: url)
// } else if url.absoluteString.contains(GDSDK.gd_QQAppId) {
// return GDSocialPlatCenter.shared.handler(for: .qq, url: url)
// } else {
if url.absoluteString.contains(GDSDK.gd_wechatAppid) {
return GDSocialPlatCenter.shared.handler(for: .wechat, url: url)
} else if url.absoluteString.contains(GDSDK.gd_QQAppId) {
return GDSocialPlatCenter.shared.handler(for: .qq, url: url)
} else {
return true
// }
}
}
public func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
//TODO:第三方登录: added By Pidan
// if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
// if let url = userActivity.webpageURL {
// if url.absoluteString.contains(GDSDK.gd_wechatAppid) {
// // 微信
// return GDSocialPlatCenter.shared.handle(for: .wechat, userActivity: userActivity)
// } else {
// // QQ
// return GDSocialPlatCenter.shared.handle(for: .qq, userActivity: userActivity)
// }
// }
// }
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
if let url = userActivity.webpageURL {
if url.absoluteString.contains(GDSDK.gd_wechatAppid) {
// 微信
return GDSocialPlatCenter.shared.handle(for: .wechat, userActivity: userActivity)
} else {
// QQ
return GDSocialPlatCenter.shared.handle(for: .qq, userActivity: userActivity)
}
}
}
return true
}
......
......@@ -12,8 +12,7 @@ import RxCocoa
import GDToolBox
import GDRouter
//TODO:添加微信认证: added By Pidan
let authArr: [GDPersonalAuthType] = [.phone, .idCard]
let authArr: [GDPersonalAuthType] = [.phone, .idCard, .wechat]
class GDZoneInfoAuthCell: UITableViewCell {
......@@ -62,8 +61,7 @@ class GDZoneInfoAuthCell: UITableViewCell {
/// 隔线
private let lineView = UIView(frame: .zero)
/// 认证状态
//TODO:添加微信认证: added By Pidan
private var authState = BehaviorRelay<[GDPersonalAuthType: Bool]>(value: [.idCard: false, .phone: false])
private var authState = BehaviorRelay<[GDPersonalAuthType: Bool]>(value: [.idCard: false, .phone: false, .wechat: false])
private func makeTitleLabel() {
titleLabel.font = .gd_default(14)
......
......@@ -23,7 +23,7 @@ target 'TealiveModule' do
pod 'GDRouter', :path => './LocalPodSpec/GDRouter'
#登录模块
# pod 'TencentOpenAPI_Swift'
pod 'TencentOpenAPI_Swift'
# 一键登录
pod 'mob_secverify'
......@@ -131,7 +131,7 @@ target 'GDSocialCenter' do
pod 'GDToolBox', :path => './LocalPodSpec/GDToolBox'
pod 'GDRouter', :path => './LocalPodSpec/GDRouter'
# pod 'TencentOpenAPI_Swift'
pod 'TencentOpenAPI_Swift'
end
......
......@@ -77,6 +77,7 @@ PODS:
- SwiftyJSON (5.0.2)
- SwiftyStoreKit (0.16.1)
- SwiftyTimer (2.1.0)
- TencentOpenAPI_Swift (3.5.11)
- TSVoiceConverter (0.1.6)
- UMCommon (7.4.6):
- UMDevice
......@@ -96,6 +97,7 @@ DEPENDENCIES:
- GDToolBox (from `./LocalPodSpec/GDToolBox`)
- HyphenateChat (= 3.8.3.1)
- mob_secverify
- TencentOpenAPI_Swift
- UMCommon
- UMDevice
- UMPush
......@@ -128,6 +130,7 @@ SPEC REPOS:
- SwiftyJSON
- SwiftyStoreKit
- SwiftyTimer
- TencentOpenAPI_Swift
- TSVoiceConverter
- UMCommon
- UMDevice
......@@ -149,7 +152,7 @@ SPEC CHECKSUMS:
CryptoSwift: c63a805d8bb5e5538e88af4e44bb537776af11ea
Differentiator: e8497ceab83c1b10ca233716d547b9af21b9344d
GDRouter: fedf29409932d801ddaffee10ea7a03c6135c216
GDToolBox: cb5d3036002c43b9cfe577a8f8b67716e5e96f8b
GDToolBox: 84af2d6550d55f6e07c192b81c288a3ddd667b61
HyphenateChat: dc9bedc84c610b9031c86a36b3231604d01026b4
JXPageControl: e9487b39e2e58fc17790833214f3b8e935bef98b
JXSegmentedView: 651b60fcf705258ba9395edd53876dbd2853fb68
......@@ -170,6 +173,7 @@ SPEC CHECKSUMS:
SwiftyJSON: f5b1bf1cd8dd53cd25887ac0eabcfd92301c6a5a
SwiftyStoreKit: 6b9c08810269f030586dac1fae8e75871a82e84a
SwiftyTimer: 02dd6cf10cbc71cbf67cec494f6e5eb782102543
TencentOpenAPI_Swift: 9aa992b168fbe7e0568238cc2b753789eb091257
TSVoiceConverter: 4143689b2b5df5fecedf9420bf7ce6fd4c98746c
UMCommon: 9399105b64e099c3c66aad21fc85ae695567a1f1
UMDevice: dcdf7ec167387837559d149fbc7d793d984faf82
......@@ -177,6 +181,6 @@ SPEC CHECKSUMS:
XCGLogger: 1943831ef907df55108b0b18657953f868de973b
YYKit: 7cda43304a8dc3696c449041e2cb3107b4e236e7
PODFILE CHECKSUM: 80bb25a9ad277b0abc32fdedfd519b4dd93f3696
PODFILE CHECKSUM: 70f338d7a2425faa09b99ea0020d466649d35014
COCOAPODS: 1.15.2
......@@ -57,7 +57,8 @@
"bz2"
],
"vendored_libraries": [
"GDToolBox/Classes/ThirdParty/TalkingData/libTalkingData.a"
"GDToolBox/Classes/ThirdParty/TalkingData/libTalkingData.a",
"GDToolBox/Classes/ThirdParty/WeChat/libWeChatSDK.a"
],
"vendored_frameworks": [
"GDToolBox/Frameworks/IJKMediaFramework.framework"
......
......@@ -77,6 +77,7 @@ PODS:
- SwiftyJSON (5.0.2)
- SwiftyStoreKit (0.16.1)
- SwiftyTimer (2.1.0)
- TencentOpenAPI_Swift (3.5.11)
- TSVoiceConverter (0.1.6)
- UMCommon (7.4.6):
- UMDevice
......@@ -96,6 +97,7 @@ DEPENDENCIES:
- GDToolBox (from `./LocalPodSpec/GDToolBox`)
- HyphenateChat (= 3.8.3.1)
- mob_secverify
- TencentOpenAPI_Swift
- UMCommon
- UMDevice
- UMPush
......@@ -128,6 +130,7 @@ SPEC REPOS:
- SwiftyJSON
- SwiftyStoreKit
- SwiftyTimer
- TencentOpenAPI_Swift
- TSVoiceConverter
- UMCommon
- UMDevice
......@@ -149,7 +152,7 @@ SPEC CHECKSUMS:
CryptoSwift: c63a805d8bb5e5538e88af4e44bb537776af11ea
Differentiator: e8497ceab83c1b10ca233716d547b9af21b9344d
GDRouter: fedf29409932d801ddaffee10ea7a03c6135c216
GDToolBox: cb5d3036002c43b9cfe577a8f8b67716e5e96f8b
GDToolBox: 84af2d6550d55f6e07c192b81c288a3ddd667b61
HyphenateChat: dc9bedc84c610b9031c86a36b3231604d01026b4
JXPageControl: e9487b39e2e58fc17790833214f3b8e935bef98b
JXSegmentedView: 651b60fcf705258ba9395edd53876dbd2853fb68
......@@ -170,6 +173,7 @@ SPEC CHECKSUMS:
SwiftyJSON: f5b1bf1cd8dd53cd25887ac0eabcfd92301c6a5a
SwiftyStoreKit: 6b9c08810269f030586dac1fae8e75871a82e84a
SwiftyTimer: 02dd6cf10cbc71cbf67cec494f6e5eb782102543
TencentOpenAPI_Swift: 9aa992b168fbe7e0568238cc2b753789eb091257
TSVoiceConverter: 4143689b2b5df5fecedf9420bf7ce6fd4c98746c
UMCommon: 9399105b64e099c3c66aad21fc85ae695567a1f1
UMDevice: dcdf7ec167387837559d149fbc7d793d984faf82
......@@ -177,6 +181,6 @@ SPEC CHECKSUMS:
XCGLogger: 1943831ef907df55108b0b18657953f868de973b
YYKit: 7cda43304a8dc3696c449041e2cb3107b4e236e7
PODFILE CHECKSUM: 80bb25a9ad277b0abc32fdedfd519b4dd93f3696
PODFILE CHECKSUM: 70f338d7a2425faa09b99ea0020d466649d35014
COCOAPODS: 1.15.2
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1500"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "D9AA5F4364393683F38EF01706C8CE4B"
BuildableName = "TencentOpenAPI_Swift.framework"
BlueprintName = "TencentOpenAPI_Swift"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
......@@ -12,6 +12,6 @@ PODS_TARGET_SRCROOT = ${PODS_ROOT}/../LocalPodSpec/GDRouter
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES
SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_ROOT}/../LocalPodSpec/GDToolBox/GDToolBox/Classes/ThirdParty/TalkingData" "${PODS_ROOT}/TSVoiceConverter/Sources/lib" "${PODS_XCFRAMEWORKS_BUILD_DIR}/Realm"
SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_ROOT}/../LocalPodSpec/GDToolBox/GDToolBox/Classes/ThirdParty/TalkingData" "${PODS_ROOT}/../LocalPodSpec/GDToolBox/GDToolBox/Classes/ThirdParty/WeChat" "${PODS_ROOT}/TSVoiceConverter/Sources/lib" "${PODS_XCFRAMEWORKS_BUILD_DIR}/Realm"
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
VALID_ARCHS = arm64
......@@ -12,6 +12,6 @@ PODS_TARGET_SRCROOT = ${PODS_ROOT}/../LocalPodSpec/GDRouter
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES
SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_ROOT}/../LocalPodSpec/GDToolBox/GDToolBox/Classes/ThirdParty/TalkingData" "${PODS_ROOT}/TSVoiceConverter/Sources/lib" "${PODS_XCFRAMEWORKS_BUILD_DIR}/Realm"
SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_ROOT}/../LocalPodSpec/GDToolBox/GDToolBox/Classes/ThirdParty/TalkingData" "${PODS_ROOT}/../LocalPodSpec/GDToolBox/GDToolBox/Classes/ThirdParty/WeChat" "${PODS_ROOT}/TSVoiceConverter/Sources/lib" "${PODS_XCFRAMEWORKS_BUILD_DIR}/Realm"
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
VALID_ARCHS = arm64
......@@ -45,6 +45,9 @@
#import "ObfuseTableBase64.h"
#import "TalkingData.h"
#import "VPImageCropperViewController.h"
#import "WechatAuthSDK.h"
#import "WXApi.h"
#import "WXApiObject.h"
#import "MJRefreshAutoFooter.h"
#import "MJRefreshBackFooter.h"
#import "MJRefreshComponent.h"
......
......@@ -830,6 +830,11 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
## TencentOpenAPI_Swift
Copyright 2019
## XCGLogger
The MIT License (MIT)
......
......@@ -999,6 +999,17 @@ THE SOFTWARE.
</dict>
<dict>
<key>FooterText</key>
<string>Copyright 2019
</string>
<key>License</key>
<string>MIT</string>
<key>Title</key>
<string>TencentOpenAPI_Swift</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict>
<key>FooterText</key>
<string>The MIT License (MIT)
Copyright (c) 2014 Dave Wood, Cerebral Gardens http://www.cerebralgardens.com/
......
......@@ -834,6 +834,11 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
## TencentOpenAPI_Swift
Copyright 2019
## UMCommon
Copyright 2011 - 2021 umeng.com. All rights reserved.
......
......@@ -1009,6 +1009,17 @@ THE SOFTWARE.
</dict>
<dict>
<key>FooterText</key>
<string>Copyright 2019
</string>
<key>License</key>
<string>MIT</string>
<key>Title</key>
<string>TencentOpenAPI_Swift</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict>
<key>FooterText</key>
<string>Copyright 2011 - 2021 umeng.com. All rights reserved.
</string>
<key>License</key>
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>${PODS_DEVELOPMENT_LANGUAGE}</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>3.5.11</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>${CURRENT_PROJECT_VERSION}</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>
#import <Foundation/Foundation.h>
@interface PodsDummy_TencentOpenAPI_Swift : NSObject
@end
@implementation PodsDummy_TencentOpenAPI_Swift
@end
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C"
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C"
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif
#import "QQApiInterface.h"
#import "QQApiInterfaceObject.h"
#import "sdkdef.h"
#import "TencentOAuth.h"
#import "TencentOpenApiUmbrellaHeader.h"
FOUNDATION_EXPORT double TencentOpenAPI_SwiftVersionNumber;
FOUNDATION_EXPORT const unsigned char TencentOpenAPI_SwiftVersionString[];
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/TencentOpenAPI_Swift
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/TencentOpenAPI_Swift/TencentOpenAPI_Swift/Classes"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/TencentOpenAPI_Swift
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
VALID_ARCHS = x86_64 armv7 arm64
framework module TencentOpenAPI_Swift {
umbrella header "TencentOpenAPI_Swift-umbrella.h"
export *
module * { export * }
}
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/TencentOpenAPI_Swift
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/TencentOpenAPI_Swift/TencentOpenAPI_Swift/Classes"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/TencentOpenAPI_Swift
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
VALID_ARCHS = x86_64 armv7 arm64
MIT License
Copyright (c) 2022 chenminjie92
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
# TencentOpenAPI_Swift
qqsdk
///
/// \file QQApiInterface.h
/// \brief QQApi接口简化封装
///
/// Created by Tencent on 12-5-15.
/// Copyright (c) 2012年 Tencent. All rights reserved.
///
#import <Foundation/Foundation.h>
#import "QQApiInterfaceObject.h"
typedef void (^sendResultBlock)(NSDictionary *result);
// 发送消息回调是否发送成功
typedef void(^QQApiInterfaceSendMessageResultBlock)(QQApiSendResultCode sendResultCode, NSString *message);
/**
\brief 处理来至QQ的请求及响应的回调协议
*/
@protocol QQApiInterfaceDelegate <NSObject>
/**
处理来至QQ的请求
*/
- (void)onReq:(QQBaseReq *)req;
/**
处理来至QQ的响应
*/
- (void)onResp:(QQBaseResp *)resp;
/**
处理QQ在线状态的回调
*/
- (void)isOnlineResponse:(NSDictionary *)response;
@end
/**
\brief 对QQApi的简单封装类
*/
@interface QQApiInterface : NSObject
/**
处理由手Q唤起的普通跳转请求
\param url 待处理的url跳转请求
\param delegate 第三方应用用于处理来至QQ请求及响应的委托对象
\return 跳转请求处理结果,YES表示成功处理,NO表示不支持的请求协议或处理失败
*/
+ (BOOL)handleOpenURL:(NSURL *)url delegate:(id<QQApiInterfaceDelegate>)delegate;
/**
处理由手Q唤起的universallink跳转请求
\param universallink 待处理的universallink跳转请求
\param delegate 第三方应用用于处理来至QQ请求及响应的委托对象
\return 跳转请求处理结果,YES表示成功处理,NO表示不支持的请求协议或处理失败
*/
+ (BOOL)handleOpenUniversallink:(NSURL*)universallink delegate:(id<QQApiInterfaceDelegate>)delegate;
/**
向手Q发起分享请求
\param req 分享内容的请求
\return 请求发送结果码
*/
+ (QQApiSendResultCode)sendReq:(QQBaseReq *)req;
/**
向手Q QZone结合版发起分享请求
\note H5分享只支持单张网络图片的传递
\param req 分享内容的请求
\return 请求发送结果码
*/
+ (QQApiSendResultCode)SendReqToQZone:(QQBaseReq *)req;
/**
向手Q发起设置QQ头像
\param req 分享内容的请求
\return 请求发送结果码
*/
+ (QQApiSendResultCode)sendMessageToQQAvatarWithReq:(QQBaseReq*)req;
+ (QQApiSendResultCode)sendMessageToQQAuthWithReq:(QQBaseReq*)req;
/**
向手Q发起绑群请求
\param req 请求的内容
\param resultBlock 请求回调
*/
+ (void)sendThirdAppBindGroupReq:(QQBaseReq *)req resultBlock:(sendResultBlock)resultBlock;
/**
向手Q发起加群请求
\param req 请求的内容
\param resultBlock 请求回调
*/
+ (void)sendThirdAppJoinGroupReq:(QQBaseReq *)req resultBlock:(sendResultBlock)resultBlock;
/**
向手Q发起解绑群请求
\param req 请求的内容
\param resultBlock 请求回调
*/
+ (void)sendThirdAppUnBindGroupReq:(QQBaseReq *)req resultBlock:(sendResultBlock)resultBlock;
/**
向手Q发起创建QQ频道的请求
\param req 请求的内容
\param resultBlock 回调发送结果
\return void
*/
+ (void)sendMessageToCreateQQGroupProWithMessageRequest:(SendMessageToQQReq *)messageRequest sendResultBlock:(QQApiInterfaceSendMessageResultBlock)sendResultBlock;
/**
向手Q发起加入QQ频道的请求
\param req 请求的内容
\param resultBlock 回调发送结果
\return void
*/
+ (void)sendMessageToJoinQQGroupProWithMessageRequest:(SendMessageToQQReq *)messageRequest sendResultBlock:(QQApiInterfaceSendMessageResultBlock)sendResultBlock;
/**
向手Q发起查询QQ频道openID的请求
\param req 请求的内容
\param resultBlock 请求回调
*/
+ (void)sendQueryQQGroupProInfo:(QQBaseReq *)req resultBlock:(sendResultBlock)resultBlock;
/**
向手Q发起组图分享到表情收藏
\param req 分享内容的请求
\return 请求发送结果码
*/
+ (QQApiSendResultCode)sendMessageToFaceCollectionWithReq:(QQBaseReq*)req;
/**
检测是否已安装QQ
\return 如果QQ已安装则返回YES,否则返回NO
\note SDK目前已经支持QQ、TIM授权登录及分享功能, 会按照QQ>TIM的顺序进行调用。
只要用户安装了QQ、TIM中任意一个应用,都可为第三方应用进行授权登录、分享功能。
第三方应用在接入SDK时不需要判断是否安装QQ、TIM。若有判断安装QQ、TIM的逻辑建议移除。
*/
+ (BOOL)isQQInstalled;
/**
检测是否已安装TIM
\return 如果TIM已安装则返回YES,否则返回NO
\note SDK目前已经支持QQ、TIM授权登录及分享功能, 会按照QQ>TIM的顺序进行调用。
只要用户安装了QQ、TIM中任意一个应用,都可为第三方应用进行授权登录、分享功能。
第三方应用在接入SDK时不需要判断是否安装QQ、TIM。若有判断安装QQ、TIM的逻辑建议移除。
*/
+ (BOOL)isTIMInstalled;
/**
检测QQ是否支持API调用
\return 如果当前安装QQ版本支持API调用则返回YES,否则返回NO
*/
+ (BOOL)isQQSupportApi;
/**
检测TIM是否支持API调用
\return 如果当前安装TIM版本支持API调用则返回YES,否则返回NO
*/
+ (BOOL)isTIMSupportApi __attribute__((deprecated("已过期, 建议删除调用,调用地方用YES替代。")));
/**
检测是否支持分享
\return 如果当前已安装QQ且QQ版本支持API调用 或者 当前已安装TIM且TIM版本支持API调用则返回YES,否则返回NO
*/
+ (BOOL)isSupportShareToQQ;
/**
检测是否支持分享到QQ结合版QZone
\return 如果当前已安装QQ且QQ版本支持API调用则返回YES,否则返回NO
*/
+ (BOOL)isSupportPushToQZone;
/**
启动QQ
\return 成功返回YES,否则返回NO
*/
+ (BOOL)openQQ;
/**
启动TIM
\return 成功返回YES,否则返回NO
*/
+ (BOOL)openTIM;
/**
获取QQ下载地址
如果App通过<code>QQApiInterface#isQQInstalled</code>和<code>QQApiInterface#isQQSupportApi</code>检测发现QQ没安装或当前版本QQ不支持API调用,可引导用户通过打开此链接下载最新版QQ。
\return iPhoneQQ下载地址
*/
+ (NSString *)getQQInstallUrl;
/**
获取TIM下载地址
如果App通过<code>QQApiInterface#isTIMInstalled</code>检测发现TIM没安装或当前版本TIM不支持API调用,可引导用户通过打开此链接下载最新版TIM。
\return iPhoneTIM下载地址
*/
+ (NSString *)getTIMInstallUrl;
#pragma mark - Log
/*! @brief 调用此函数可以导出QQSDK的Log到第三方中,用于定位问题
注意1:SDK会强引用这个block,注意不要导致内存泄漏,注意不要导致内存泄漏
注意2:调用过一次startLog by block之后,如果再调用一次任意方式的startLoad,会释放上一次logBlock,不再回调上一个logBlock
*
* @param logBlock 打印log的回调block
*/
+ (void)startLogWithBlock:(QQApiLogBolock)logBlock;
///停止回调打印
+ (void)stopLog;
///设置打印日志到文件开关on/off,如果不设置,默认不打印到文件
+ (void)setSwitchPrintLogToFile:(BOOL)on;
///日志文件目录
+ (NSString *)getLogFilePath;
@end
//
// TencentOpenApiUmbrellaHeader.h
// TencentOpenApi_IOS
//
// Created by jyukeizhang(张储祺) on 2020/7/27.
// Copyright © 2020 Tencent. All rights reserved.
//
#ifndef TencentOpenApiUmbrellaHeader_h
#define TencentOpenApiUmbrellaHeader_h
#import <Foundation/Foundation.h>
FOUNDATION_EXPORT double StaticLibraryModuleVersionNumber;
FOUNDATION_EXPORT const unsigned char StaticLibraryModuleVersionString[];
#import "QQApiInterface.h"
#import "QQApiInterfaceObject.h"
#import "SDKDef.h"
#import "TencentOAuth.h"
#endif /* TencentOpenApiUmbrellaHeader_h */
module TencentOpenApi{
umbrella header "TencentOpenApiUmbrellaHeader.h"
export *
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment