本章节介绍了如何排查使用HarmonyOS SDK时的问题。
功能描述
目前SDK侧主要提供日志和错误码两种方式进行问题排查。
日志输出
SDK提供HiLog日志输出和接口日志输出。
HiLog日志输出
SDK提供开关将SDK日志输出到HiLog方便查看,示例代码如下:
import { aliyunPushLog } from '@aliyun/push';
aliyunPushLog.enableHiLogLogger();
此方法建议在SDK初始化配置之前调用,建议仅在开发测试版本中使用。
接口日志输出
SDK提供addLogger和removeLogger方法来添加、移除日志接口。示例代码如下:
import { aliyunPushLog, Logger } from '@aliyun/push'
import hilog from '@ohos.hilog'
class MyLogger implements Logger {
print(domain: number, tag: string, level: hilog.LogLevel, msg: string): void {
// 这里以输出到Hilog为例,具体实现需参考应用使用的日志采集系统
if (level >= hilog.LogLevel.ERROR) {
switch (level) {
case hilog.LogLevel.FATAL:
hilog.fatal(domain, tag, msg);
break;
case hilog.LogLevel.ERROR:
default:
hilog.error(domain, tag, msg);
break;
}
}
}
}
const logger = new MyLogger();
// 添加日志接口
aliyunPushLog.addLogger(logger);
// 移除日志接口
aliyunPushLog.removeLogger(logger);
日志接口的使用建议如下:
线上环境默认仅采集hilog.LogLevel.ERROR及以上等级的日志
线上环境可以考虑使用配置下发的方式动态采集指定设备hilog.LogLevel.INFO及以上等级的日志
日志参数说明
SDK日志的domain配置为0xF101。
SDK日志的主要tag为PS,是SDK的接口输入输出日志。
SDK调用失败或者推送异常都会输出hilog.LogLevel.ERROR级别日志。
错误码
SDK在接口调用失败时,会抛出PushError错误。以注册设备接口为例,代码如下:
import { aliyunPush, PushError } from '@aliyun/push';
aliyunPush.register((err: PushError | undefined) => {
if (err) {
console.error(`注册设备失败,错误码:${err.code} 错误信息${err.message}`);
return;
}
console.info(`注册设备成功,设备ID为${aliyunPush.getDeviceId()}`);
});
PushError主要有两个字段:
code:错误码,代表错误类型、位置。
message:错误的具体信息,包括引发此错误的其他异常信息。
所有的错误码列表如下:
错误码 | 错误描述 | 可能原因 | 处理步骤 |
PUSH_001 | 未知错误 | 系统错误或者未发现的边界场景 |
|
PUSH_002 | 请先调用init方法初始化SDK | 直接启动了其它Abliity,没有初始化 |
|
PUSH_003 | 无法找到推送数据 | 传入的推送参数有误 |
|
PUSH_004 | 请先注册设备 | 未调用aliyunPush.register方法 |
|
PUSH_005 | 通知扩展数据传递的不是阿里云推送的数据 | 通知扩展消息不是通过阿里云移动图送平台推送的 |
|
PUSH_101_XXX | 功能接口异常 | 服务返回与预期不匹配 |
|
PUSH_102 | 参数异常 | 参数无效 |
|
PUSH_103 | 设备未注册 | 在没有注册设备时,调用需要注册设备才能使用的API |
|
PUSH_201 | 设备未注册 | 注册流程被异常中断,导致程序状态不一致 |
|
PUSH_202_XXX | 设备注册失败 | 设备在服务侧状态异常 |
|
PUSH_203_XXX | 打开、关闭推送报错 | 设备在服务侧状态异常 |
|
PUSH_301_XXX | HTTP请求失败 | 服务接口异常 |
|
PUSH_302_XXX | HTTP请求失败 | 设备与服务网络不通 |
|
PUSH_303_XXX | HTTP下载异常 | 系统下载通知图片失败 |
|
PUSH_401_XXX | 阿里云推送通道建立失败 | 设备被拉黑 |
|
PUSH_402 | 阿里云推送通道未建立 | 未注册设备 |
|
PUSH_403_XXX PUSH_404_XXX PUSH_405_XXX | 接口调用失败 | 网络不稳定 |
|
PUSH_501_XXX | dataPreferences接口调用失败 | 系统接口异常 |
|
PUSH_502_XXX | notificationManager接口调用失败 | 系统接口异常 |
|
PUSH_503_XXX | relationalStore接口调用失败 | 系统接口异常 |
|
PUSH_504_XXX | image接口调用失败 | 系统接口异常 |
|
PUSH_505_XXX | 系统接口调用失败 | 系统接口异常 |
|