文档

问题排查

更新时间:

本章节介绍了如何排查使用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);

日志接口的使用建议如下:

  1. 线上环境默认仅采集hilog.LogLevel.ERROR及以上等级的日志

  2. 线上环境可以考虑使用配置下发的方式动态采集指定设备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主要有两个字段:

  1. code:错误码,代表错误类型、位置

  2. message:错误的具体信息,包括引发此错误的其他异常信息。

所有的错误码列表如下:

错误码

错误描述

可能原因

处理步骤

PUSH_001

未知错误

系统错误或者未发现的边界场景

  1. 记录错误的message

  2. 与EMAS技术支持同学沟通

PUSH_002

请先调用init方法初始化SDK

直接启动了其它Abliity,没有初始化

  1. 排查可能直接启动的Ability

  2. 增加SDK初始化配置

PUSH_003

无法找到推送数据

传入的推送参数有误

  1. 通过日志确认报错接口的参数

  2. 确认参数对应的推送数据真实存在

PUSH_101_XXX

功能接口异常

服务返回与预期不匹配

  1. 记录错误的code和message

  2. 与EMAS技术支持同学沟通

PUSH_102

参数异常

参数无效

  1. 查看错误message

  2. 通过日志确认报错接口的参数

  3. 确认参数是否正确

PUSH_103

设备未注册

在没有注册设备时,调用需要注册设备才能使用的API

  1. 检查是否遗漏设备注册流程

PUSH_201

设备未注册

注册流程被异常中断,导致程序状态不一致

  1. 重新注册设备

PUSH_202_XXX

设备注册失败

设备在服务侧状态异常

  1. 记录错误code和message

  2. 与EMAS技术支持同学沟通

PUSH_203_XXX

打开、关闭推送报错

设备在服务侧状态异常

  1. 记录错误code和message

  2. 与EMAS技术支持同学沟通

PUSH_301_XXX

HTTP请求失败

服务接口异常

  1. 稍后重试

PUSH_302_XXX

HTTP请求失败

设备与服务网络不通

  1. 确认网络无异常后,重试

PUSH_303_XXX

HTTP下载异常

系统下载通知图片失败

  1. 本次推送图片不会展示。无需处理

  2. 如果持续出现,记录错误code和message,与EMAS技术支持同学沟通

PUSH_401_XXX

阿里云推送通道建立失败

设备被拉黑

  1. 重启应用,重试

  2. 如果持续出现,记录错误code和message,与EMAS技术支持同学沟通

PUSH_402

阿里云推送通道未建立

未注册设备

  1. 确认注册设备流程是否正常

PUSH_403_XXX

PUSH_404_XXX

PUSH_405_XXX

接口调用失败

网络不稳定

  1. 稍后重试。

  2. 如果持续出现,记录错误code和message,与EMAS技术支持同学沟通

PUSH_501_XXX

dataPreferences接口调用失败

系统接口异常

  1. 查看具体错误code和message

  2. 根据错误信息,在鸿蒙文档查询处理

PUSH_502_XXX

notificationManager接口调用失败

系统接口异常

  1. 查看具体错误code和message

  2. 根据错误信息,在鸿蒙文档查询处理

PUSH_503_XXX

relationalStore接口调用失败

系统接口异常

  1. 查看具体错误code和message

  2. 根据错误信息,在鸿蒙文档查询处理

PUSH_504_XXX

image接口调用失败

系统接口异常

  1. 查看具体错误code和message

  2. 根据错误信息,在鸿蒙文档查询处理

PUSH_505_XXX

系统接口调用失败

系统接口异常

  1. 查看具体错误code和message

  2. 根据错误信息,在鸿蒙文档查询处理