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"]];