SDK 初始化

最近更新时间:2025-12-12 18:02:11

我的收藏
本文将为您介绍如何初始化终端性能监控 Pro 日志 SDK。

配置和启动 SDK

由于 SDK 中的打印日志、KV 存储及文件压缩均是可替换模块,故在 SDK 初始化前,需要先配置好对应的依赖情况。
1. SDK 通过 TDIAGDepends 来管理模块的依赖情况。TDIAGDepends 实例需要提供实现 id<TDLoggingIMPProtocol>、id<RAFTKVStorageFactoryProtocol> 和 id<TDLogFilePackerProtocol> 的实例。例如:
#import <TDOS_Diagnose/TDOS_Diagnose.h> // 日志 SDK 模块

#import <TDOS_Diagnose/TDMMKVFactoryImpl.h> // MMKV 模块
#import <TDOS_Diagnose/TDOSLoggerProxy.h> // 打印日志模块
#import <TDOS_Diagnose/TDLogFilePackerImp.h> // 文件压缩模块


// 使用 SDK 提供的默认模块
TDOSLoggerProxy *loggerProxy = [TDOSLoggerProxy defaultProxy];
TDMMKVFactory *kvFactory = [TDMMKVFactoryImpl sharedInstance];
TDLogFilePackerImp *filePacker = [[TDLogFilePackerImp alloc] init];

// 创建一个 TDIAGDepends 实例子
TDIAGDepends *depends = [TDIAGDepends dependsWithLogImp:loggerProxy
kvFactoryImp:kvFactory
andFilePackerImp:filePacker];
上述例子中的 TDOSLoggerProxy、TDMMKVFactoryImpl 及 TDLogFilePackerImp 均是 SDK 提供的默认且实现了对应接口的实例。创建完 TDIAGDepends 后,便可以正常初始化 SDK 了。
2. 提供对应的 AppID 和 AppKey,此处直接使用平台产品注册时提供的 AppIDAppKey 即可。
// appid & appKey, 平台生成
NSString *appID = BUGLY_APPID;
NSString *appKey = BUGLY_APPKEY;
3. 这里需要提供一个 dataSource,该对象需要实现 TDLogSDKDataSource 协议,为 SDK 提供必要的数据。详情可以参考 TDLogSDKDataSource 中的定义。 其中必须实现 - (NSString *)guidForTDLog; 方法,该方法返回用户唯一ID,平台下发命令时填写此 ID。
// 生成捞日志模块配置实例,并初始化
TDLogSDKConfig *config = [TDLogSDKConfig configWithAppId:appID
appKey:appKey
dataSource:self
depends:depends];
注意:
默认情况下,日志模块使用的内部域名,对于 RumPro 用户而言,需要在 TDLogSDKConfig 中提供对应的域名类型:
/// 设置服务域名类型
@property (nonatomic,assign)TDLogServerHostType serverHostType;

/// 设置上报域名
https://cloud.bugly.qq.com

/// 自定义服务器域名
@property(nonatomic,strong)NSString *customServerHost;
4. 根据业务需求,可以配置对应的频率和流量控制策略,确保不会因为频繁上报日志占用过多的网络资源等。
// 开启频率控制(默认不限制),传空表示使用 SDK 默认频控策略:2次/5min,也可传入自定义策略;被限制后自动上报接口会回调失败。
// 举例:10min内最多只允许3次上报(采用令牌桶算法)
// TDLogFrequencyControlStrategy *strategy = [TDLogFrequencyControlStrategy new];
// strategy.times = 3;
// strategy.timeInterval = 10 * 60;
// 注意,该接口要求 TDLogSDKDataSource 必须实现 whitelistForAutoUploadTags 协议,提供自动上报 tag 白名单,避免影响必要上报。
[config setFrequencyLimitStatusForAutoUpload:YES
withCustomControlStrategy:nil]; // 推荐设置,确保不频繁自动上报
// 开启流量控制(默认不限制),传0表示禁止上报,传入负值代表不限制,被限制后自动上报接口会回调失败。
// 注意,该接口要求 TDLogSDKDataSource 必须实现 whitelistForAutoUploadTags 协议,提供自动上报 tag 白名单,避免影响必要上报。
[config setTrafficQuota24hLimitForAutoUpload:(200 * 1024 * 1024)
xgQuota:(50 * 1024 * 1024)]; // 可选,设置自动上报流量限额
5. 最后调用对应的方法启动 SDK,即可完成初始化工作。
[[TDLogSDK sharedInstance] startWithConfig:config];

配置本地打印日志模块

上述中的 TDOSLoggerProxy,实际上是对 TDOS_Diagnose 中的日志打印模块 TDOSLogger 所提供的 TDLoggingIMPProtocol 接口进行的封装实现。若要使用 TDOSLogger 模块,需要对该模块进行初始化,步骤如下:
1. 初始化打印日志模块。
// 初始化打印日志模块
TDOSLoggerConfig *loggerConfig = [TDOSLoggerConfig defaultConfig];
TDOSLogger *logger = [[TDOSLogger alloc] initWithConfig:loggerConfig];
2. 将实例化后的 logger 对象设置到上述过程中的 TDOSLoggerProxy 对象中,以正常使用 TDOSLogger 模块。
TDOSLoggerProxy *loggerProxy = [TDOSLoggerProxy defaultProxy];
[loggerProxy setLogger:logger];
注意:
Extension 项目接入特别说明:本 SDK 支持 iOS Extension,如使用默认的依赖模块 MMKV ,需在项目 Podfile 中添加如下脚本:
post_install do |installer|
installer.pods_project.targets.each do |target|
if target.name == "MMKV"
target.build_configurations.each do |config|
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)', 'MMKV_IOS_EXTENSION']
end
end
end
end
TDOSLogger 提供的更多特性请参见 API 说明