iOS SDK接入(Pod集成)
本文介紹如何使用Pod集成方式接入崩潰分析服務(wù)的iOS SDK。
iOS SDK接入可采用Pod集成和手動集成2種方式。推薦使用Pod集成方式接入崩潰分析服務(wù),可大幅簡化接入操作。
如需使用手動集成方式接入崩潰分析服務(wù)的iOS SDK,操作方法參見iOS SDK接入(手動集成)。
前提條件
已下載配置文件,請參見下載配置文件。
使用限制
僅支持iOS 8.0及以上的App。
推薦使用CocoaPods管理依賴的Xcode項目。
操作步驟
添加依賴
指定官方倉庫和阿里云倉庫。
source "https://github.com/CocoaPods/Specs.git" source "https://github.com/aliyun/aliyun-specs.git"
添加崩潰分析服務(wù)依賴。
pod 'AlicloudCrash' , '~> 1.2.0'
說明執(zhí)行
pod search AlicloudCrash
命令,查詢AlicloudCrash最新版本。執(zhí)行
pod update
命令,保存設(shè)置。
接入服務(wù)
將iOS配置文件AliyunEmasService-Info.plist拷貝至項目根目錄。
在AppDelegate文件的application:didFinishLaunchingWithOptions方法中初始化SDK。
引入頭文件:
#import <AlicloudCrash/AlicloudCrashProvider.h> #import <AlicloudHAUtil/AlicloudHAProvider.h>
添加代碼段:
NSString *appVersion = @"x.x"; //app版本,會上報 NSString *channel = @"xx"; //渠道標記,自定義,會上報 NSString *nick = @"xx"; //nick 昵稱,自定義,會上報 [[AlicloudCrashProvider alloc] autoInitWithAppVersion:appVersion channel:channel nick:nick]; [AlicloudHAProvider start];
參數(shù)
說明
appVersion
用于指定App的版本,上報至服務(wù)端,進行版本區(qū)分。
【數(shù)據(jù)類型】字符串
【格式要求】自定義
【取值范圍】任意長度。
說明該參數(shù)值將在控制臺顯示為下拉列表選項,建議短小凝練。
【是否必選】是
【是否可為空】否
【默認值】無
【大小寫敏感】是。例如,vx.x和Vx.x不是一個版本。
【字符類型】英文大小寫、數(shù)字。
說明不支持中文字符、特殊字符。
channel
用于指定渠道標識,上報至服務(wù)端,進行渠道區(qū)分。
【數(shù)據(jù)類型】字符串
【取值范圍】任意長度
【是否必選】是
【是否可為空】否
【默認值】無
【字符類型】英文大小寫、數(shù)字。
說明不支持中文字符、特殊字符。
nick
用于指定用戶昵稱,上報至服務(wù)端,進行用戶區(qū)分。后續(xù)可能依據(jù)該參數(shù),進行數(shù)據(jù)檢索。
【數(shù)據(jù)類型】字符串
【取值范圍】任意長度
【是否必選】是
【是否可為空】否
【默認值】無
【字符類型】英文大小寫、數(shù)字。
說明不支持中文字符、特殊字符。
【命名規(guī)范】自定義
添加高級設(shè)置
iOS SDK提供接口,用于上報自定義信息/錯誤。
//上報自定義信息 [AlicloudCrashProvider configCustomInfoWithKey:@"key" value:@"value"];//配置項:自定義環(huán)境信息(configCustomInfoWithKey/value) //按異常類型上報自定義信息 [AlicloudCrashProvider setCrashCallBack:^NSDictionary * _Nonnull(NSString * _Nonnull type) { return @{@"key":@"value"};//配置項:異常信息(key/value) }]; //上報自定義錯誤 NSError *error = [NSError errorWithDomain:@"customError" code:10001 userInfo:@{@"errorInfoKey":@"errorInfoValue"}]; [AlicloudCrashProvider reportCustomError:error];//配置項:自定義錯誤信息(errorWithDomain/code/userInfo)
具體說明請參見iOS SDK接口說明。
編譯
在項目的
Build Setting
中,將Allow Non-modular Includes In Framework Modules
設(shè)置為YES
。執(zhí)行編譯。
說明編譯過程中如出現(xiàn)
duplicate symbol
類型錯誤,確認本地依賴與CocoaPods管理的依賴是否重復;如是,則刪除本地依賴。如同時使用其他阿里云產(chǎn)品,可能會因為依賴中存在UTDID沖突,造成編譯失敗。解決辦法參見:SDK UTDID沖突解決方案。
功能驗證
iOS SDK接入操作完成后,需進行功能驗證。
編寫測試代碼,模擬/觸發(fā)移動端崩潰。例如:
NSMutableArray *array = @[]; [array addObject:nil];
說明更多內(nèi)容參考樣例代碼。
重啟移動端大概2分鐘后在控制臺查看是否顯示崩潰信息。
說明崩潰數(shù)據(jù)從采集到上傳到控制臺顯示,存在大約2~3分鐘延遲。
顯示崩潰數(shù)據(jù):SDK接入成功
數(shù)據(jù)未顯示:按照c步驟進行排查
在模擬/觸發(fā)崩潰及重啟移動設(shè)備期間,使用Charles抓包,查看能否捕獲包含
https://adash-emas.cn-hangzhou.aliyuncs.com/upload
的HTTP請求:捕獲:崩潰信息已上報。可能原因:后端未接入;Appkey/Secret信息有誤。
未捕獲:崩潰信息未上報。可能原因:SDK接入失敗;SDK未捕獲崩潰;數(shù)據(jù)發(fā)送失敗。請聯(lián)系技術(shù)支持解決。
樣例代碼
崩潰分析服務(wù)iOS SDK接入工程樣例請參見Demo工程。