You need to enable JavaScript to run this app.
导航
快速开始
最近更新时间:2024.03.26 21:00:01首次发布时间:2023.02.10 14:43:56

本文为您介绍 iOS 加载 SDK 的初始化以及实现图片加载的具体操作。

前提条件

您已完成加载 SDK 的集成准备

Swift 支持

请使用 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];

部分参数说明如下所示:

参数说明
appIDSDK 用于打点监控上报的最小单元,您可以通过控制台应用管理获取。通过此将数据进行隔离上报,同时通过 AppID 可以拉取对应的云控配置,比如客户端日志采样率、网络优化参数等。
channel渠道标识,根据实际业务填写。用于区分统计不同渠道来源的图片服务质量数据。比如可传入 huawei、oppo 等不同渠道标识。
appNameApp 名称,根据实际业务填写用于统计使用。
serviceVendor服务所在地区,根据实际业务填写。根据 App 是否发布在海外使用决定上报的日志的物理位置,默认国内,海外版本需要额外设置。如果 App 为非中国区域用户服务,则需修改设置为海外,采样后的日志则自动上报到海外地区。
tokentoken,请如实填写,您可通过应用管理获取该账号唯一的 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 实例

每个图片请求对应一个BDWebImageRequestBDWebImageManager 会内部调度决定取用缓存策略或下载策略,多个相同 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 图片,即通过图片 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支持动图调度(可以边下边播、边解边播)和设置循环次数。

按照优先级从高到低的顺序实现播放循环,具体内容如下所示:

  1. 用户自定义的 customLoop
  2. 用户自定义的 infinityLoop
  3. 图片如果在渐进式加载的过程中,则默认的循环次数为 1。
BDImageView *imageView = [BDImageView new];

imageView.infinityLoop = YES; //开启无限循环播放

imageView.customLoop = 0;  //自定义图片循环播放次数。默认值:0;当设置循环次数为 0 时,该属性不生效

[imageView bd_setImageWithURL:[NSURL URLWithString:@"http://xxx.xxx"]];