概述
本指南说明如何将 OneSignal 推送通知集成到在华为应用市场分发的华为应用中。 这些说明适用于使用 Java 或 Kotlin 编写的原生应用。有关其他支持的 SDK,请参见:要求
- Android Studio
- 安装了”华为应用市场”的华为设备
- 已配置的 OneSignal 应用和平台
配置您的 OneSignal 应用和平台
推送通知所需设置 要开始使用 OneSignal 发送推送通知,您必须首先为您支持的所有平台配置 OneSignal 应用——Apple (APNs)、Google (FCM)、华为 (HMS) 和/或 Amazon (ADM)。如果您的组织已有 OneSignal 账户,请要求邀请您为管理员角色以配置应用。否则,请注册免费账户以开始使用。
配置 OneSignal 应用的分步说明。
配置 OneSignal 应用的分步说明。
您可以在单个 OneSignal 应用下管理多个平台(iOS、Android、华为、Amazon、Web)。
配置平台凭据
根据您的平台按照提示操作:
- Android:设置 Firebase 凭据
- iOS:p8 令牌(推荐) 或 p12 证书
- Amazon:生成 API 密钥
- 华为:授权 OneSignal
设置
1. 设置 OneSignal SDK
OneSignal Android SDK 设置
按照 OneSignal Android SDK 设置指南将我们的 SDK 实现到您的应用中。
请注意,发布到华为应用市场的应用构建不需要 Firebase/Google 设置。
2. 华为配置 (agconnect-services.json)
如果您的 Android Studio 项目中已经有来自设置其他华为服务的华为
agconnect-services.json,则可以跳过此步骤。

3. 生成签名证书指纹
如果您已经为其他华为服务将 SHA-256 证书指纹添加到华为的控制台,则可以跳过此步骤。


release 变体的 SHA-256。
- 可选但建议为您的
debug变体的SHA-256也复制,以便更快地进行测试。 - 您的项目中可能还有其他自定义变体,如果您需要对它们的推送支持,也请复制这些。


4. 添加华为 gradle 插件和依赖项
在 Android Studio 中打开您的根build.gradle(项目:),并在 buildscript { repositories } 和 allprojects { repositories } 下添加 maven {url 'https://developer.huawei.com/repo/'}
在 buildscript { dependencies } 下添加 classpath 'com.huawei.agconnect:agcp:1.6.5.300'
您的根 build.gradle 中总共应该有 3 行新内容,如下所示。

app/build.gradle 文件,并在 dependencies 部分下添加 implementation 'com.huawei.hms:push:6.3.0.304'。
同样在 app/build.gradle 文件中,在文件的最底部添加 apply plugin: 'com.huawei.agconnect'。
您的 app/build.gradle 中总共应该有 2 行新内容,如下所示。

其他配置步骤
与其他 HMS 推送库或您自己的 HmsMessageService 类的兼容性
需要时:
- 除了 OneSignal 之外,您的应用中还有另一个 HMS 推送 SDK/库
- 您有自己的
HmsMessageService
更多详细信息...
更多详细信息...
创建一个继承自 这是为了通过
HmsMessageService 的类(如果您还没有的话),并添加以下方法。Java
OneSignalHmsEventBridge 将 onNewToken 和 onMessageReceived 转发给 OneSignal。如果您之前没有继承自 HmsMessageService 的类,请确保将其添加到 <application> 标签下的 AndroidManifest.xml 中。AndroidManifest.xml
为华为应用市场构建省略 Google 库(可选)
更多详细信息...
更多详细信息...
- 选项 1
- 选项 2
如果您的应用仅在华为应用市场上可用,并且您希望省略 OneSignal 包含的任何 Google 相关依赖项,您可以在
app/build.gradle 中使用 implementation 的 exclude。首选 HMS 而不是 FCM(可选)
更多详细信息...
更多详细信息...
如果您在上面的华为应用市场构建中已经省略了 Google 库,则此步骤不适用。默认情况下,如果您的应用中包含 FCM 和 HMS,OneSignal 更倾向于使用 FCM。如果您希望将其更改为首选 HMS,可以将以下内容添加到您的
AndroidManifest.xml 中:华为故障排除
在测试时,确保将 OneSignal setLogLevel 方法 设置为 VERBOSE。 检查日志以查看抛出的任何错误和 华为通用错误代码。6003 错误
6003 错误
您可能需要创建调试或发布密钥库签名(选择正确的应用构建路径,
debug 或 release),以便在使用 OneSignal SDK 注册华为 pushToken 时避免 6003 错误。请参见 “配置签名” 部分notification_types: -25
notification_types: -25
"notification_types":-25 意味着 OneSignal 在等待华为 HMS 响应以获取推送令牌时超时。这很可能是由于另一个第三方 HMS 推送 SDK 或您自己的 HmsMessageService 获取了此事件而不是 OneSignal。请查看 有关如何检查此情况并在此情况下转发事件的步骤。notification_types: -28
notification_types: -28
这意味着应用中缺少推送所需的 HMS 类。只要在
build.gradle 中有 com.huawei.hms:push,就不会再发生这个特定错误。但是,如果您有一些激进的 Proguard 或 R8 设置,这可能会导致问题。如果您有的话,我们建议暂时关闭 minifyEnabled,看看这是否是问题的根源。另外,您不应该混合其他 HMS 库的主要发布版本。从 4 或 5 开始。确保不要有从 3 到 5 的混合,这会产生其他错误获取华为推送令牌时出错
获取华为推送令牌时出错
测试 OneSignal SDK 集成
本指南帮助您通过测试推送通知、订阅注册和应用内消息来验证 OneSignal SDK 集成是否正常工作。检查移动端订阅
刷新 OneSignal 控制台的订阅页面。
设置测试订阅
测试订阅有助于在发送消息之前测试推送通知。通过 API 发送测试推送
获取您的应用 API 密钥和应用 ID。
在您的 OneSignal 控制台中,转到 设置 > 密钥和 ID。
发送应用内消息
应用内消息让您可以在用户使用您的应用时与他们进行沟通。在设备上关闭或将您的应用切换到后台。
这是因为用户必须在新会话开始_之前_满足应用内受众条件。在 OneSignal 中,当用户在应用处于后台或关闭至少 30 秒后重新打开应用时,会开始一个新会话。更多详情,请参阅我们的应用内消息如何显示指南。
用户识别
之前,我们演示了如何创建移动端订阅。现在我们将扩展到使用 OneSignal SDK 在所有订阅(包括推送、电子邮件和短信)中识别用户。我们将涵盖外部 ID、标签、多渠道订阅、隐私和事件跟踪,以帮助您统一用户并跨平台与他们互动。分配外部 ID
使用外部 ID 通过您后端的用户标识符在设备、电子邮件地址和电话号码之间一致地识别用户。这确保您的消息传递在各个渠道和第三方系统中保持统一(对集成特别重要)。 每次您的应用识别用户时,使用我们 SDK 的login 方法设置外部 ID。
OneSignal 为订阅(订阅 ID)和用户(OneSignal ID)生成唯一的只读 ID。当用户在不同设备上下载您的应用、订阅您的网站,和/或在您的应用之外提供电子邮件地址和电话号码时,将创建新的订阅。强烈建议通过我们的 SDK 设置外部 ID,以在用户的所有订阅中识别用户,无论订阅是如何创建的。
添加数据标签
标签是字符串数据的键值对,您可以使用它们来存储用户属性(如username、role 或偏好)和事件(如 purchase_date、game_level 或用户交互)。标签支持高级消息个性化和分组,允许更高级的用例。
在您的应用中发生事件时,使用我们 SDK 的addTag 和 addTags 方法设置标签。
在这个示例中,用户达到了第 6 级,可以通过名为 current_level 的标签识别,其值设置为 6。




添加电子邮件和/或短信订阅
之前我们了解了我们的 SDK 如何创建移动端订阅来发送推送和应用内消息。您还可以通过创建相应的订阅,通过电子邮件和短信渠道联系用户。- 使用
addEmail方法创建电子邮件订阅。 - 使用
addSms方法创建短信订阅。

多渠道沟通的最佳实践
- 在添加电子邮件或短信订阅之前获得明确同意。
- 向用户解释每个沟通渠道的好处。
- 提供渠道偏好,让用户可以选择他们偏好的渠道。
隐私和用户同意
要控制 OneSignal 何时收集用户数据,请使用 SDK 的同意管控方法:setConsentRequired(true):阻止数据收集直到获得同意。setConsentGiven(true):一旦获得同意即启用数据收集。
提示推送权限
不要在应用打开时立即调用requestPermission(),而是采取更策略性的方法。在请求权限之前,使用应用内消息解释推送通知的价值。
有关最佳实践和实现细节,请参阅我们的提示推送权限指南。
监听推送、用户和应用内事件
使用 SDK 监听器来响应用户操作和状态变化。 SDK 提供了几个事件监听器供您使用。更多详情请参阅我们的SDK 参考指南。推送通知事件
addClickListener():检测通知被点击时。对深度链接有帮助。addForegroundLifecycleListener():控制通知在前台的行为方式。
用户状态变化
addObserver()用于用户状态:检测外部 ID 设置时。addPermissionObserver():跟踪用户与原生推送权限提示的特定交互。addObserver()用于推送订阅:跟踪推送订阅状态变化时。
应用内消息事件
addClickListener():处理应用内点击操作。适用于深度链接或跟踪事件。addLifecycleListener():跟踪应用内消息的完整生命周期(显示、点击、关闭等)。
高级设置和功能
探索更多功能以增强您的集成:移动端 SDK 设置和参考
通过查看移动端推送设置指南,确保您已启用所有关键功能。 有关可用方法和配置选项的完整详细信息,请访问移动端 SDK 参考。恭喜!您已成功完成移动端 SDK 设置指南。
需要帮助?与我们的支持团队聊天或发送邮件至
support@onesignal.com请包含以下信息:- 您遇到的问题详情以及复现步骤(如有)
- 您的 OneSignal 应用 ID
- 外部 ID 或订阅 ID(如适用)
- 您在 OneSignal 控制台中测试的消息 URL(如适用)
- 任何相关的日志或错误信息















