本文介绍如何使用Pod集成方式接入iOS应用数据到日志服务移动运维监控。移动运维监控用于实时监控App崩溃等问题,并且支持智能分析,帮助您低成本、高效率地发现App应用中的各类隐患。

前提条件

已创建移动监控应用。具体操作,请参见添加应用

步骤一:集成SDK

(推荐)通过CocoaPods集成

  1. 在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'] 
  2. 保存并执行pod install --repo-update命令。
  3. 使用后缀为.xcworkspace的文件打开工程。

通过SDK文件方式集成

  1. 下载SDK文件
  2. 解压SDK文件后,将如下framework添加到项目中。
    AliyunLogCore.framework、AliyunLogCrashReporter.framework、AliyunLogOT.framework、AliyunLogProducer.framework、WPKMobi.xcframework。
  3. Other Linker Flags中,添加-Objc
    SDK集成
  4. 添加如下系统依赖库。
    CoreGraphics.framework、SystemConfiguration.framework、libc++、libz。SDK集成

步骤二:配置接入服务

  1. 在工程的AppDelegate.m文件导入头文件。
    #import <AliyunLogProducer/AliyunLogProducer.h>
  2. 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类定义了关键的配置字段。
      类型字段示例值说明
      配置参数instanceIdsls-****d60f您在日志服务移动运维监控平台上所添加的应用ID。更多信息,请参见获取应用ID
      endpointhttps://cn-hangzhou.log.aliyuncs.com日志服务Project所在地域的访问域名,此处必须添加https://前缀。如何获取,请参见公网服务入口
      重要 只支持公网服务入口。
      projectsls-ayasls-demo您在日志服务移动运维监控平台上添加应用时所绑定的日志服务Project。更多信息,请参见添加应用
      鉴权参数accessKeyIdLTAI****eYDw日志服务Project的AccessKey ID。如何获取,请参见访问密钥
      accessKeySecretlrRq****GOVM日志服务Project的AccessKey Secret。如何获取,请参见访问密钥
      securityToken124f****a369日志服务Project的访问密钥Token。使用STS方式接入时,需要配置。如何获取,请参见AssumeRole
    • SLSConfiguration
      SLSConfiguration类提供了SDK初始化额外参数配置的接口。
      类型字段/方法说明
      配置方法enableCrashReporter是否启用崩溃捕获功能。
      enableBlockDetection是否开启卡顿监控功能。
      spanProvider自定义Span的Resource和Attribute信息。
      环境配置envApp的环境信息,默认为default。

      一般开发环境配置为dev;线上环境配置为prod。

    • SLSCocoa
      SLSCocoa类提供了SDK初始化相关的全部参数配置、用户信息配置等接口。
      类别字段/方法说明
      单例sharedInstance获取SLSCocoa单例。
      初始化initialize:configuration:初始化SLSCocoa。
      凭证更新setCredentials:更新Credentials凭证信息,支持热更新。
      配置方法setUserInfo:更新用户信息。
  3. 通过STS方式配置credentials.accessKeyIdcredentials.accessKeySecretcredentials.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];
    }

步骤三:接入验证

  1. 编写测试代码,模拟或触发移动端崩溃。
    [self performSelector:@selector(die_die)];
  2. 重启移动端,然后等待大概2分钟后,您可以在日志服务控制台的目标Logstore中查看崩溃信息。
    在目标移动运维监控实例的自定义查询页面,单击查询/分析。如果显示有日志,则表示接入数据成功。查看日志

后续步骤