本文介绍如何通过手动集成方式添加依赖接入远程日志服务。
- 接入远程日志服务的iOS SDK可采用Pod集成和手动集成2种方式添加依赖。推荐使用Pod集成方式添加依赖,可大幅简化接入操作。 
- 如需使用Pod集成方式添加依赖,操作方法请参见iOS SDK接入(Pod集成)。 
前提条件
- 已创建工作空间/应用。 
- 已下载iOS应用配置文件。 
- 已下载SDK包,并确保包文件完整。SDK包文件列表如下: - AlicloudHAUtil.framework 
- AlicloudTLog.framework 
- AlicloudUtils.framework 
- AliHACore.framework 
- AliHALogEngine.framework 
- AliHAMethodTrace.framework 
- AliHAProtocol.framework 
- AliHASecurity.framework 
- AliyunOSSiOS.framework 
- RemoteDebugChannel.framework 
- TBJSONModel.framework 
- TBRest.framework 
- TRemoteDebugger.framework 
- UTDID.framework 
- UTMini.framework 
- ZipArchive.framework 
 
具体内容请参见下载SDK。
使用限制
- 仅支持iOS 8.0及以上的App。 
- 日志在手机端上最多存储7天。 
接入概述
添加依赖
1:在Xcode中,将SDK目录中的framework文件拖入Target目录,在弹出框勾选Copy items if needed选项。
2:打开Build Phases > Link Binary With Libraries,添加Xcode自带的公共包文件:
- libc++.tbd 
- libresolv.tbd 
- SystemConfiguration.framework 
接入服务
1:将iOS配置文件AliyunEmasServices-Info.plist拷贝至项目根目录。
iOS配置文件获取方式请参见下载配置文件。
2:在AppDelegate.m文件中引入头文件:
#import <AlicloudTLog/AlicloudTlogProvider.h>
#import <AlicloudHAUtil/AlicloudHAProvider.h>
#import <TRemoteDebugger/TRDManagerService.h>3:在AppDelegate.m文件的application:didFinishLaunchingWithOptions方法中,添加代码段,初始化SDK。
NSString *appVersion = @"x.x"; //配置项:App版本
NSString *channel = @"xx"; //配置项:渠道标记
NSString *nick = @"xx"; //配置项:用户昵称
[[AlicloudTlogProvider alloc] autoInitWithAppVersion:appVersion channel:channel nick:nick];
[AlicloudHAProvider start];
[TRDManagerService updateLogLevel:TLogLevelXXX]; //配置项:控制台可拉取的日志级别参数说明:
| 参数 | 说明 | 
| appVersion | 用于指定App的版本,上报至服务端,进行版本区分。 【数据类型】字符串 【格式要求】自定义 【取值范围】任意长度。 说明  该参数值将在控制台显示为下拉列表选项,建议短小凝练。 【是否必选】是 【是否可为空】否 【默认值】无 【大小写敏感】是。例如,vx.x和Vx.x不是一个版本。 【字符类型】英文大小写、数字。 说明  该参数不支持中文字符、特殊字符。 【示例】 | 
| channel | 用于指定渠道标识,上报至服务端,进行渠道区分。 【数据类型】字符串 【取值范围】任意长度 【是否必选】是 【是否可为空】否 【默认值】无 【字符类型】英文大小写、数字。 说明  该参数不支持中文字符、特殊字符。 【示例】 | 
| nick | 用于指定用户昵称,上报至服务端,进行用户区分。后续可能依据该参数,进行数据检索。 【数据类型】字符串 【取值范围】任意长度 【是否必选】是 【是否可为空】否 【默认值】无 【字符类型】英文大小写、数字。 说明  该参数不支持中文字符、特殊字符。 【命名规范】自定义 【示例】 | 
| TLogLevelXXX | 用于设置控制台可拉取的日志级别。日志级别说明请参见基本概念。 【数据类型】枚举型 【取值范围】 
 【是否必选】否 【默认取值】TLogLevelInfo 【示例】 | 
推荐使用autoInitWithAppVersion接口接入服务。如需使用initWithAppKey接口接入服务,须手动配置appKey/secret/tlogRsaSecret参数。
打开iOS配置文件,查询参数取值:
| 参数 | 配置文件字段 | 说明 | 
| appKey | emas.appKey | App标识。 | 
| secret | emas.appSecret | App认证信息。 | 
| tlogRsaSecret | appmonitor.tlog.rsaSecret | 远程日志公钥。 | 


执行编译
1:在项目的Build Setting中,将Allow Non-modular Includes In Framework Modules设置为YES。

2:执行编译。
- 编译过程中如出现 - duplicate symbol类型错误,确认本地依赖与CocoaPods管理的依赖是否重复;如是,则删除本地依赖。
- 如同时使用其他阿里云产品,可能会因为依赖中存在UTDID冲突,造成编译失败。解决办法请参见SDK UTDID冲突解决方案 
打印日志
1:如业务流程触发日志输出,需引入头文件:
#import <TRemoteDebugger/TLogBiz.h>
#import <TRemoteDebugger/TLogFactory.h>
#import <TRemoteDebugger/TRDManagerService.h>2:在适当位置添加代码,输出日志信息。示例代码:
TLogBiz *log = [TLogFactory createTLogForModuleName:@"YourModuleName"];
[log error:@"error message"];
[log warn:@"warn message"];
[log debug:@"debug message"];
[log info:@"info message"];| 选项 | 说明 | 
| YourModuleName | 指定保存日志信息的模块的名称。 | 
| error/warn/debug/info message | 根据实际场景,区分级别输出日志信息,便于后续按照级别进行日志信息查询。日志级别说明请参见基本概念。 | 
样例代码
远程日志服务iOS SDK接入工程样例请参见Demo工程。