更新时间:2025-09-26 GMT+08:00

云日志服务iOS SDK

云日志服务iOS SDK提供了Objective-C & Swift语言上报日志的一系列方法,如果您需要收集和分析用户在网站上的信息,例如用户的浏览器、浏览行为记录、终端设备记录,设备异常记录,网络使用记录等,可以直接使用iOS SDK上报日志到LTS。

当前仅支持华北-北京四、华东-上海一、华南-广州的白名单用户,如有需要请提交工单申请。

传输协议

HTTPS

使用前提

  • 确认云日志服务的区域,请您根据所在区域,选择RegionName。
  • 获取华为云账号的项目ID(project id),步骤请参见API凭证
  • 获取需要上报到LTS的日志组ID日志流ID

版本更新说明

表1 版本更新说明

版本号

下载地址

检验信息下载地址

更新说明

系统

1.0.29

单击下载

单击下载

解决日志时间戳不准的问题。

iOS10、Xcode11及以上。

1.0.28

单击下载

单击下载

删除区域限制。

iOS10、Xcode11及以上。

1.0.27

单击下载

单击下载

优化性能。

iOS10、Xcode11及以上。

1.0.26

单击下载

单击下载

优化性能。

iOS10、Xcode11及以上。

1.0.24

单击下载

单击下载

  • 支持更多region:华东-上海一、华南-广州。
  • 优化内存使用、日志发送等。

iOS10、Xcode11及以上。

1.0.21

单击下载

单击下载

  • 优化初始化函数initWithConfig。
  • 为配置函数config添加废弃声明。

iOS10、Xcode11及以上。

1.0.19

单击下载

单击下载

  • 调整配置项阈值。
  • 修复兼容性问题。

iOS10、Xcode11及以上。

1.0.18

单击下载

单击下载

  • 增加设置调试日志级别接口:setLogLevel。
  • 在控制台输出配置项、上报接口参数、请求发送内容。
  • 上报接口参数labels支持嵌套。
  • 请求发送控制、数据库大小限制等优化。

iOS10、Xcode11及以上。

1.0.15

单击下载

单击下载

首次发布,提供四个接口:初始化 initWithConfig、配置 config、上报日志 report、立即上报日志 reportImmediately。

iOS10、Xcode11及以上。

安装iOS SDK

  1. 集成接入SDK。

    方法1:通过CocoaPods集成。

    1. 在Podfile中添加CocoaPods官方仓库。
      source 'https://github.com/CocoaPods/Specs.git'
    2. 在Podfile中添加依赖。
      pod 'LTSSDK' , '1.0.29'
    3. 在终端执行。
      pod install --repo-update
    方法2:手动集成。
    • 下载SDK,解压到指定目录。注:直接解压即可,不需要额外操作。
    • 将解压后的xcframework静态库添加到您的项目工程中。

      待导入的xcframework静态库必须和工作空间在相同的磁盘空间里,如果不在,您可以选择注意勾选“Copy items if needed”和“Create groups”,将待导入的xcframework库工程文件复制到工作空间。

  2. 初始化,详细参数请参考表4

    • Objective-C:初始化代码示例。
       // LTS参数配置
       LTSConfigParams *params = [[LTSConfigParams alloc] init];
       // 必填参数
       params.region = @"云日志服务的区域";
       params.projectId = @"账号的项目ID";
       params.groupId = @"LTS的日志组ID";
       params.streamId = @"LTS的日志流ID";
       // 注意:认证用的账号AK、SK硬编码到代码中或者明文存储都有很大的安全风险,建议密文存放,使用时解密,确保安全。
       params.accessKey = @"访问密钥";
       params.secretKey = @"秘密访问密钥";
       // 选填参数
       // params.url = @"url"; 
       // params.cacheThreshold = 200; 
       // params.timeInterval = 3;
       // params.reportWhenEnterBackgroundEnabled = YES;
       // params.reportWhenAPPLaunchEnabled = NO;
       // LTS初始化方法
       LTSSDK *lts = [[LTSSDK alloc] initWithConfig:params];
    • Swift:初始化代码示例。

      LTSSDK支持多实例日志上报机制,根据不同配置创建实例进行上报。

       // LTS参数配置
       let params = LTSConfigParams()
       // 必填参数
       params.region = "云日志服务的区域"
       params.projectId = "账号的项目ID"
       params.groupId = "LTS的日志组ID"
       params.streamId = "LTS的日志流ID"
       // 注意:认证用的账号AK、SK硬编码到代码中或者明文存储都有很大的安全风险,建议密文存放,使用时解密,确保安全。
       params.accessKey = "访问密钥"
       params.secretKey = "秘密访问密钥"
       // 选填参数
       // params.url = @"url";
       // params.cacheThreshold = 200
       // params.timeInterval = 3
       // params.reportWhenEnterBackgroundEnabled = true
       // params.reportWhenAPPLaunchEnabled = false
       // LTS初始化方法
       let lts = LTSSDK(config:params)

  3. 上报日志。

    LTS提供两种上报日志的方法。

    表2 两种上报日志的方法

    Method

    Description

    - (BOOL)report:(id)content labels:(nullable NSDictionary<NSString *, id> *)labels;

    上报日志:先存入本地数据库,根据配置中设定的策略实时上报。

    - (BOOL)reportImmediately:(id)content labels:(nullable NSDictionary<NSString *, id> *)labels;

    立即上报日志。

    表3 Parameters参数

    Name

    Description

    content

    日志内容。支持字典或字典数组;最外层键值对最多300个;字典转JSON字符串最大支持长度为30720,超出部分将被截断再上报。

    labels

    日志标签。支持字典或空值;最外层键值对最多50个;最外层key最大长度为64,支持字母、数字和下划线组合,首字符须是字母;字典转JSON字符串最大支持长度为30720,超出则该条日志无法上报。

    • Objective-C代码示例如下:
      //单个上报
      [lts report:@{@"content_key": @"content_value"} labels:@{@"label_key": @"label_value"}];
      [lts reportImmediately:@{@"content_key": @"content_value"} labels:@{@"label_key": @"label_value"}];
      
      //批量上报
      [lts report:@[@{@"content1_key": @"content1_value"}, @{@"content2_key": @"content2_value"}] labels:@{@"label_key": @"label_value"}];
      [lts reportImmediately:@[@{@"content1_key": @"content1_value"}, @{@"content2_key": @"content2_value"}] labels:@{@"label_key": @"label_value"}];
    • Swift代码示例如下:
      //单个上报
      lts.report(["content_key": "content_value"], labels: ["label_key": "label_value"])
      lts.reportImmediately(["content_key": "content_value"], labels: ["label_key": "label_value"])
      
      //批量上报
      lts.report([["content1_key": "content1_value"], ["content2_key": "content2_value"]], labels: ["label_key": "label_value"])
      lts.reportImmediately([["content1_key": "content1_value"], ["content2_key": "content2_value"]], labels: ["label_key": "label_value"])

配置参数说明

表4 初始化参数说明

参数名称

类型

是否必填

默认值

描述

projectId

NSString

必填

-

账号的项目ID。

accessKey

NSString

必填

-

账号的访问密钥,简称AK。注意:硬编码到代码中或者明文存储都有很大的安全风险,建议密文存放,使用时解密,确保安全。

secretKey

NSString

必填

-

账号的秘密访问密钥,简称SK。注意:硬编码到代码中或者明文存储都有很大的安全风险,建议密文存放,使用时解密,确保安全。

region

NSString

必填

-

LTS的服务区域。

groupId

NSString

必填

-

LTS的日志组ID。

streamId

NSString

必填

-

LTS的日志流ID。

url

NSString

选填

nil

用于上报的公网地址域名,支持带端口号,比如:https://lts-access.cn-north-4.myhuaweicloud.com:443;如未设置url,将根据region自动生成链接,格式如下:https://lts-access.{region}.myhuaweicloud.com

  • 使用SDK在跨云或本地上报日志时,端口使用443。
  • 使用华为云主机在华为云内网上报日志时,端口使用8102。

cacheThreshold

NSUInteger

选填

200条

当本地数据库日志存储条数达到该值会触发上报,取值范围为30-1000条。

timeInterval

NSUInteger

选填

3秒

定时器每隔该值会触发上报,取值范围为1-1800秒。

reportWhenEnterBackgroundEnabled

BOOL

选填

YES

是否开启APP切后台上报功能。

reportWhenAPPLaunchEnabled

BOOL

选填

NO

是否开启APP启动时上报功能。如需开启,请在UIApplicationDidFinishLaunchingNotification通知发送前完成配置。

上报日志策略说明

LTSSDK支持四种日志上报策略:阈值上报、定时上报、应用切后台和启动时上报,根据场景选择合适的值配置cacheThreshold、timeInterval、reportWhenEnterBackgroundEnabled、reportWhenAPPLaunchEnabled等参数。

开启调试

在开发过程中可以启用调试模式,借助控制台日志实时查看上报日志的记录情况,观察具体结果并根据需要进行调整。在初始化LTSSDK之前,调用类方法+(void)setLogLevel:(LTSLoggerLevel)logLevel设置调试级别:Debug、Info、Warn、Error、Off。

Objective-C语言示例代码:

#ifdef DEBUG
[LTSSDK setLogLevel:LTSLoggerLevelDebug];
#endif

Swift语言示例代码:

#if DEBUG
LTSSDK.setLogLevel(.debug)
#endif

参数获取方式

  • 区域表
    表5 区域表

    区域名称

    区域

    华北-北京四

    cn-north-4

    华东-上海一

    cn-east-3

    华南-广州

    cn-south-1

  • 日志组ID:登录云日志服务页面,选择“日志管理”,鼠标悬浮在日志组名称上,可查看日志组名称和日志组ID。
  • 日志流ID:单击“日志组名称”可查看日志流列表,鼠标悬浮在日志流名称上,可查看日志流名称和日志流ID。