本文介绍如何使用Pod集成方式接入iOS应用数据到日志服务移动运维监控。移动运维监控用于实时监控App崩溃等问题,并且支持智能分析,帮助您低成本、高效率地发现App应用中的各类隐患。
前提条件
已创建移动监控应用。具体操作,请参见添加应用。步骤一:集成SDK
(推荐)通过CocoaPods集成
- 在Xcode工程的Podfile中添加如下内容。
本文以AliyunLogProducer 3.1.14为例。更多信息,请参见Aliyun Log iOS Release。
// 添加aliyun-specs source。 source 'https://github.com/aliyun/aliyun-specs.git' // 添加CocoaPods source。 source 'https://github.com/CocoaPods/Specs.git' pod 'AliyunLogProducer', '~> 3.1.14', :subspecs => ['CrashReporter']
- 保存并执行
pod install --repo-update
命令。 - 使用后缀为.xcworkspace的文件打开工程。
通过SDK文件方式集成
- 下载SDK文件。
- 解压SDK文件后,将如下framework添加到项目中。AliyunLogCore.framework、AliyunLogCrashReporter.framework、AliyunLogOT.framework、AliyunLogProducer.framework、WPKMobi.xcframework。
- 在Other Linker Flags中,添加-Objc。
- 添加如下系统依赖库。CoreGraphics.framework、SystemConfiguration.framework、libc++、libz。
步骤二:配置接入服务
- 在工程的AppDelegate.m文件导入头文件。
#import <AliyunLogProducer/AliyunLogProducer.h>
- 在AppDelegate.m文件的application:(UIApplication *)application didFinishLaunchingWithOptions方法中初始化SDK。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. SLSCredentials *credentials = [SLSCredentials credentials]; credentials.endpoint = @"your endpoint"; credentials.project = @"your project"; credentials.accessKeyId = @"your access key id"; credentials.accessKeySecret = @"your access key secret"; credentials.instanceId = @"your instance id"; [[SLSCocoa sharedInstance] initialize:credentials configuration:^(SLSConfiguration * _Nonnull configuration) { // 开启崩溃捕获功能。 configuration.enableCrashReporter = YES; // 开启卡顿监控功能。 configuration.enableBlockDetection = YES; }]; return YES; }
其中,SLSCredentials 类和SLSCocoa类说明如下:- SLSCredentials SLSCredentials类定义了关键的配置字段。
类型 字段 示例值 说明 配置参数 instanceId sls-****d60f 您在日志服务移动运维监控平台上所添加的应用ID。更多信息,请参见获取应用ID。 endpoint https://cn-hangzhou.log.aliyuncs.com 日志服务Project所在地域的访问域名,此处必须添加 https://
前缀。如何获取,请参见公网服务入口。重要 只支持公网服务入口。project sls-ayasls-demo 您在日志服务移动运维监控平台上添加应用时所绑定的日志服务Project。更多信息,请参见添加应用。 鉴权参数 accessKeyId LTAI****eYDw 日志服务Project的AccessKey ID。如何获取,请参见访问密钥。 accessKeySecret lrRq****GOVM 日志服务Project的AccessKey Secret。如何获取,请参见访问密钥。 securityToken 124f****a369 日志服务Project的访问密钥Token。使用STS方式接入时,需要配置。如何获取,请参见AssumeRole。 - SLSConfigurationSLSConfiguration类提供了SDK初始化额外参数配置的接口。
类型 字段/方法 说明 配置方法 enableCrashReporter 是否启用崩溃捕获功能。 enableBlockDetection 是否开启卡顿监控功能。 spanProvider 自定义Span的Resource和Attribute信息。 环境配置 env App的环境信息,默认为default。 一般开发环境配置为dev;线上环境配置为prod。
- SLSCocoaSLSCocoa类提供了SDK初始化相关的全部参数配置、用户信息配置等接口。
类别 字段/方法 说明 单例 sharedInstance 获取SLSCocoa单例。 初始化 initialize:configuration: 初始化SLSCocoa。 凭证更新 setCredentials: 更新Credentials凭证信息,支持热更新。 配置方法 setUserInfo: 更新用户信息。
- SLSCredentials
- 通过STS方式配置credentials.accessKeyId、credentials.accessKeySecret和credentials.securityToken信息。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. SLSCredentials *credentials = [SLSCredentials credentials]; // instanceId为必填参数。 credentials.instanceId = @"your instance id"; // 以下参数可不填。 credentials.endpoint = @"your endpoint"; credentials.project = @"your project"; credentials.accessKeyId = @"your access key id"; credentials.accessKeySecret = @"your access key secret"; [[SLSCocoa sharedInstance] initialize:credentials configuration:^(SLSConfiguration * _Nonnull configuration) { // 开启崩溃捕获功能。 configuration.enableCrashReporter = YES; // 开启卡顿监控功能。 configuration.enableBlockDetection = YES; }]; return YES; } // 可以在请求相关信息后,发起调用。 - (void) updateSLS { SLSCredentials *credentials = [SLSCredentials credentials]; // (可选)更新AccessKey。 credentials.accessKeyId = @"your access key id"; credentials.accessKeySecret = @"your access key secret"; //针对通过STS方式获取的AccessKey,需配置如下内容。 credentials.securityToken = @"your access security token"; // (可选)更新Project等信息。 credentials.endpoint = @"your endpoint"; credentials.project = @"your project"; [[SLSCocoa sharedInstance] setCredentials:credentials]; }
步骤三:接入验证
- 编写测试代码,模拟或触发移动端崩溃。
[self performSelector:@selector(die_die)];
- 重启移动端,然后等待大概2分钟后,您可以在日志服务控制台的目标Logstore中查看崩溃信息。在目标移动运维监控实例的自定义查询页面,单击查询/分析。如果显示有日志,则表示接入数据成功。