全部产品
云市场
云游戏

使用 iOS SDK

更新时间:2020-07-23 17:00:53

完成以下步骤进行 iOS 客户端诊断:

  1. 初始化诊断服务
  2. 设置用户 ID
  3. 写诊断日志
  4. 查看本地诊断日志
  5. 获取线上用户诊断日志

初始化诊断服务

诊断功能在使用之前需要进行初始化:

  1. #import <MPDiagnosis/MPDiagnoseAdapter.h>
  2. [MPDiagnoseAdapter initDiagnose];

诊断服务支持使用 移动同步消息推送 方式拉取诊断日志,两种方式的初始化代码不同。

移动同步方式初始化

若采用移动同步的方式拉取诊断日志,则在使用诊断功能之前需要进行初始化。

  1. #import <MPDiagnosis/MPDiagnoseAdapter.h>
  2. [MPDiagnoseAdapter initDiagnose];

消息推送方式初始化

您需要先接入消息推送组件,完成 消息推送初始化。然后,在接收到消息推送之后,进行如下方法调用:

  1. #import <APLog/APLogMgr.h>
  2. [[APLogMgr sharedInstance] handlePushDiagnosisCmd:[notification.userInfo objectForKey:@"content"]];

旧版本升级注意事项

10.1.32 版本之后不再需要添加 APLogUser 类的 Category 文件,中间层会实现包装,升级版本后请检查工程中是否存在旧版本配置,如果有请移除。下面为新版本应移除的配置。

Diagnose

设置用户 ID

诊断服务根据 用户 ID 捞取日志。

  1. MPaaSInterface 的实现中通过 userId 函数配置用户 ID。
    userid
  2. 当用户切换时,即 MPaaSInterfaceuserId 函数中配置的值发生变化时,调用以下函数:
    1. [MPDiagnoseAdapter userChange];
    详情可参考 MPDiagnosis 下的 MPDiagnoseAdapter.h 文件。

写诊断日志

调用以下方法在 App 关键链路写诊断日志:

  1. /**
  2. * Log a message with kAPLogLevelInfo level.
  3. *
  4. * @param message An NSString object that contains a printf-style string containing a log message and placeholders for the arguments.
  5. * @param ... The arguments displayed in the format string.
  6. */
  7. #define APLogInfo(tag,fmt, ...) \
  8. APLogToFile(tag, kAPLogLevelInfo, fmt, ##__VA_ARGS__)

详情可参考 APLog 下的 APLog.h 文件。

例如,可以在启动完成后,调用下面的语句进行诊断日志的写入:

  1. APLogInfo(@"mPaaS", @"Start Cost %d", time);
说明:
  • APLogInfo 写入的 log 默认不会在 Xcode 控制台打印,若希望在开发阶段控制台打印相关日志,可以在工程中添加 ConsoleLog 文件。
  • 出于安全考虑,若您希望应用上线后不打印任何日志(包括 NSLog 和 APLogInfo 打印的 log),可在生成应用 release 包时在工程中添加 RemoveNSLog 文件。

查看本地诊断日志

您可以在沙盒目录下找到诊断日志,如下图所示。该日志默认不会上报,只有在需要时才通过控制台下发指令拉取。

sss

说明:保存在客户端本地的诊断日志有 保存期限文件大小限制。客户端诊断 SDK 会在应用押后台或杀进程时按下述保存策略检查处理:
  • 保存期限: 默认保留 6 天。如果检测到前 3 天的日志文件总大小超过 30 MB,前 3 天的日志都会被删除。
  • 文件大小限制:默认不超过 100 MB。超过 100 MB 后,会按时间顺序从前到后删除前一半大小的日志。例如有 120 MB 的日志,会删除 60 MB。

获取在线用户诊断日志

应用发布上线后,要获取客户端本地诊断日志排查问题,可通过 mPaaS 控制台下发指令获取相关诊断日志。具体操作,查看 移动分析 > 日志拉取