## 示例代码

开发者可以参考**服务端**[示例代码](https://gitcode.com/harmonyos_samples/push-kit_-sample-code_-server-demo_-java)，了解推送Push场景化消息的过程。参考**客户端**[示例代码](https://gitcode.com/harmonyos_samples/push-kit-sample-code-clientdemo-arkts)，了解生成Push Token和接收Push场景化消息的功能和流程。

## 开发流程

开发者需要按照流程来完成应用的开发工作，**以[推送通知消息](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-send-alert)为例**，完整的开发流程如下：

展开

| 序号 | 步骤 | 说明 |
| --- | --- | --- |
| 1 | [开通推送服务](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-config-setting) | 在开发应用前，请先参考[操作步骤](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-config-setting#section13206419341)开通推送服务。其中**配置签名信息**时，请使用**手动签名**方式。  DevEco Studio 6.0.0 Beta5版本开始新增[自动签名](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-signing#section18815157237)方式。 |
| 2 | [申请通知消息自分类权益](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-apply-right#section16708911111611) | * 请根据[通知消息分类标准](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-apply-right#section1924971516101)，申请对应场景化消息权益。不同类型的消息有对应的通知消息分类标准与提醒方式和[通知消息推送数量管理规则](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-apply-right#section1128516504398)。如果您在申请过程中遇到任何问题，请发送邮件至[hwpush@huawei.com](mailto:hwpush@huawei.com)与我们取得联系。 * 若未开通权益，或开通的权益类型与[调用REST API推送场景化消息](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-scenes-send)时，请求体中携带的[category](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/push-scenariozed-api-request-param#section17371529101117)字段值不一致，消息将会默认归为**资讯营销类消息**，则会受到“单个应用每日每设备推送数量为2条或5条”的[频控](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-apply-right#section1128516504398)限制。若超出限制，设备将会收不到该条消息。 * 调测阶段建议设置[testMessage](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/push-scenariozed-api-request-param#section418321011212)为true，以防发送成功的消息被[频控](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/push-msg-freq-control)，设备将会收不到该条消息。 * 若消息被频控，请参考[频控FAQ](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-faq-5)进行问题排查。 |
| 3 | **客户端**获取Push Token | [调用推送服务REST API](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-jwt-token#section33041381718)时，需要设置token参数，对应的参数值参考[获取Push Token](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-get-token#section85173618105)进行获取。注意[Push Token变化的场景](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-get-token#section123091617105820)，若设备的Push Token发生变化但服务端调用推送服务REST API时未更新token的值，将会导致设备收不到该条消息。 |
| 4 | **客户端**请求通知授权 | 为确保应用可正常收到消息，应用发送通知前需调用[requestEnableNotification](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-notificationmanager#notificationmanagerrequestenablenotification10-1)()方法弹出提醒，告知用户需要允许接收通知消息。示例代码参见[开发步骤](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-send-alert#section17790171616598)中第2步。 |
| 5 | **客户端**配置skills标签 | 为确保点击消息可以正常跳转应用页面，在应用项目中完成skills标签配置，详情请参见[点击消息动作](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-send-alert#section697519219136)。 |
| 6 | **服务端**基于服务账号生成鉴权令牌 | [调用推送服务REST API](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-jwt-token#section33041381718)推送场景化消息时，请求头需设置Authorization参数，请参考[基于服务账号生成鉴权令牌](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-jwt-token)章节进行获取。 |
| 7 | **服务端**[调用REST API推送场景化消息](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-scenes-send) | 应用服务端参考HarmonyOS NEXT版本[请求体结构说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/push-scenariozed-api-request-struct)、[请求体参数说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/push-scenariozed-api-request-param)发送REST API请求。若请求失败请参考[响应参数](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/push-scenariozed-api-response)进行问题排查，若请求成功但设备未收到消息请参考[FAQ](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-faq-2)进行问题排查。 |
| 8 | （可选）开发消息回执 | Push服务端会将消息送达状态以回执消息形式发送给您的应用回执服务端，方便您获取消息下达端侧后的状态，定位问题。详情请参考[开发消息回执](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-msg-receipt)。 |
| 9 | （可选）**客户端**收到并处理消息 | 通过服务端请求传参和客户端的数据获取，可以进行服务端和客户端的[数据传递](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-send-alert#section108252081117)。 |

## （可选）其他消息类型

Push Kit支持的所有消息类型及使用场景可以参考[推送消息类型](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-kit-introduction#section121512516176)。

如通过应用内通话消息实现音视频通话，通过语音播报消息实现语音播报业务处理，通过后台消息实现配置更新等。

* 部分场景化消息类型需要您申请特殊权益才能正常发送，详情请参考[场景化消息权益简介](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-apply-right#section1937015602710)。
* 权益申请通过后，请参考对应消息类型的开发指南章节进行开发。

注意

如果您的项目之前已经基于HarmonyOS 3.x/4.x的系统接入过推送服务，现在需要给HarmonyOS Next/5.x及之后的系统版本推送通知，客户端和服务端仍然需要按照上述开发流程重新进行开发。