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