从Push接口到PushV2接口迁移指南

该文档介绍了阿里云移动推送服务从 PushV1 升级到 PushV2 的必要性与核心改进,包括结构化参数设计、精简参数体系和增强推送能力(如新增持续推送)。同时,文档详细说明了迁移所需的工作,涵盖接口调整、参数重构、推送方式适配及测试建议,以确保平滑过渡。

为什么要升级到 PushV2

阿里云移动推送服务 PushV2 是在 V1 版本基础上进行的大量升级和优化。V1 版本在长期使用过程中暴露出一些设计上的不足,主要体现在:

  • V1 将所有推送参数平铺在同一层级,难以管理

  • V1 存在历史遗留的废弃参数,增加了理解和使用成本

  • V1 对于透传消息和通知消息两种推送类型的组合传参处理复杂

PushV2 的核心优势

结构化的参数设计

  • 采用层次化的参数结构,将推送配置分为 Target(目标)、Message(透传消息)、Notification(通知消息)、Options(选项)等清晰的模块

  • 平台特定参数统一归类到对应的配置对象中(如 IosAndroidHmos

  • 参数命名更加规范和直观,例如Android厂商通道必填参数AndroidPopupActivity改为Android.VendorChannelActivity

精简高效的参数体系

  • 移除所有废弃参数,只保留有效和必要的配置项

  • 减少参数冗余,降低学习和使用成本

  • 提供更清晰的参数文档和示例

增强的推送能力

  • 新增持续推送(Continuous Push)功能,支持创建一次消息模板后向多批设备推送,大幅提升大规模推送的效率

  • 支持立即推送、定时推送、持续推送三种推送方式,满足不同业务场景需求

优化的传参逻辑

  • 统一的参数验证机制

  • 更合理的默认值设置

  • 更友好的错误提示

MassPushV2 请求对象复用

  • PushTask对象可以直接复用到新版批量推送接口

迁移到 PushV2 涉及的工作

1. 接口调用方式调整

核心变化

  • V1 使用 Push 接口,V2 使用 PushV2 接口

  • 请求参数从平铺结构改为嵌套的 PushV2Request 对象

  • 响应结果结构保持类似,仍返回 MessageId 等关键信息

代码改动

  • 更新 SDK 依赖版本

  • 修改推送请求的构建方式,使用新的参数结构

  • 调整参数映射关系

2. 参数映射和重构

平台通用参数

  • AppKey:保持不变

  • Target:目标类型和值的设置方式调整为 Target 对象

  • TitleBody:分别归类到 MessageNotification 对象中

  • PushTimeExpireTimeJobKey:此类推送选项归类到Options对象中

iOS 平台参数

  • IosRelevanceScoreNotification.Ios.RelevanceScore

  • IosBadgeNotification.Ios.Badge

  • IosMusicNotification.Ios.Music

  • iOSLiveActivityEventNotification.Ios.LiveActivity.Event

Android 平台参数

  • 各厂商通道参数从平铺改为嵌套在 Notification.Android.Options

  • 华为参数:Notification.Android.Options.Huawei.*

  • 小米参数:Notification.Android.Options.Xiaomi.*

  • OPPO 参数:Notification.Android.Options.Oppo.*

  • 阿里云自有通道参数:Notification.Android.Options..*

  • 其他厂商参数类似调整

HarmonyOS 平台参数

  • 统一归类到 Notification.Hmos 对象

  • 参数命名和结构更加规范

3. 推送方式适配

立即推送

  • V1:默认行为

  • V2:默认行为或设置 PushTask.Action = "PUSH_IMMEDIATELY"(默认值)

定时推送

  • V1:设置 PushTime 参数

  • V2:设置 PushTask.Action = "SCHEDULED_PUSH" 并在 Options.PushTime 中指定时间

持续推送(新增)

  • V2 新增功能,分两步操作:

    1. 创建持续推送任务:Action = "CREATE_CONTINUOUS_PUSH"

    2. 执行批次推送:Action = "CONTINUOUS_PUSH" 并指定 MessageId

4. 推送类型适配

透传消息(只发在线)

  • V1:设置PushType = "MESSAGE"StoreOffline = false

  • V2:设置Message对象

透传消息(离线保存)

  • V1:设置PushType = "MESSAGE"StoreOffline = true

  • V2:设置Message对象并在 Options.ExpireTime 中指定过期时间

通知消息

  • V1:设置PushType = "NOTICE"

  • V2:设置Notification对象

消息离线转通知

  • V1:设置PushType = "MESSAGE"AndroidRemind = trueiOSRemind = true

  • V2:同时设置Message对象和Notification对象

迁移建议

完成功能验证

  • 验证iOS、AndroidHarmonyOS各平台推送功能正常

  • 测试在线和离线透传消息、通知消息、消息离线转通知等场景

  • 验证定时推送和持续推送功能

渐进式迁移

  • 建议先在测试环境完成迁移和验证

  • 可以先迁移部分非核心业务,逐步推广

  • 保持 V1 和 V2 并行一段时间,确保平稳过渡

重点关注

  • 参数映射的准确性,特别是平台特定参数

  • 推送方式的调整,特别是定时推送

  • 错误处理和日志记录的适配

充分测试

  • 覆盖所有推送场景

  • 验证各平台和厂商通道

  • 进行压力测试确保性能