本文为您介绍 iOS 加载 SDK 的初始化以及实现图片加载的具体操作。
您已完成加载 SDK 的集成准备。
请使用 Modular Header 完成 Swift 支持并接入 SDK 能力。
请完成 iOS 加载 SDK 的初始化,代码示例如下所示:
注意
初始化监控模块 BDAutoTrack 时会采集用户信息,请确保您采集用户信息之前已经获得用户授权。合规建议:用户授权后再进行监控模块的初始化,取得用户授权前所有信息不会采集,预置事件也不会被采集。
// 初始化监控模块 BDAutoTrackConfig *config = [BDAutoTrackConfig configWithAppID:appID launchOptions:nil]; config.channel = @"xxx"; //渠道 config.appName = @"xxx"; //APP名称 config.showDebugLog = NO; // 是否打印debug日志 config.serviceVendor = BDAutoTrackServiceVendorCN; //服务所在地区 config.logNeedEncrypt = YES ; // 是否加密日志 config.appID = @"xxx"; //应用ID [BDAutoTrack startTrackWithConfig:config]; // 配置图片库 SDK 的使用参数并开始使用 TTSDKImagexConfiguration *imagexConfig = [TTSDKImagexConfiguration defaultImagexConfig]; imagexConfig.token = @"xxxxxxx"; // 传入获取的 Token 值 imagexConfig.authCodes = @[@"xxxx", @"xxxx", @"xxxx"]; // 传入获取的授权码 TTSDKConfiguration *config = [TTSDKConfiguration defaultConfigurationWithAppID:@"xxx"]; //传入获取的应用 ID config.imagexConfiguration = imagexConfig; config.bizType = TTSDKServiceBizType_Image; config.shouldInitAppLog = NO; // 若您外部已经初始化监控模块,请设置该项为 NO [TTSDKManager startWithConfiguration:config];
部分参数说明如下所示:
参数 | 说明 |
---|---|
appID | SDK 用于打点监控上报的最小单元,您可以通过控制台应用管理获取。通过此将数据进行隔离上报,同时通过 AppID 可以拉取对应的云控配置,比如客户端日志采样率、网络优化参数等。 |
channel | 渠道标识,根据实际业务填写。用于区分统计不同渠道来源的图片服务质量数据。比如可传入 huawei、oppo 等不同渠道标识。 |
appName | App 名称,根据实际业务填写用于统计使用。 |
serviceVendor | 服务所在地区,根据实际业务填写。根据 App 是否发布在海外使用决定上报的日志的物理位置,默认国内,海外版本需要额外设置。如果 App 为非中国区域用户服务,则需修改设置为海外,采样后的日志则自动上报到海外地区。 |
token | token,请如实填写,您可通过应用管理获取该账号唯一的 Token 值。 |
authCodes | 授权码,请如实填写,您可通过 License 授权管理获取购买 License 后下载至本地的授权码。 注意 建议您在授权码到期前完成续期操作,并在 SDK 中及时更新为最新授权码,以免影响您的业务使用。 |
如果图片库打点监控的信息上传成功,会有类似以下日志输出:
15:59:31:300 [Rangers:10000798]<DEBUG>[Event] storing successful. 15:59:31:300 [Rangers:10000798]<DEBUG>[Event] storing event_v3 (imagex_load_monitor_error)
每个图片请求对应一个BDWebImageRequest
,BDWebImageManager
会内部调度决定取用缓存策略或下载策略,多个相同 request 内部仅下载一次。支持设置超时时间、重试备选 URL、重试次数以及缓存策略等。代码示例如下所示:
说明
BDWebImageManager 类主要用于管理图片下载和缓存功能。
BDWebImageRequest *request = [[BDWebImageRequest alloc] initWithURL:url]; request.timeoutInterval = 3; // 请求超时时间设置 request.cacheName = @"xxx"; // 对应的缓存实例的名字,manager 会根据 cacheName 分组缓存,使用前确保向 BDWebImageManager 注册对应缓存实例 request.bizTag = @"xxx"; // app 业务标识,为接入方自定义数据,先优先使用此设置,其次是 @p BDWebImageManger.bizTagURLFilterBlock() 的返回值 request.sceneTag = @"xxx"; // app 场景标识,为接入方自定义数据 request.customParam = @{@"xxx" : @"xxx"}; // 业务自定义夹带上报数据字段 request.requestHeaders = @{@"xxx" : @"xxx"}; // 每个请求单独带上自定义的 HTTP Request Headers request.option = BDImageRequestDefaultOptions; // 请求选项设置,支持的子项设置有网络下载优先级配置、控件设置、渐进式加载等 request.isMonitorDecodedImageQuality = NO; // 是否开启黑白屏监控,默认关闭 request.randomSamplingPointCount = 30; // 随机采样解码后图片的像素个数,默认为 30
加载 URL 图片,即通过图片 URL 从网络加载一张完整的图片。代码示例如下所示:
- (BDWebImageRequest *)bd_setImageWithURL:(NSURL *)imageURL alternativeURLs:(NSArray *)alternativeURLs placeholder:(UIImage *)placeholder options:(BDImageRequestOptions)options timeoutInterval:(CFTimeInterval)timeoutInterval cacheName:(NSString *)cacheName transformer:(BDBaseTransformer *)transformer progress:(BDImageRequestProgressBlock)progress completion:(BDImageRequestCompletedBlock)completion;
加载动图需要显示控件支持,请您将原生UIImageView
替换为BDImageView
控件。iOS 加载 SDK 支持加载的动图格式有:gif、avif、heif、awebp。BDImageView
支持动图调度(可以边下边播、边解边播)和设置循环次数。
按照优先级从高到低的顺序实现播放循环,具体内容如下所示:
customLoop
。infinityLoop
。BDImageView *imageView = [BDImageView new]; imageView.infinityLoop = YES; //开启无限循环播放 imageView.customLoop = 0; //自定义图片循环播放次数。默认值:0;当设置循环次数为 0 时,该属性不生效 [imageView bd_setImageWithURL:[NSURL URLWithString:@"http://xxx.xxx"]];