vivo Android 13 开发者体验版

1、计划概览

欢迎加入vivo Android 13 开发者体验版,此计划将给开发者提供适配 Android 13系统的体验。

注:vivo Android 13 开发者体验版本仅面向开发者,极客用户,对于普通用户,我们强烈建议不要使用。

● 硬件和系统

开发者体验版本可以在iQOO 10、iQOO 10 Pro、X80 Pro设备系统上运行并体验。

● 开发和测试

如果您在vivo Android 13 开发者体验版本进行开发和测试工作, 您将可以针对新的软件变更测试您的应用,请参阅迁移指南,了解让应用与新平台兼容的简单步骤。更多详细的Android 13 相关的介绍,点击这里

感谢您加入vivo Android 13 开发者体验版!

2、获取vivo Android 13 开发者体验版

您可以通过如下方式下载使用iQOO 10、iQOO 10 Pro、X80 Pro设备的软件包固件,然后升级测试自己的应用。

注意:为避免在vivo设备上安装开发者体验版出现异常,升级前请务必先备份数据。

2.1 下载Android 13 开发者体验版

如下升级包下载链接:

设备下载链接MD5校验值
iQOO 10PD2217_A_13.1.7.10.W10.V000L1-update-full.zipd60e54b4ab3d3562f1a15f11d800f2c7
iQOO 10 ProPD2217_A_13.1.7.10.W10.V000L1-update-full.zipd60e54b4ab3d3562f1a15f11d800f2c7
X80 ProPD2185_A_13.0.12.6.W10.V000L1-update-full.zip594caad95190b4454b3237359186df26

2.2 升级Android 13 开发者体验版

您可以将下载到的开发者体验版本软件包固件,按照以下步骤,烧写到对应的vivo设备。手动烧写固件的步骤以X80 Pro为例,具体如下:

(1)下载X80 Pro开发者体验版本软件包固件。

(2)设备连接电脑后将手机USB设置切换到文件传输模式,将已下载好的软件包固件拷贝到X80 Pro手机存储根目录。

(3)按照以上步骤,在设置->系统升级->本地升级中点击升级包,待校验完成后开始升级。

(4)等待手机自动升级完成。

2.3 回退Android 13 开发者体验版

如果您已经手动升级到iQOO 10、iQOO 10 Pro、X80 Pro的开发者体验版,想对应降级到Android 12.0正常系统版本,请使用降级工具进行降级工作,具体请参考:

https://bbs.vivo.com.cn/newbbs/thread/32215628?show_title=1

3、反馈

如果您在使用中遇到严重问题,请进入对应的群进行反馈,群验证信息请填写手机的IMEI号

iQOO 10、iQOO 10 Pro QQ群 : 854374916

X80 Pro QQ群 : 759578505

4、Android 13 特性:

新增特性功能,包括但不限于:

  • 照片选择器

提供了一种更安全的媒体共享方式,而无需向应用授予整个媒体库的访问权限。

  • 控制中心

允许应用主动添加开关至控制中心,方便用户便捷地添加应用的控制中心开关。

  • 前台服务管理器

新增 前台服务管理功能,您可以通过控制中心查看运行中的前台服务及服务的运行时长,并随时停用前台服务。

5、已知问题

iQOO 10、iQOO 10 Pro:

1、当前系统版本有较多常用三方应用与 Android 13 不兼容,升级后可能会出现第三方应用无法正常使用的情况(如闪退、卡顿、黑屏、耗电等),建议您谨慎升级。

2、下拉状态栏,低概率背景透明,自动恢复。

3、健康APP概率定位异常,无法形成轨迹。

4、部分应用未同步深色模式。

X80 Pro:

1、当前系统版本有较多常用三方应用与 Android 13 不兼容,升级后可能会出现第三方应用无法正常使用的情况(如闪退、卡顿、黑屏、耗电等),建议您谨慎升级。

2、部分系统弹框主题样式不一致

3、分屏时,移动分屏,存在低概率性动画不连贯,出现黑屏

4、连续快速多次人像拍摄时,手机相机出现低概率的闪退

VIVO开放平台团队账号操作手册

VIVO开放平台团队账号操作手册

为提升合作开发者伙伴的团队协作能力及协作效率,vivo上线“团队账号”功能。开发者可根据团队协作需求,邀请添加团队成员,并根据实际需求,灵活分配不同应用的开发、测试、分发、运营推广等操作权限,在保证账号信息安全的前提下,方便团队成员共同使用开发者账号,协同管理应用。

具体操作如下:

一、开通团队账号功能

1、注册审核通过的开发者账号登录开放平台(https://id.vivo.com.cn/),点击账号-【团队账号】,或点击【产品】-【应用分发】-【团队账号】,进入团队账号页面。

2、主账号(即团队管理员)补充签署账号协议,即可完成团队账号功能开通。

二、添加子帐号

1、设置子账号信息

点击【添加团队成员】,输入成员账号信息,包括:账号名称、成员姓名、邮箱、手机号。

2、设置子账号的角色信息、可操作的功能权限以及应用数据权限

3、确认子账号信息,完成创建

主账号确认子账号信息无误后,点击【确认】,则子账号创建成功,系统将自动发送激活邮件到成员账号的邮箱。

邀请邮件有效期为72小时,如果邀请邮件过期,主帐号可点击【重新邀请】再次邀请激活。

三、激活子账号

团队成员收到激活邮件后,点击邮件中“点击激活”,即可完成账号激活,激活后即可登录使用子账号。

四、团队账号FAQ

1、主账号可添加多少子账号?

一个主账号下最多添加99个子账号。

2、子账号拥有哪些权限信息,如何查看?

1) 子账号只能使用主账号赋予权限的功能,并享有与主账号同等的操作权限,未被赋予权限的功能,不可查看且不可使用。

2) 子账号只能登录有权限的vivo平台,未赋予权限的平台不可登录。

3) 如需查看自己拥有的权限信息,子账号可登录开放平台,点击团队账号功能,查看拥有的功能权限。

3、子账号密码如何修改?

子账号登录后,点击【账号】-【团队账号】-【成员账号信息-密码】进行修改。

注:若子账号忘记密码,可由主账号在团队账号列表页对子账号操作【重置密码】,新密码会通过系统邮件发送至子账号邮箱。

4、子账号如何冻结&解冻?

主帐号可在团队账号列表页对子账号进行冻结、解冻。子帐号被冻结后,将无法再登录,需主账号解冻后才能登录。

注:如果主帐号被冻结,该主帐号下的所有子帐号将会被冻结。主账号解封流程,详见《账号冻结及解封流程》。

5、子帐号如何注销?

1) 子账号操作:登录平台,在团队账号列表页点击【退出团队】,即可完成子账号注销。

2) 主账号操作:登录平台,在团队账号列表页对某个子帐号进行删除,即可完成子账号注销。

VIVO开放平台企业开发者注册教程

VIVO开放平台企业开发者注册教程

一、温馨提示

1.vivo开放平台暂不支持个人开发者或个体工商户注册,感谢您的支持

2.开发者认证账号必须绑定邮箱(暂不支持绑定手机号),建议使用公共邮箱或企业邮箱绑定,以免人员离职造成交接问题

3.账号注册成功后需先填写联系人信息,请如实填写并及时更新,以便我们与您联系

二、开发者类型及认证材料准备

类型认证材料准备
普通企业二选一:(1)营业执照、组织机构代码证、税务登记证、法定代表人手持身份证照片(2)营业执照(三证合一)、法定代表人手持身份证照片
事业单位事业单位法人证书/组织机构代码证书、法定代表人手持身份证照片
社会团体社会团体登记证书/组织机构代码证书/税务登记证、法定代表人手持身份证照片
机关单位统一社会信用代码证书/发证机关证明函、法定代表人手持身份证照片

PS:“三证合一”,就是将企业依次申请的工商营业执照、组织机构代码证和税务登记证三证合为一证,证件名称为“营业执照”。对应的证件号码为18位数字+字母的统一社会信用代码。

资质图片上传要求如下:

(1)优先提供彩色照片,黑白件需加盖公司公章

(2)证照必须在有效期内,公章清晰可见

(3)所有证照主体必须保持一致

(4)关键信息必须清晰,格式支持:JPG/PNG,每张图片大小20M以内

(5)需企业法定代表人本人手持身份证,法定代表人需与营业执照一致

三、开发者账号注册流程

1.在首页右上角选择注册

2.填写注册信息

3.完善账户信息,上传企业资质,提交审核

注:目前仅vivo核心代理商选择【代理商】,非核心代理请联系核心代理商进行沟通合作;游戏代理商请选择【开发者】,其他开发者请选择【开发者】。

注:法定代表人手持示例

OPPO开放平台 OPPO推送常用名词解释

应用信息

1)AppID、AppKey: 客户端的身份标识,客户端SDK初始化时使用。
2)AppSecret: 开发者服务器端的身份标识,在使用ServerSDK向客户端发送消息时,用于校验身份。
3)MasterSecret: 开发者在使用服务端API接口时,用于校验身份的标识。
备注:这些秘钥在web端OPPO消息推送运营平台可查看。

用户ID

RegistrationID: 应用在对应设备的上唯一ID,不同的应用RegistrationID不同,该ID在用户设备刷机、卸载应用、设备30天之内未有联网行为时失效。
备注:RegistrationID(注册ID)的获取请看客户端SDK文档。

推送服务

通知栏消息: 消息会直接推送给OS系统,系统收到消息后无需启动应用,直接在通知栏展示,用户点击后再启动应用。

数据指标

1)目标数:创建推送任务时,提交的用户ID数据量。
2)有效数:经过系统过滤去除无效设备数据。服务端会过滤出判定为失效的设备ID,设备失效的原因可能有:用户卸载、刷机、设备30天之内未有联网行为等。
3)推送数:实际成功下发的用户数,即在消息有效期内成功连接并获取该条消息的数量。
4)到达数:从接入推送服务的app客户端,用户安装并激活的累计用户量,去除无效设备。
5)展示数:用户手机收到消息后,成功在通知栏中展示出来的消息数量。
6)点击数:消息在系统通知栏展示后,用户点击的数量。
7)累计用户:应用累计注册的设备数,同一设备重复注册只算一个。
8)当日活跃用户数:当天有过连接记录的设备数据。
9)当前在线用户数:指当前保持着推送长连接的设备数。

OPPO推送 如何获取插入的键值对?

OPPO推送 如何获取插入的键值对?

应用在前台,在onNewIntent调用intent.getExtras()获取自定义数据。Activity为接入方应用的目标Activity,如:demo中的目标页面Activity为:

 <activity
            android:name="com.coloros.push.demo.component.InternalActivity"
            android:launchMode="singleTop">
            <intent-filter>
                <action android:name="com.coloros.push.demo.internal" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

那么在配置消息的接收消息的目标Activity页面时,可以分成intent action和activity两种方式:
采用intent action的方式填写对应的:intent action:com.coloros.push.demo.internal
采用activity的方式填写类的绝对路径:activity:com.coloros.push.demo.component.InternalActivity

OPPO推送 打开范围中,启动应用内页的地址如何填写?怎么传递参数呢?

OPPO推送 打开范围中,启动应用内页的地址如何填写?怎么传递参数呢?

1)click_action_type为1时填写activity对应的intent action;click_action_type为4时填写activity的完整类名
2) 打开应用内页的action需要加标签
3) 传递参数放在键值对(即action_parameters)里,客户端通过intent.getExtras()获取。
4)push的intent-filter应与其他功能的intent-filter区分开,勿添加其他action与data标签。
5)click_action_type为5时scheme路径需要写在click_action_url参数上 。
示例:
客户端AndroidManifest声明打开的activity如下:

<activity android:name="com.coloros.push.demo.component.InternalActivity">
<intent-filter>
<action android:name="com.coloros.push.demo.internal" /> 
<category android:name="android.intent.category.DEFAULT" /> 
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />

<data android:scheme="https" />
<data android:scheme="http" />
<data android:scheme="command" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

API推送:
click_action_type为1时填写:com.coloros.push.demo.internal
click_action_type为4时填写:com.coloros.push.demo.component.InternalActivity
click_action_type为5时填写:command://test?key1=val1&key2=val2
平台页面:
web端推送时,选定打开应用内页,下图分别是click_action_type为1、4、5时示例:

OPPO推送 通知通道(Channel)适配

OPPO推送 通知通道(Channel)适配

通道/Channel

通知通道(Channel)是Android 8.0(API ≥ 26)引入的新功能,旨在解决以下问题:
1)应用的通知越来越多,给用户造成明显打扰。
2)但用户只能全局屏蔽这个应用的全部通知,不能屏蔽部分,然后留下对自己有用的。
从 Android8.0(API ≥ 26)开始,Android要求开发者必须为所有的通知分配通道,不同类的消息走不同的通道发送。 用户可关闭单个通道的消息通知, 不会影响其它通道的消息推送。 以下图为例:将通知分成了 4 种 Channel,3 个 Channel Group。
Channel为实际的通知类别。Channel Group为一组 channel,仅用于做分组区分,开发者可视自己的业务需求而定。每个通知类别的权限互相独立,互不影响。

Channel适配

适配步骤

适配通知通道步骤详见Android官方文档:《创建和管理通知渠道 》
注意: 客户端适配通道后, 开发者若调 API 发送,则必须带通道 ID 发送。 开发者若用 OPush 消息推送平台推送消息,则必须在“通道配置 → 新建通道”模块(如下图)中登记通道,再在发送消息时选择通道发送。

说明:

分组即Channel Group, 非必填,将按照系统默认分组进行处理

通道即Channel,必填。必须填入客户端创建的通道名称和对应通道ID

注意事项

2.1、通道需在产品发布之前需由产品提前规划好消息分类, 如“订单通知”、“评论回复提醒”、“新资讯提醒”等,不同分类的消息走不同通道发送。规划好的通道不应该在不同版本频繁变更,以免给运营同学带来不便。


2.2、通道名称是对用户可见的,因此需要使用方便用户理解的文本。建议:
1)通道命名符合通知内容特征,例如,发送快递接收信息的专用通道,命名为“快递信息”,便于用户理解。尽量避免通道名称重复
2)命名可以是中文,英文。避免数字、包名等不能指代通道信息特征的符号。其中通道名包含“.”的是不允许的。

2.3、对于target API≥ 26(Android 8.0)的应用,必须适配通知通道,未指定通道的情况下发出的通知将无法显示。
对于target API ≤ 25(Android 7.1)的应用,可以不适配。在8.0及以上的设备,通知也能正常发出。


2.4、合理设置通道级别(Importance),以达到合适的通知效果(过度打扰可能导致用户修改通道设置甚至关闭通知开关)。


2.5、合理控制通道数量,尽量避免仅有1个或者超过5个,这样才能更好发挥出通道控制的效用。


2.6、根据需要可以使用通道组(Group)来在设置界面中对通道进行分组归1类,方便用户区分识别。


2.7、适配 Channel 后,在 Android 8.0 以前的设备,会完全无视这个功能,因此不会带来任何兼容性问题。


2.8、创建通知通道后,通知行为以通道设置为准,应用无法再修改,而是交由用户进行控制。

OPPO推送配置管理

OPPO推送配置管理

应用配置

进入“配置管理-应用配置”,可查看应用的AppKey,AppSecret,MasterSecret。

检查工具

进入“配置管理-检查工具”,支持IMEI、RegistrationID互相查询。
可通过RegistrationID查询设备在线情况,目前仅支持单次单个RegistrationID查询。

推送链

进入“配置管理-推送链”,输入需要查询的消息ID、设备RegistrationID以及时间(仅限三天内),点击查询,即可显示当前消息的大致下发信息。

通道配置/新建通道

通知通道(Channel)是Android 8.0引入的新功能,要求开发者给自己的通知分成若干类,并允许用户更改单个通道的设置。使用推送服务时,需要指定通道进行推送,未指定通道会导致下发的通知在Android 8.0及后续机型上展示不成功。

操作流程

首先由应用客户端创建通道,然后选择以下方式同步通道:
1)API推送:PUSH服务端传入通道ID;
API推送见OPPO推送平台服务端API
2)PUSH运营平台推送:登记同步通道ID、通道名称;

PUSH运营平台通道同步步骤

1)新建通道:
通道ID与通道名称必填且需要与应用客户端保持一致,请联系应用客户端获取,其他选项可不填。通道ID若一旦确定下来不能随意变更或被删除。目前私信通道需要邮件申请后才能生效,申请方式可查看私信通道申请文档

2)创建通知栏消息,通道名称选择指定的通道进行推送测试。

备注:开发者帐号和子帐号都可以创建通道。

OPPO开放平台消息推送帐号管理

OPPO开放平台消息推送帐号管理

帐号角色

权限配置

角色分类配置帐号角色消息审核消息创建与下发查询消息数据
主帐号
管理员
审核者
推送者

通常情况下一个企业在OPPO开放平台只能注册一个开发者帐号,但一个企业下可能会有多个应用,所以一个开发者帐号下通常会存在多个应用。为满足多个不同应用之间对于推送的管理需求,避免误发、错发消息给用户,OPPO PUSH平台对登录帐号做了角色分类和权限管控。
OPPO PUSH平台目前存在以下四种角色:主帐号、管理员、推送者、审核者

1)主帐号 即在开放平台认证过的开发者帐号,可以给应用配置相应角色,主要有管理员、审核者、推送者三种角色,角色数量不限,开发者可根据具体的业务场景和需求进行数量调整。主帐号默认为管理员角色,具有平台所有的权限。
2)子帐号分管理员/审核者/推送者三种角色,一个帐号只能拥有一种角色。
3)管理员 角色可以由主帐号创建,在OPPO PUSH平台中,管理员拥有最高的权限。
4)审核者 角色由管理员角色创建,审核者不能配置其他帐号,仅拥有OPPO PUSH平台的功能使用权限。
5)推送者 角色由管理员角色创建,仅能推送消息和查询消息数据。

配置子帐号权限

帐号管理仅主帐号和管理员可见,可对子账号进行新增、编辑和删除的操作。

OPPO开放平台 推送数据统计

OPPO开放平台 推送数据统计

单条推送消息数据

点击【推送记录】-【通知栏数据】,可以查看每条消息的详细数据。

点击“详情”,可显示每个推送任务的详情、目标用户、后续动作等相关信息
点击漏斗,查看查看数据下发中事件流失的具体统计

应用数据总览

数据指标解读

1)目标数:创建推送任务时,提交的用户ID数据量。
2)有效数:经过系统过滤去除无效设备数据。服务端会过滤出判定为失效的设备ID,设备失效的原因可能有:用户卸载、刷机、app三个月之内未有联网行为等。
3)推送数:实际成功下发的用户数,即在消息有效期内成功连接并获取该条消息的数量。
4)到达数:成功将消息推送到用户手机上的数量。
5)展示数:用户手机收到消息后,成功在通知栏中展示出来的消息数量。
6)点击数:消息在系统通知栏展示后,用户点击的数量。
7)累计用户:应用累计注册的设备数,同一设备重复注册只算一个。
8)当日活跃用户数:当天有过连接记录的设备数据。
9)当前在线用户数:指当前保持着推送长连接的设备数。

OPPO消息推送怎么消息撤回

OPPO消息推送怎么消息撤回

消息推送后,若出现内容错误或者其他问题可以进行“撤回”操作,如想停止下发消息,可第一时间点击【停止下发】。
注意:已经下发的消息不可撤回;停止下发的消息计入推送限额。

操作方式:进入推送记录-通知栏数据,点击需要停止下发消息的数据详情,进入详情界面后点击【停止下发】

OPPO推送 创建通知栏消息

OPPO推送 创建通知栏消息

创建推送

进入应用后,点击左侧菜单栏“创建推送”,进入消息配置页

功能设置项说明
推送内容短文本只展示一行内容, 超过一行的内容不会显示
长文本支持消息内容填写128个字符,让消息内容可更全面展示
(仅首条消息默认展示全部内容, 非首条默认只展示一行)
大图消息支持消息带大图发送,在连接wifi状态下通知栏第一条消息可显示大图,非通知栏第一条消息或非wifi状态下消息不显示大图;
ColorOS5.0之后版本可用;
图片格式:960*368 px,文件小于1024KB,PNG/JPG/JPEG格式
消息备注推送运营平台消息备注,不会展示在用户终端设备上
功能设置项说明
一键导入常用配置一键导入常用配置,可以储存最近下发的10条消息的设置方案,在下一次推送相同类型的消息时,仅需一步操作,就可以完成大部分的选项的设置;
包含离线选项设置、有效时长、定速推送、定速数值、通道选择等配置
附加参数自定义参数自定义填写多组键值对,用户点击通知后传输给应用服务端/客户端,完成相应的操作
点击动作打开应用点击通知消息,进入应用首页
打开应用内页点击通知消息,跳转至应用中指定的内页
打开网页地址点击通知消息,跳转浏览器打开指定的URL页面
功能设置项说明
推送范围Registration ID应用在对应设备的上唯一ID,不同的应用RegistrationID不同;
超过5个Registration ID请导入txt或者rar文件,要求UTF-8无BOM格式编码,每行1个Registration ID,大小不超过200M。(注意:rar仅支持RAR4压缩文件格式);
Registration ID在用户设备刷机、卸载应用、或设备长时间无连接时失效
功能设置项说明
消息时间限时展示消息在通知栏展示后开始计时,到达限制时间后从通知栏消失。
最长可设置为100个小时
定时展示消息到达设备后,会在选定的时间段内展示到用户手机通知栏
有效时长在有效时长范围内,上线的用户均可收到通知
最长可设置为240个小时
功能设置项说明
优先级别消息下发优先级
P0为最高优先级,P3为所有消息的默认级别。
P1、P2、P3、P4受最高条数的限制,若在该消息前已经发满最高条数,则该消息不再下发。
通道选择消息下发时候的通道,详见《通知通道(Channel)适配》。
消息图标通知栏消息内容右侧的消息图标
尺寸144*144像素,200K以内
测试预览当前创建消息的填写内容和设置均确认无问题后,可以使用测试预览功能检验消息的推送效果。使用预览推送下发消息时,需要填写接收设备的RegistrationID。
预览推送支持预览人员名单功能,可以使用此功能储存常用的预览设备信息,也可以对储存的预览人员信息进行修改、增删,提高预览推送功能使用效率;
如何获取设备的RegistrationID:在“配置管理-检查工具”中,根据设备IMEI号查询。设备IMEI号为拨号键盘输入*#06#,即可显示


当所有信息填写完毕后,发送【测试预览】,预览消息无误后点击【下一步】,将创建的消息提交审核。

审核消息

消息无法自发自审,创建消息后需切换为主账号、管理员、审核者角色进行消息审核。账号配置请参考《帐号管理》,仅应用主账号可进行账号配置

审核帐号点击左侧菜单栏“推送审核”,选择指定消息详情进入审核

消息审核需要进行预推测试,预览消息无误后点击【审核通过】,消息会立即下发(消息的有效时长从消息创建开始计算,若审核后消息有效期已过,消息会正常下发但无法展示,请注意消息的发送与审核时间)。

当创建的消息在审核时发现内容异常或者其他问题,可以进行“打回”操作,打回的消息需要二次确认并说明原因;打回的消息支持预览推送和复制操作;已打回的消息,不可以再进行推送。

OPPO推送 登陆OPUSH推送运营平台

OPPO推送 登陆OPUSH推送运营平台

使用企业开发者账号或推送运营平台应用子帐号登录开放平台,点击链接进入OPUSH推送运营平台,或通过“管理中心 -生态服务- 应用服务- 开发服务” 进入OPUSH推送运营平台。
推送运营平台应用子帐号配置,请参考帐号管理


名词解析

1)应用名称:产品的表达信息,显示在客户端界面供手机用户搜索和下载的重要标识。
2)应用包名:应用的唯一标识。
3)AppId:应用的身份标识,在上传应用后获得。
4)推送类型:分为正式和测试推送。“测试推送”每天仅可推送1000条消息,限测试使用;“正式推送”需要上架应用商店后才能申请。
5)累计用户:从接入推送服务的app客户端,用户安装并激活的累计用户量,去除已卸载用户数。
6)可推送总数:单个应用每天可推送消息总数,具体可以查看推送服务限制-推送数量限制规则累计用户数和可推送总数在OPPO推送运营平台可查询,每天会刷新。

OPPO推送消息内容审核标准 基于第三方审核结果的消息推送

基于第三方审核结果的消息推送

OPPO推送服务禁止推送违反《通知运营规范》内容规范的消息,为避免您的消息存在内容违规,建议您基于第三方内容审核平台(推必安)的审核结果来进行消息推送,即在推送消息给Push服务器时,附带推必安对消息体内容审核后的结果,当OPPO PUSH服务器检测到审核结果不通过时,会对消息进行拦截,并返回结果。

推送消息内容安全公共服务平台(推必安)提供高效过滤色情、广告、涉政、暴恐、违法、低俗等多类垃圾文字及关键词的检测能力,推必安接入方式详见推必安官网公有云接口文档。

基于推必安审核结果消息推送流程

流程说明

1、开发者调用推必安登录审核平台接口(https://text.tuibianchina.com/manager/apiLogin),获取推必安审核接口需要的audit_token。
1)登录推必安官网,注册帐号。
2)调用推必安审核平台接口。

请求示例

curl -H “Content-Type:application/json” -X POST -d '{"userName":"admin","password":"$MD5(PWD)"}' https://text.tuibianchina.com/manager/apiLogin

响应示例

{ “errno”: 0, “errcode”:”success” “errmsg”: “成功” ”data“: { “record”: “4863ba214b9f4673b88e9b25afa8036f” } }

说明

响应成功获取的“record”是您用于文本审核接口时鉴权的参数audit_token。

2、开发者将需要推送的标题(title)、内容(content)拼接成字符串,拼接方式见注1。调用推必安审核接口(https://text.tuibianchina.com/v1/audit),获取审核结果。
请求示例:

curl -H "Content-Type:application/json" -X POST -d '{"pkg":"com.opush.test", "content":"标题#内容”}' https://text.tuibianchina.com/v1/audit

响应示例

 { “code”: 40004, “data”: { “contentId”: “4863ba214b9f4673b88e9b25afa8036f”, “labels”: [ { “level”: 1, “reason”: “POLITIC”, } ] }, “msg”: “Block” } 

说明

code表示响应码,“200”为通过,“40004”为不通过
如果您的审核文本存在敏感词,响应体会将敏感词显示在labels中。
更多字段值内容详情请参见推必安公有云接口文档。

3、将推必安返回的审核结果,传递到opush推送接口的auditResponse参数,进行消息推送。详见接口文档《通知栏消息》

4、相关推送接口都增加了auditResponse字段,详情见服务端API接口文档。

注1:在请求推必安审核接口时传入的content字段需要使用后续消息推送的标题(title)、内容(content)进行拼装,具体格式为”标题#内容”,及”title#content”。

OPPO开放平台 服务端单点推送

OPPO开放平台 服务端单点推送

单点推送

单点推送

单点推送主要用于向一个特定的用户推送同一条消息的场景。一条单点推送消息对应一个推送目标,对应一个消息ID。针对批量的单点推送任务,OPPO PUSH提供批量的单点推送接口可供开发者一次性发起多条单点推送服务。
和广播推送相比,单点推送无需预先保存消息体,而是在调用推送消息接口的同时传入消息内容。
为方便表述,以下部分内容介绍会将单点推送简称为单推。

单点推送接口

接口详情

描述内容
接口功能发送通知栏消息
请求方法POST
Content-Typeapplication/x-www-form-urlencoded
请求编码UTF-8
请求路径/server/v1/message/notification/unicast

请求参数

参数定义:

名称类型必须默认描述
auth_tokenstring鉴权令牌,详见鉴权一章。
messageString消息体参数,接受一个嵌套的JSON结构,推送目标和具体消息内容均在这个字段中配置。

message字段是一个JSON结构参数,接受的字段及含义如下:

名称类型必须默认描述
target_typeShort推送的目标类型 2: registration_id 5: 别名
target_valueString推送目标,按taget_type对应填入,仅接受一个值。
notificationJSON通知栏消息内容,参考消息体内容定义,按照JSON格式填入
verify_registration_idBooleanFALSE消息到达客户端后是否校验registration_id。 true表示推送目标与客户端registration_id进行比较,如果一致则继续展示,不一致则就丢弃;false表示不校验

message示范:

{
		"target_type": 2,
		"target_value": "CN_078ad8b8a137cadb14ae5b70cf846312",
		"verify_registration_id": true,
        // notification是一个嵌套在message的json,配置通知栏消息内容和参数
		"notification": {
				"appMessageId": null,
				"style": 1,
				"bigPictureId": null,
				"smallPictureId": null,
				"title": "您的订单已取消",
				"subTitle": null,
				"content": "您的订单(realme X7…) 已取消",
				"clickActionType": 4,
				"clickActionActivity": "com.realme.store.home.view.MainActivity",
				"clickActionUrl": null,
				"actionParameters": "{\"messageNo\":null,\"title\":\"您的订单已取消\",\"desc\":\"您的订单(realme X7…) 				已取消\",\"type\":null,\"redirectType\":2,\"resource\":\"1\",\"version\":1}",
				"showTimeType": 0,
				"showStartTime": null,
				"showEndTime": null,
				"offLine": true,
				"offLineTtl": 86400,
				"pushTimeType": 0,
				"pushStartTime": null,
				"timeZone": null,
				"fixSpeed": null,
				"fixSpeedRate": null,
				"networkType": null,
				"callBackUrl": null,
				"callBackParameter": null,
				"channelId": "message",
				"showTtl": 0,
				"notifyId": 1
				}
}

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString请求响应信息
dataString响应返回值,正确响应后包含消息ID

推送请求调用成功响应示例:

{
    code:0,
    message: "",
    data : {
       // 消息ID 格式为 AppID-1-1-全局唯一性ID
       messageId : ZngnvJIM7wQusNtbqYnpH6XX-1-1-622ff7cfae27668d2ed3afec,
       } 
}

推送目标存在问题响应示例:
推送请求调用失败,但推送目标存在问题

{
    code:1000,
    message: "registration_id格式不正确
}

返回码(code)

Code英文描述中文描述
10000Invalid Registration_idregistration_id格式不正确

批量单推接口

接口

描述内容
接口功能批量发送单推通知栏消息
请求方法POST
Content-Typeapplication/x-www-form-urlencoded
请求编码UTF-8
请求路径/server/v1/message/notification/unicast_batch

请求参数

和推送单条消息的单推接口相比,批量单推接口使用messages字段容纳不少于一条的消息推送参数。messages字段是一个JSON数组,里面的一个元素和单推接口参数中的message相同。
以下是参数定义:

名称类型必须默认描述
auth_tokenstring鉴权令牌,详见鉴权一章。
messagesString通知栏消息JSON数组字符串,示例:[{message},{message}]【最多1000个】

message:

名称类型必须默认描述
target_typeShort目标类型 2: registration_id , 5:别名
target_valueString推送目标用户: registration_id或alias
notificationJSON通知栏消息内容,参考消息体内容定义,按照JSON格式填入
verify_registration_idBooleanFALSE消息到达客户端后是否校验registration_id。 true表示推送目标与客户端registration_id进行比较,如果一致则继续展示,不一致则就丢弃;false表示不校验

一个批量单推接口的messages参数范例

[
	// 传入两个推送目标和推送内容,将会产生两条单推推送消息
	{
		"target_type":2,
		"target_value":"CN_906bf7b0d76a5c0001668ddc410ab903",
		"notification":{
			"title":"Hello World-1",
			"content":"Hello World message-1"
		}
	},
	{
		"target_type":2,
		"target_value":"CN_b457331fd7874d0200c595ebb8d39de8",
		"notification":{
			"title":"Hello World-2",
            "content":"Hello World message-2"
        }
]

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString请求响应信息
dataString返回值,JSON类型

推送请求调用成功响应示例:

{
     code: 0,
     message: "",
     data: [
         {
               messageId: xxxxxxxxx, // 消息Id
               registrationId: xxxxxxxxx
        }, {
               messageId: xxxxxxxxx, // 消息Id
               registrationId: xxxxxxxxx
       }, {
               messageId: xxxxxxxxx, // 消息Id
               registrationId: xxxxxxxxx, // 消息Id
               errorCode: 10000, // 失败码
               errorMessage: xxxx // 失败说明
       }
    ]
}

返回码(code)

Code英文描述中文描述
10000Invalid Registration_idregistration_id格式不正确

OPPO推送服务端设置广播推送

OPPO推送服务端设置广播推送

广播推送

OPPO PUSH提供广播和单点推送两种下发消息的方式。以下是这两种推送方式的介绍及具体的API使用方式。

广播推送

广播推送主要用于向大批量用户推送同一条消息的场景,例如标签推送、大批量的注册ID推送等。一般情况下,广播消息会在同一时间向这批目标设备推送消息,如果设置了定速推送,则按照给定的速度均匀向圈定的目标推送消息。
使用广播推送,需要先在OPPO PUSH保存一条广播消息体,再通过创建好的消息体对应的消息ID,调用OPPO PUSH的广播推送接口推送该条消息。

保存通知栏消息内容体

接口详情

描述内容
接口功能保存消息内容体,获取消息Id
请求方法POST
请求编码UTF-8
Content-Typeapplication/x-www-form-urlencoded
请求路径/server/v1/message/notification/save_message_content

请求参数

除了共有的鉴权参数外,消息体内容的参数均以key-value的形式填写在HTTP请求的body中。

名称类型必须描述
auth_tokenstring鉴权令牌,详见鉴权一章。

消息体内容参数:参数主要围绕消息体的具体内容,以及推送的方式,消息体内容参数设置详情可查看通知栏消息

响应参数

调用接口后,OPPO PUSH会响应JSON格式的字符串,包含以下字段:

名称类型必须描述
codeInt返回码,具体含义请参考调用地址,公共参数和返回码一章。
messageString响应信息描述
dataStringJSON格式的响应返回值,成功调用将包含消息ID,后续需要使用消息ID来进行广播消息推送。

响应示例

{
    "code": 0,
    "message": "success",
    "data": {
        "message_id": "58ad47319e8d725350a5afd5" //消息ID
      }
}

调用广播推送

接口详情

描述内容
接口功能发送通知栏消息
请求方法POST
Content-Typeapplication/x-www-form-urlencoded
请求编码UTF-8
请求路径/server/v1/message/notification/broadcast

请求参数

名称类型必须默认描述
auth_tokenstring鉴权令牌,详见鉴权一章。
message_idString消息ID。
消息ID是调用保存消息体接口成功后响应的唯一标识。
广播通知栏消息ID的格式为AppID-1-3-ObjectID,如ZngnvJIM7wQusNtbqYnpH6XX-1-3-622ea78f923805b1389e61c2,其中ZngnvJIM7wQusNtbqYnpH6XX是某个业务的AppID,622ea78f923805b1389e61c2是这条消息在Push的唯一ID。
target_typeShort目标类型。
接受一个short类型数字,目前推送目标可指定以下几种:
2:表示推送目标为注册ID类型,
5:表示推送目标为别名类型,
6:表示推送目标按照标签对应的用户群圈定;
target_valueString具体的推送目标用户信息,根据推送目标类型有不同的传入方式:
1.注册ID类型或别名类型的推送。这两种类型一次调用可传入最多1000个目标,目标之间以英文字符 ; 为分隔符。如传入注册ID目标列表,字符串可表示为 “RegID1;RegID2;RegID3”, 或者别名名单 “Alias1;Alias2;Alias3” 。

标签:
2.标签推送。标签推送的目标值使用标签表达式。
标签表达式由一个或多个指令组合而成,一个指令包括组合字段和标签名单,表示若干个标签的组合搭配。
假设有一个标签表达式,标签表达式的配置和计算规则如下:
{ “or” : [ “tagID1”, ” tagID2″ ], “and” : [ “tagID3”, “tagID4”], “not” : [ “tagID5”, “tagID6”] }
表达式逻辑计算如下:
计算 “or” 字段的结果,得到tagID1和tagID2的并集A;计算 “and” 字段的结果 tagID3和tagID4的交集B;
计算 “not” 字段的结果 (tagID5和tagID6的并集C’)的非集=C最后计算所有A和B和C的交集。
最终结果为 (tagID1 ∪ tagID2)∩(tagID3 ∩ tagID4)∩(¬(tagID5 ∩ tagID6))

响应参数(JSON)

名称类型必须描述
codeInt返回码,具体含义请参考调用地址,公共参数和返回码一章
messageString响应信息描述
dataStringJSON格式的响应返回值,成功调用将包含消息ID和任务ID。

推送请求调用成功响应示例

{
    code:0,
    message: "success",
    data : {
        message_id : xxxxxxxxx // 消息Id
        task_id : xxxxxxxxx // taskId
    }
}

如果推送目标存在问题,会根据对应异常的目标进行响应,示例如下:

{
    code:0,
    message: "",
    data : {
        message_id : xxxxxxxxx, // 消息ID
        task_id:XXXXXXXXXX,     //推送任务ID
        // 部分目标有异常,将以 错误码——对应目标名单的形式返回
        "10000": [
            "J0476035d625e6c64567f71487e040e7d017f0558675b",
            "J0476045d625e6c64567f71487e040e7d017f0558675b",
            "J0476035d625e6sd64567f71487e040e7d017f0558675b"
        ]
   }
}

返回码(code)

Code英文描述中文描述
10000Invalid Registration_idregistration_id格式不正确

OPPO开放平台OPPO消息推送标签管理

OPPO开放平台OPPO消息推送标签管理

标签管理

添加标签

接口

环境HTTPS请求地址备注
生产环境https://api-device.push.heytapmobi.com/设备API
沙箱环境暂无
描述内容
接口功能新增标签
请求方法POST
Content-Typeapplication/json
请求编码UTF-8
请求路径/server/v1/device/add_tags

请求参数

名称类型必须默认描述
nameString标签名称,字符长度50字符
descString标签描述,字符长度200字符

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体

响应示例

{
    "code": 0,
    "message": "success"
}

添加标签组

接口

描述内容
接口功能新增标签,app全局最多可新增1000个标签组
请求方法POST
Content-Typeapplication/json
请求编码UTF-8
请求路径/server/v1/device/add_tag_group

请求参数

名称类型必须默认描述
groupString标签组名称
tagsString标签列表,单个标签组最多可设置50个标签;多个标签之间使用英文分号分隔
descString标签描述

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体

响应示例

{
    "code": 0,
    "message": "success"
}

标签订阅接口

接口

描述内容
接口功能为指定设备绑定标签
请求方法POST
Content-Typeapplication/json
请求编码UTF-8
请求路径/server/v1/device/subscribe_tags

请求参数

名称类型必须默认描述
registration_idStringNull注册ID
tagsStringNull标签内容,多个标签之间使用英文分号分隔,单个标签字节长度50字符; 限制:单次调用接口可设置50个标签;单个用户总量上限也是50个标签 这个接口可重复调用,多次调用不会清理原来设置的标签

响应参数(JSON)

名称类型必须描述
codeInt 是返回码,请参考公共返回码与接口返回码
messageString错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体

响应示例

{
    "code": 0,
    "message": "success",
}

取消标签订阅接口

接口

描述内容
接口功能取消订阅标签
请求方法POST
Content-Typeapplication/json
请求编码UTF-8
请求路径/server/v1/device/unsubscribe_tags

请求参数

名称类型必须默认描述
registration_idStringNull注册ID
tagsStringNull标签内容,多个标签之间使用分号分隔 限制:单次调用接口可删除50个标签

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString 否错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体

响应示例

{
    "code": 0,
    "message": "success"
}

查询所有标签

接口

描述内容
接口功能查询该设备所有标签
请求方法POST
Content-Typeapplication/json
请求编码UTF-8
请求路径/server/v1/device/get_all_tags

请求参数

名称类型必须默认描述
registration_idStringNull注册ID

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体

响应示例

{
    "code": 0,
    "message": "success",
    "data": {
        "registrationId": "58ad47319e8d725350a5afd5",
        "tags": [
            {
                "tag": "深圳"
            },
            {
                "tag": "广州"
            }
        ]
    }
}

OPPO开放平台消息推送设置别名管理方法

OPPO开放平台消息推送设置别名管理方法

别名管理

别名(Alias)是OPPO PUSH提供的一项用户设备映射功能。通过别名,开发者可以为注册ID建立一个方便自己管理的别名,在推送消息时,可以通过别名推送的方式,传入设置好的别名,OPPO PUSH会把别名转化为注册ID并正确下发。OPPO PUSH提供了创建别名,删除别名和查询别名三个与别名相关的管理接口。

创建别名

接口

环境HTTPS请求地址备注
生产环境https://api-device.push.heytapmobi.com/设备API
沙箱环境暂无
描述内容
接口功能建立registration_id与alias的相互的一对一映射关系,需要注意的是,一个别名仅与一个注册ID构成映射关系,如果对同一个别名注册多个不同的注册ID映射,服务将为最近一次的注册行为建立映射关系并覆盖原有的所有映射。
请求方法POST
Content-Typeapplication/json
请求编码UTF-8
请求路径/server/v1/device/set_alias

请求参数

名称类型必须默认描述
registration_idStringNull注册ID
aliasStringNull别名内容(仅支持单值,与注册ID一一对应),最大64字符(不能输入分号)

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体

成功的响应示例

{
    "code": 0,
    "message": "success"
}

失败的响应示例

{
    "code": -1,
    "message": "Service Currently Unavailable"
}

删除别名

接口

描述内容
接口功能删除别名
请求方法POST
Content-Typeapplication/json
请求编码UTF-8
请求路径/server/v1/device/delete_alias

请求参数

名称类型必须默认描述
registration_idStringNull注册ID registration_id与alias不同时为空 registration_id与alias皆不为空时,registration_id优先于alias
aliasStringNull别名(仅支持单值,与注册ID一一对应) registration_id与alias不同时为空 registration_id与alias皆不为空时,registration_id优先于alias

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体

成功的响应示例

{
    "code": 0,
    "message": "success"
}

失败的响应示例

{
    "code": -1,
    "message": "Service Currently Unavailable"
}

查询别名

接口

描述内容
接口功能查询别名
请求方法POST
Content-Typeapplication/json
请求编码UTF-8
请求路径/server/v1/device/get_alias

请求参数

名称类型必须默认描述
registration_idString注册ID

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体

成功的响应示例

{
    "code": 0,
    "message": "success",
    "data": {
        "registrationId": "58ad47319e8d725350a5afd5",
        "alias": "AliasName"
    }
}

失败的响应示例

{
    "code": -1,
    "message": "Service Currently Unavailable"
}

OPPO开放平台 OPPO推送独立接口上传图片

OPPO开放平台 OPPO推送独立接口上传图片

上传图片

OPPO PUSH提供携带图片的消息推送能力,在使用图片推送前,需要先将图片上传到OPPO PUSH服务端,由OPPO PUSH服务端统一处理存储,推送消息时使用上传成功的图片ID作为图片索引,由OPPO PUSH服务将图片组装为消息体的内容部分并下发。

上传大图

接口

环境HTTPS请求地址备注
生产环境https://api-media.push.heytapmobi.com/媒体服务
沙箱环境暂无
描述内容
接口功能上传图片
请求方法POST
请求编码UTF-8
Content-Typemultipart/form-data
请求路径/server/v1/media/upload/big_picture

请求参数

图片文件按照multipart/form-data标准携带图片文件,图片要求尺寸876*324 px,文件大小1M以内,格式为PNG/JPG/JPEG。

名称类型必须默认描述
FILE图片文件
picture_ttlInt86400图片保存的存活时间(time_to_live) (单位:秒),最长30天

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体
{
    "code": 0,
    "message": "success",
    "data": {
        "big_picture_id": xxxxxxxxx //大图id
      }
}

上传图标

接口

描述内容
接口功能上传图片
请求方法POST
请求编码UTF-8
Content-Typemultipart/form-data
请求路径/server/v1/media/upload/small_picture

请求参数

图片文件按照multipart/form-data标准携带图片文件,图片要求尺寸144*144 px,文件大小为50k以内,格式为PNG/JPG/JPEG

名称类型必须默认描述
FILE图片文件
picture_ttlInt86400图片保存的存活时间(time_to_live) (单位:秒),最长30天

响应参数(JSON)

名称类型必须描述
codeInt返回码,请参考公共返回码与接口返回码
messageString错误详细信息,不存在则不填
dataString返回值,JSON类型,包含响应结构体

响应示例

{
    "code": 0,
    "message": "success",
    "data": {
        "small_picture_id": xxxxxxxxx, //图标id
      }
}

OPPO开放平台 消息回执说明

OPPO开放平台 消息回执说明

消息回执

消息回执是OPPO PUSH提供给开发者获知消息送达状态的功能。由于推送消息请求是异步调用,调用请求接口成功仅表示消息成功开始下发,不代表消息最终的推送状态,因此OPPO PUSH在后续的消息推送流程中捕获重要事件,并通过HTTP请求的形式反馈给开发者,这个功能成为消息回执功能。

开启和配置消息回执

要使用消息回执功能,开发者在推送每条消息时需要在对应的请求字段中配置回执参数,目前回执参数主要有两个,一个是开发者接受OPPO PUSH回执HTTP请求的目标地址URL,以及这个回执请求携带的URL参数。

回执参数是归属于消息体内容的参数,和其他消息体参数一样,按照不同推送方式,在创建广播消息体或在单点推送接口中正确配置配置参数即可获取消息的回执。

以下是回执参数说明:

名称类型是否必填默认描述是否支持单推
call_back_urlString* 仅支持registrationId推送方式 *
开发者接收消息送达的回执消息的URL地址。
OPPO PUSH提供消息回执的功能,消息回执的功能是指消息送达后,OPPO PUSH基于HTTP/HTTPS请求的方式告知开发者对应消息的送达情况。
要使用回执功能,开发者需要配置回执目标地址的URL参数,URL长度限制在限制200以内。
以下是一个使用回执的示例:
1.开发者配置本参数
2.消息到达设备后,OPPO PUSH根据本参数,向这个URL以
Content-Type为application/json的方式发送一个HTTP/HTTPS请求。请求内容的示例如下
JSON 数据示例:
[
{
“messageId”: “msgId1”, // 到达的消息ID
“appId”: “appid”, // 对应的应用ID
“taskId”: “taskId1”, // 如果是广播消息,对应taskID;如果是单推消息,该字段为消息ID
“registrationIds”: “regId1, regid2”, // 消息的推送目标注册ID
“eventTime”: “timestamp”, // 回执事件产生时间
“param”: “call_back_parameter”, // 开发者指定的回执参数
“eventType”: “push_arrive” // 到达事件,消息到达的事件被定义为push_arrive
},
// 对于完全一致的URL地址,OPPO PUSH可能会将相同URL地址回执信息在一个HTTP/HTTPS请求中发送,因此body里是一个长度大于等于1的JSON数组
{
“messageId”: “msgId1”,
“appId”: “appid”,
“taskId”: “taskId1”,
“registrationIds”: “regId1,regid2”,
“eventTime”: “timestamp”,
“param”: “call_back_parameter”,
“eventType”:
“push_arrive”
}
]
call_back_parameterString开发者指定的自定义回执参数。
数字符串长度限制在100以内,OPPO PUSH将这个参数设置在回执请求体单个JSON结构的param字段中。

回执事件

OPPO PUSH 有如下回执事件

回执事件含义触发条件备注
push_arrive表明消息成功到达设备消息成功到达设备,OPPO PUSH客户端向服务端反馈已经收到该条消息。表示消息到达OPPO PUSH客户端,不包含通知栏的展示,点击等后续动作含义。
regid_invalid无效的RegistrationID应用被卸载、应用自动注销、用户设备刷机、设备30天内未联网会导致RegistrationID失效开发者接收到无效RegistrationID的回执后可以做剔除或者过滤处理,减少无效推送