本文介紹如何使用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中查看崩潰信息。
    在目標移動運維監控實例的自定義查詢頁面,單擊查詢/分析。如果顯示有日志,則表示接入數據成功。查看日志

后續步驟