VIVO消息推送 接入push服务注意事项

VIVO消息推送 接入push服务注意事项

开发者接入push服务存在的共性问题排查指南:

一、请接入方先通过本地工具【postmen】先调用我们提供的接口,保证本地调用我们的接口是没有问题【减少在开发过程沟通成本】

二、如果是本地工具接口测试:请先检查一下事项

 1、请先测试推送鉴权接口,获取到 authToken 才可以进行消息推送 【可以确保接入方本地调用push服务是通的】

 2、检查一下当前应用是否是受限应用(受限应用将在2-3个工作日内转为正式)

①如果是受限应用,则只能测试单播接口,测试其他推送接口会有对应提示

②如果是受限应用,那么需要在vivo推送营运平台后台添加要测试的设备【设备id(regId)】最多可以添加20个设备

③如果是受限应用,在调用单播接口的时候,需要在请求参数中确认pushMode==1字段(0:正式推送;1:测试推送,不填默认为0)

   测试推送没有频控限制(受限应用发不了正式推送)

3、检查一下当前推送的消息是运营消息还是系统消息【前提:推送为正式推送】

(接入方在推送的时候 参数 classification==0 , 0:运营类消息,1:系统类消息。不填默认为0)

如果客户端多次收到消息后,又出现收不到的情况

检查消息是否被管控,单用户单应用每天收到的消息条数上限5条,系统消息不受应用频控管控,受系统消息推送总量限制

建议:如果只是检验功能,建议使用测试推送【测试消息不受频控、推送量级管控】

三、关于消息数据统计问题【vivo推送运营后台有相关消息统计明细分布情况】

请各个接入方先到 vivo推送管理后台查看当前应用消息大体的数据统计分布情况

统计分两种:

 ①应用级别的消息统计明细分布情况

 ②单推统计明细分布情况

【可以通过这两个指标,进一步分析消息没有达到的原因】    

同时:建议接入方在关键地方也收集数据。比如消息达到客户端,建议应用方也做一个记录。

对我们接口返回的regId(1.userId不存在;2.卸载或者关闭了通知;3.七天不在线;4.非测试用户),这些状态也存储一下,可以预防无效的推送

四、如遇接口返回状态码 10206 sign 不正确提示 【前提:一样的签名方法, 偶现签名不正确】

如果出现这种情况:

就是业务方在进行签名的时候 appId/appKey/appSecret 存在本来给“应用A”生成的签名,结果把sign拿给“应用B”进行签名了

【签名:使用MD5算法,字符串trim后拼接(appId+appKey+timestamp+appSecret),然后通过MD5加密得到的值(字母小写)】

请接入方在有多个应用的时候,要注意签名方法的使用,防止签名误传

五、如遇接口返回状态码 10000 权限认证失败,则表示应用方获取的authToken 失效了 ,请重新获取

六、regId升级

原有token(regId)生成规则是固定23位数字。已不能满足后续增长需求,推送平台从2022年5月开始升级token(regId)生成规则,取消现有固定23位长度及数字限制,新规则长度可变,包含字符“0-9”、“a-z”、“A-Z”及特殊字符。2022年7月30号全量升级。老的regId不变,新订阅会按照新regId规则生成。

七、如何发送测试消息图解

接入Vpush后的应用均可以发送测试消息。发送测试消息的步骤如下:

1、  先在推送运营后台添加测试设备。

1)  在推送平台找到你的应用名称

2)  在刚才的基础之前要点击测试设备

3)  到了这个页面  要点击添加测试设备

4)  添加具体信息点击确定

2、然后接入服务端API,通过调用/message/send,pushMode设置为1,给第一步绑定成功的测试设备发送消息。详情请见《服务端API接口文档》

说明:

1、  添加测试设备为接入客户端SDK,订阅获取到的regId,通过调用客户端api接口的getRegId方法获取,详情请见《客户端API接口文档》

2、最多支持添加20个测试设备

3、测试消息不受量级和频次限制。

VIVO消息推送服务端API接口文档

VIVO消息推送服务端API接口文档

当前版本:2.9.2

修改记录:

(1)/message/auth接口,鉴权码生成方式优化,增加调用频率为10次/s,取消每天10000次数量限制;

(2)各接口请求体,新增appId,用于跟鉴权信息进行比对,确认是否为应用信息一致,不一致返回错误码10094

一.公共

1.推送超量说明

如果调用接口出现超量限制的返回码,请不要在当天高频次调用服务器相应接口,否则将调低推送量级;

出现“10070:发送总量超出限制”。当天不要调用/message/send 单推接口;

出现“10252:批量发送消息体超出限制”。当天不要调用/message/saveListPayload 保存群推消息公共体接口;

出现“10070:发送总量超出限制”。当天不要调用/message/saveListPayload 保存群推消息公共体接口,以及/message/pushToList 批量推送用户接口;

出现“10254:全量发送超过次数限”。当天不要调用/message/all 全量发送接口;

关于推送量的说明可以参考【vivo推送常见问题汇总】

2.vivo服务器地址

https://api-push.vivo.com.cn

3.公共传入参数

HTTP Header中(推送鉴权接口除外)。

属性名字类型是否必填Y/N描述
authTokenstringY当鉴权成功时会返回该字段,推送消息时需要提供authToken,有效期默认为1天,过期后无法使用

4.高级特性extra

注意:回执目前仅支持单推接口且是正式消息 

属性名字类型是否必填Y/N描述
callbackstringY第三方接收回执的http接口,最大长度128个字符
callback.paramstringN第三方自定义回执参数,最大长度64个字符

二.接口定义

1.鉴权

1.1推送鉴权接口

接口说明

要想调用PUSH接口,任何接入方都要有个鉴权操作。其他接口header中必须携带该参数。

接口返回的参数authToken,一个appId可对应多个token,24小时过期,业务方做中心缓存,1-2小时更新一次。

限制:频率限制,单个app 10次/s。超频返回错误码10094。

访问方式

URL编码方式协议methodContent-Type
/message/authUtf-8httpsPOSTapplication/json
Curl e.g.:curl -X POST -H     ‘Content-Type:application/json’ -d   ‘${your_request_body}’     https://api-push.vivo.com.cn/message/authRequest body e.g.:{        “appId”:10004,          “appKey”:”25509283-3767-4b9e-83fe-b6e55ac6243e”,        “timestamp”:1501484120000,          “sign”:”8424f52fd5eaedc16474e4f702d230d2″}Response body e.g.:http status 200:业务成功:{         “result”:   0,         “desc”:   “请求成功”,        “authToken”:     “24ojds98fu3jqrioeu982134jieds9fq43u09uaf”}业务异常:{         “result”:   xxx,         “desc”:   “xxx不合法”}http status 500:Internet server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId
appKeystringY用户申请推送业务时获得的appKey
timestamplongYUnix时间戳 做签名用,单位:毫秒,且在vivo服务器当前utc时间戳前后十分钟区间内。
signstringY签名 使用MD5算法,字符串trim后拼接(appId+appKey+timestamp+appSecret),然后通过MD5加密得到的值(字母小写)

 输出参数:

属性名字类型描述
resultint接口调用是否成功的状态码 0成功,非0失败
descstring文字描述接口调用情况
authTokenstring当鉴权成功时才会有该字段,推送消息时,需要提供authToken,有效期默认为1天,过期后无法使用。一个appId可对应多个token,24小时过期,业务方做中心缓存,1-2小时更新一次。

2.单播

2.1单推接口

接口说明

接入方携带消息内容以及用户regId(或alias)进行通知消息推送。针对每个用户发送不同的通知。

使用场景:如物流、订单状态、游戏预约状态、行程状态、聊天(如微信、评论)等。

限制:根据客户端SDK订阅数自动配置,可发送的用户总量可以在开发者后台查看。

访问方式

URL编码方式协议methodContent-Type
/message/sendUtf-8httpsPOSTapplication/json
Curl e.g.:curl -X POST -H ‘authToken:${your_auth_token}’   -H     ‘Content-Type:application/json’  -d     ‘${your_request_body}’   https://api-push.vivo.com.cn/message/sendRequest body e.g.:{      “appId”:10004,      “regId”:”12345678901234567890123″,      “notifyType”:1,      “title”:”标题1″,      “content”:”内容1″,      “timeToLive”:86400,      “skipType”:2,          “skipContent”:”http://www.vivo.com”,        “networkType”:”1″,      “clientCustomMap”:{              “key1″:”vlaue1”,              “key2″:”vlaue2”    },    “extra”:{              “callback”:”http://www.vivo.com”,              “callback.param”:”vivo”    },          “requestId”:”25509283-3767-4b9e-83fe-b6e55ac6b123″}Response body e.g.:http status 200:业务成功:{         “result”:   0,         “desc”:   “请求成功”,”taskId”:   “121397329”}推送使用的regid或alias不合法,无法送达:{        “result”: 10302,        “desc”: “regId 不合法”,        “invalidUser”: {            “status”: 1,            “userid”:   “15638535410301000000001”      }}业务异常:{         “result”:   xxx,”desc”: “xxx不合法”} http status 500:Internet server error!

接口定义

输入参数:

intent uri

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送
regIdstringN应用订阅PUSH服务器得到的id   长度23个字符(regId,alias 两者需一个不为空,当两个不为空时,取regId)
aliasstringN别名 长度不超过40字符(regId,alias两者需一个不为空,当两个不为空时,取regId)
notifyTypeintY通知类型 1:无,2:响铃,3:振动,4:响铃和振动
titlestringY通知标题(用于通知栏消息) 最大20个汉字(一个汉字等于两个英文字符,即最大不超过40个英文字符)
contentstringY通知内容(用于通知栏消息) 最大50个汉字(一个汉字等于两个英文字符,即最大不超过100个英文字符)
timeToLiveintN消息保留时长 单位:秒,取值至少60秒,最长7天。当值为空时,默认一天
skipTypeintY点击跳转类型 1:打开APP首页 2:打开链接 3:自定义 4:打开app内指定页面
skipContentstringN跳转内容 跳转类型为2时,跳转内容最大1000个字符,跳转类型为3或4时,跳转内容最大1024个字符,skipType传3需要在onNotificationMessageClicked回调函数中自己写处理逻辑。关于skipContent的内容可以参考【vivo推送常见问题汇总】
networkTypeintN网络方式 -1:不限,1:wifi下发送,不填默认为-1
classificationintN消息类型 0:运营类消息,1:系统类消息。不填默认为0
clientCustomMapJSON ObjectN客户端自定义键值对 自定义key和Value键值对个数不能超过10个,且长度不能超过1024字符, key和Value键值对总长度不能超过1024字符。app可以按照客户端SDK接入文档获取该键值对
extraJSON ObjectN高级特性(详见目录:一.公共——5.高级特性 extra)
requestIdstringY用户请求唯一标识 最大64字符
pushModeintN推送模式 0:正式推送;1:测试推送,不填默认为0(测试推送,只能给web界面录入的测试用户推送;审核中应用,只能用测试推送)
auditReviewJSON ArrayN第三方审核结果,参见:基于第三方审核结果的消息推送

 输出参数:

属性名字类型描述
resultint接口调用是否成功的状态码 0成功,非0失败
descstring文字描述接口调用情况
taskIdstring任务编号
 invalidUserJSON Object非法用户信息,包括status和userid,userid为接入方传的regid或者alias,status有三种情况:1.userId不存在;2.卸载或者关闭了通知;3.七天不在线;4.非测试用户

3.广播

3.1保存群推消息公共体接口

接口说明

同一条信息覆盖多个用户。此接口需与批量推送用户接口3.2配套使用,批量推送接口用此接口生成taskId批量发送用户。

使用场景:活动、系统升级提醒等。

限制:默认根据客户端SDK订阅数自动配置。

访问方式

URL编码方式协议methodContent-Type
/message/saveListPayloadUtf-8httpsPOSTapplication/json
Curl e.g.:curl -X POST  -H   ‘authToken:${your_auth_token}’ -H     ‘Content-Type:application/json’    -d   ‘${your_request_body}’   https://api-push.vivo.com.cn/message/saveListPayloadRequest body e.g.:{        “appId”:10004,        “title”:”标题1″,        “content”:”内容1″,        “notifyType”:1,        “timeToLive”:86400,        “skipType”:2,          “skipContent”:”http://www.vivo.com”,        “networkType”:”1″,        “clientCustomMap”:{              “key1″:”vlaue1”,              “key2″:”vlaue2”},          “requestId”:”25509283-3767-4b9e-83fe-b6e55ac6b123″}Response body e.g.:http status 200:业务成功:{         “result”:   0,         “desc”:   “请求成功”,”taskId”:   “342982232646905856”}业务异常:{         “result”:   xxx,”desc”: “xxx不合法”}http status 500:Internet server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送
notifyTypeintY通知类型 1:无,2:响铃,3:振动,4:响铃和振动
titlestringY通知标题(用于通知栏消息) 最大20个汉字(一个汉字等于两个英文字符,一个表情占一个字符,即最大不超过40个英文字符)
contentstringY通知内容(用于通知栏消息) 最大50个汉字(一个汉字等于两个英文字符,一个表情占一个字符,即最大不超过100个英文字符)
timeToLiveintN消息保留时长 单位:秒,取值至少900秒,最长7天。当值为空时,默认一天。
skipTypeintY点击跳转类型 1:打开APP首页 2:打开链接 3:自定义 4:打开app内指定页面
skipContentstringN跳转内容 跳转类型为2时,跳转内容最大1000个字符,跳转类型为3或4时,跳转内容最大1024个字符,skipType传3需要在onNotificationMessageClicked回调函数中自己写处理逻辑。关于skipContent的内容可以参考【vivo推送常见问题汇总】 pushSDK版本号:480以上,不在支持skipType=3,自定义跳转统一使用skipType=4,详见【vivo推送常见问题汇总】中API接入问题的Q11中的intent uri示例。
networkTypeintN网络方式 -1:不限,1:wifi下发送,不填默认为-1
classificationintN消息类型 0:运营类消息,1:系统类消息。不填默认为0
clientCustomMapJSON ObjectN客户端自定义键值对 自定义key和Value键值对个数不能超过10个,且长度不能超过1024字符, key和Value键值对总长度不能超过1024字符。app可以按照客户端SDK接入文档获取该键值对。
requestIdstringY用户请求唯一标识 最大64字符
auditReviewJSON ArrayN第三方审核结果,参见:基于第三方审核结果的消息推送

输出参数:

属性名字类型描述
resultint接口调用是否成功的状态码 0成功,非0失败
descstring文字描述接口调用情况
taskIdstring任务编号

3.2批量推送用户接口

接口说明

批量发送用户。此接口与群推消息接口3.1配套使用,首先通过群推消息接口3.1返回taskId,然后此接口带上taskId批量发送用户,可以根据regIds或者aliases分批调用。每次调用时,regIds或者aliases的个数必须大于等于2,小于等于1000。

限制:根据客户端SDK订阅数自动配置,可发送的用户总量可以在开发者后台查看。

访问方式

URL编码方式协议methodContent-Type
/message/pushToListUtf-8httpsPOSTapplication/json
Curl e.g.:   curl -X POST -H   ‘authToken:${your_auth_token}’ -H       ‘Content-Type:application/json’  -d   ‘${your_request_body}’   https://api-push.vivo.com.cn/message/pushToListRequest body e.g.:{      “appId”:10004,      “regIds”:[              “12345678901234567890121”,              “12345678901234567890122”        ],          “taskId”:”342982232646905856″,          “requestId”:”25509283-3767-4b9e-83fe-b6e55ac6b123″}Response body e.g.:http status 200:业务成功:{    “requestId”: “25509283-3767-4b9e-83fe-b6e55ac6b123”,    “result”: 0,    “desc”: “请求成功”,    “invalidUsers”: [{        “status”: 1,        “userid”: “12345678901234567890121”    }]}
业务异常:{         “result”:   xxx,         “desc”:   “xxx不合法”}http status 500:Internet server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送
regIdsstring[]NregId列表 个数大于等于2,小于等于1000(regIds,aliases   两者需一个不为空,两个不为空,取regIds)
aliasesstring[]N别名列表个数大于等于2,小于等于1000,长度不超过40字符(regIds,aliases 两者需一个不为空,两个不为空,取regIds)
taskIdstringY公共消息任务号,取saveListPayload返回的taskId
requestIdstringY请求唯一标识,最大64字符
pushModeintN推送模式 0:正式推送;1:测试推送,不填默认为0(测试推送,只能给web界面录入的测试用户推送;审核中应用,只能用测试推送)

输出参数:

  属性名字  类型  描述
  result  int  接口调用是否成功的状态码 0成功,非0失败
  desc  string  文字描述接口调用情况
  invalidUser  JSON Object  非法用户信息,包括status和userid,userid为接入方传的regid或者alias,status有三种情况:1.userId不存在;2.卸载或者关闭了通知;3.七天不在线;4.非测试用户

3.3全量发送接口

接口说明

向所有设备推送某条消息。

使用场景:活动、系统升级提醒等。

限制:默认是每个app每日可发送一条。

访问方式

URL编码方式协议methodContent-Type
/message/allUtf-8httpsPOSTapplication/json
Curl e.g.:curl -X POST -H     ‘authToken:${your_auth_token}’ -H     ‘Content-Type:application/json’  -d ‘${your_request_body}’     https://api-push.vivo.com.cn/message/allRequest body e.g.:{        “appId”:10004,        “notifyType”:1,        “title”:”标题1″,        “content”:”内容1″,        “timeToLive”:86400,        “skipType”:2,          “skipContent”:”http://www.vivo.com”,        “networkType”:”1″,      “clientCustomMap”:{              “key1″:”vlaue1”,              “key2″:”vlaue2”      },          “requestId”:”25509283-3767-4b9e-83fe-b6e55ac6b123″}Response body e.g.:http status 200:业务成功:{         “result”:   0,         “desc”:   “请求成功”,”taskId”:     “12139732”}业务异常:{         “result”:   xxx,”desc”: “xxx不合法”}http status 500:Internet server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送
notifyTypeintY通知类型 1:无,2:响铃,3:振动,4:响铃和振动
titlestringY通知标题(用于通知栏消息) 最大20个汉字(一个汉字等于两个英文字符,一个表情占一个字符,即最大不超过40个英文字符)
contentstringY通知内容(用于通知栏消息) 最大50个汉字(一个汉字等于两个英文字符,一个表情占一个字符,即最大不超过100个英文字符)
timeToLiveintN消息保留时长 单位:秒,取值至少900秒,最长7天。当值为空时,默认一天
skipTypeintY点击跳转类型 1:打开APP首页 2:打开链接 3:自定义 4:打开app内指定页面
skipContentstringN跳转内容 跳转类型为2时,跳转内容最大1000个字符,跳转类型为3或4时,跳转内容最大1024个字符,skipType传3需要在onNotificationMessageClicked回调函数中自己写处理逻辑。关于skipContent的内容可以参考【vivo推送常见问题汇总】 pushSDK版本号:480以上,不在支持skipType=3,自定义跳转统一使用skipType=4,详见【vivo推送常见问题汇总】中API接入问题的Q11中的intent uri示例。
networkTypeintN网络方式 -1:不限,1:wifi下发送,不填默认为-1
classificationintN消息类型 0:运营类消息,1:系统类消息。不填默认为0
clientCustomMapJSON ObjectN客户端自定义键值对 自定义key和Value键值对个数不能超过10个,且长度不能超过1024字符, key和Value键值对总长度不能超过1024字符。app可以按照客户端SDK接入文档获取该键值对
requestIdstringY用户请求唯一标识 最大64字符
auditReviewJSON ArrayN第三方审核结果,参见:基于第三方审核结果的消息推送

输出参数:

属性名字类型描述
resultint接口调用是否成功的状态码 0成功,非0失败
descstring文字描述接口调用情况
taskIdstring任务编号

3.4获取消息推送的统计值接口

接口说明

获取taskId对应的统计信息,taskIds最多100个。 注意:查询的消息类型 【群推送消息/列表推消息】

访问方式

URL编码方式协议methodContent-Type
/report/getStatisticsUtf-8httpsGETapplication/json
Curl e.g.:   curl -X GET  -H   ‘authToken:${your_auth_token}’ -H       ‘Content-Type:application/json’     https://api-push.vivo.com.cn/report/getStatistics?appId=10004&taskIds=123138209,23498102,3240910940,109283018Request body e.g.:Response body e.g.:http status 200:业务成功:{        “result”:0,        “desc”:”请求成功”,      “statistics”:[    {          “taskId”:   “298475091219”,          “target”: 10000,          “valid”: 9500,          “send”: 9000,          “receive”: 9000,          “display”: 8000,          “click”: 200,          “targetInvalid”:   200,          “targetUnSub”:   200,          “targetInActive”: 100,          “covered”: 200,          “controlled”:   200,          “targetOffline”:   100    },    {          “taskId”:   “298475091220”,          “target”: 10000,          “valid”: 9500,          “send”: 9000,          “receive”: 9000,          “display”: 8000,          “click”: 200,          “targetInvalid”:   200,          “targetUnSub”:   200,            “targetInActive”: 100,          “covered”: 200,          “controlled”:   200,          “targetOffline”:   100    }]}业务异常:{         “result”:   xxx,         “desc”:   “xxx不合法”}http status 500:Internet server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送
taskIdsstringY查询的任务列表taskIds 用,分隔开 e.g.:   “234567,234568”

输出参数:

属性名字类型描述
resultint接口调用是否成功的状态码 0成功,非0失败
descstring文字描述接口调用情况
taskIdstring任务号
targetlong目标总数
targetInvalidlong不存在的用户总数,根据id找不到任何信息
targetUnSublong解订阅的用户总数,用户已卸载或者客户端主动调用turnOffPush()解订阅
targetInActivelong14天不在网的用户数,手机14天没有联网,信息被后台删除
validlong有效目标总数
coveredlong被覆盖的用户消息总数,群推、全推、标签推消息属于营销消息,会被覆盖
controlledlong被管控的用户消息总数,例如接收的群推消息总数一天超过5条
targetOfflinelong推送后不在线的用户数,截止到当前统计时间为止,没有联网的用户数,呈下降趋势
sendlong下发总数
receivelong到达总数
displaylong展示总数
clicklong点击总数

4.回执

4.1消息送达回执

接口说明

vivo推送服务器将已送达或和对应设备的alias或者regId通过调用第三方设置的回调,http接口传给开发者服务器。仅单播支持回执(每次调用后,推送服务器会清空这些数据。)

使用:

① 发送消息接口设置扩展参数extra(详见目录:一.公共——5.高级特性 extra), 包含callback、callback.param。

② vivo推送服务器调用第三方设置的callback url接口。 

③ 字段ackType  【达回执类型】目前只有到达回执ackType=0

访问方式

URL编码方式协议methodContent-Type
第三方设置的callback url(详见:高级特性 extra)Utf-8https/httpPOSTapplication/json
Curl e.g.:   curl -X POST -H   ‘Content-Type:application/json’ -d     ‘${your_request_body}’   https://callbackurlRequest body e.g.:{      “taskId1”:{              “param”:”param1″,              “targets”:”alias1,alias2,alias3″,              “ackTime”:1612776166257    },      “taskId2”:{              “param”:”param2″,              “targets”:”regId1,regId2,regId3″,              “ackTime”:1612776166258    }}Response body e.g.:http status 200:http status 500:Internet server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
taskIdstringY任务编号
paramstringY开发者上传的自定义参数值
targetsstringY一批alias或者regId列表,之间是用逗号分割
ackTimelongN回执到达时间,毫秒时间戳

 回执流程

设备在线:

设备不在线:

5.标签管理

5.1 新增标签接口

接口说明

为应用方增加标签,用于后续标签推送。

访问方式

URL编码方式协议methodContent-Type
/tag/addUtf-8httpsPOSTapplication/json
Curl e.g.:   curl -X POST   -H   ‘authToken:${your_auth_token}’ -H     ‘Content-Type:application/json’  -d     ‘${your_request_body}’ https://host:port/tag/addRequest   body e.g.:{          “appId”:10004,          “name”:   “shenzhen”,          “desc”:”深圳用户标签”,       “group”:”city”}Response body   e.g.:http status   200:{         “result”: 0,         “desc”: “成功”,}业务异常:{         “result”: xxx,”desc”:     “xxx”}http status   500:Internet   server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送
namestringY标签名称
descstringN标签描述
groupstringN标签分类名

输出参数:

属性名字类型描述
resultint接口调用是否成功的状态码 0成功,非0失败
descstring文字描述接口调用情况

5.2 更新单个标签接口

接口说明

更新一个标签的信息,更新标签名字、描述、所属分类。

访问方式

URL编码方式协议methodContent-Type
/tag/updateUtf-8httpsPOSTapplication/json
Curl e.g.:   curl -X POST   -H   ‘authToken:${your_auth_token}’ -H     ‘Content-Type:application/json’  -d ‘${your_request_body}’       https://host:port/tag/updateRequest   body e.g.:{           “appId”:10004,           “oldName”:”shenzhen”,           “newName”:”shenzhenbaoan”}Response body   e.g.:http status   200:{    “result”:   0,    “desc”:   “成功”}业务异常:{         “result”: xxx,”desc”:     “xxx”}http status   500:Internet   server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送
oldNamestringY旧标签名称
newNamestringY新标签名称
descstringN更新标签描述
groupstringN更新标签所属分类

输出参数:

属性名字类型描述
resultint接口调用是否成功的状态码 0成功,非0失败
descstring文字描述接口调用情况

5.3 给标签添加用户设备接口

接口说明

给标签添加用户设备信息,单次不超过1000个设备。

访问方式

URL编码方式协议methodContent-Type
/tag/addMembersUtf-8httpsPOSTapplication/json
Curl e.g.:   curl -X POST   -H   ‘authToken:${your_auth_token}’ -H ‘Content-Type:application/json’      -d ‘${your_request_body}’   https://host:port/tag/addMembersRequest   body e.g.:{         “appId”:10004,         “name”:”shenzhen”,         “type”:1,             “ids”:[“15549635570031000000216″,”15549635980031000001086”]}Response body   e.g.:http status   200:{    “result”:   0,    “desc”:   “success”,    “data”: [          {                “status”: 1,                “userid”:   “00000000000000000000004”          },          {                “status”: 1,                “userid”:   “00000000000000000000005”          }    ]}业务异常:{         “result”: xxx,”desc”:     “xxx”}http status   500:Internet   server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送
namestringY标签名字
typeintY用户类型:1是regId   ,2是别名
idsJSON ArrayY用户id

输出参数:

属性名字类型描述
resultint接口调用是否成功的状态码 0成功,非0失败
descstring文字描述接口调用情况
dataJSON Arrayuserid是非法用户id,status有3种状态:1是用户不存在,2是用户push开关关闭,3是用户14天未联网。

5.4 移除标签中的用户设备接口

接口说明

移除标签中的用户设备信息,单次不超过1000个设备。

访问方式

URL编码方式协议methodContent-Type
/tag/removeMembersUtf-8httpsPOSTapplication/json
Curl e.g.:   curl -X POST   -H   ‘authToken:${your_auth_token}’ -H     ‘Content-Type:application/json’  -d ‘${your_request_body}’       https://host:port/tag/removeMembersRequest   body e.g.:{         “appId”:10004,         “name”:”shenzhen”,         “type”:1,         “ids”:[“15554239157791000000009″,”15554239157791000000008”]}Response body   e.g.:http status   200:{    “result”:   0,    “desc”:   “success”,    “data”: [          {                “status”: 1,                “userid”:   “15554239157791000000008”          },          {                “status”: 1,                “userid”:   “15554239157791000000009”          }    ]}业务异常:{         “result”: xxx,         “desc”:     “xxx”}http status   500:Internet   server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送
namestringY标签名字
typeintY用户类型:1是regId   ,2是别名
idsJSON ArrayY用户id

输出参数:

属性名字类型描述
resultint接口调用是否成功的状态码 0成功,非0失败
descstring文字描述接口调用情况
dataJSON Arrayuserid是非法用户id,status有3种状态:1是用户不存在,2是用户push开关关闭,3是用户14天未联网。

6.标签分类管理

6.1 新增标签分类接口

接口说明

为应用方增加标签分类,用于后续标签分类管理。

访问方式

URL编码方式协议methodContent-Type
/tagGroup/addUtf-8httpsPOSTapplication/json
Curl e.g.:   curl -X POST   -H   ‘authToken:${your_auth_token}’ -H     ‘Content-Type:application/json’  -d   ‘${your_request_body}’ https://host:port/tagGroup/addRequest body e.g.:{    “appId”:10004,    “name”:   “guangzhou”,     “type”:”city”}Response body   e.g.:http status   200:{         “result”: 0,         “desc”: “成功”,}业务异常:{         “result”: xxx,         “desc”:     “xxx”}http status   500:Internet   server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送
namestringY标签分类名称
typeintY标签分类类型:1是普通标签,2是互斥标签
descstringN标签分类描述

输出参数:

属性名字类型描述
resultint接口调用是否成功的状态码 0成功,非0失败
descstring文字描述接口调用情况

6.2 更新单个标签分类接口

接口说明

更新一个标签分类的信息,包括标签分类名称和描述。

访问方式

URL编码方式协议methodContent-Type
/tagGroup/updateUtf-8httpsPOSTapplication/json
Curl e.g.:   curl -X POST   -H   ‘authToken:${your_auth_token}’ -H     ‘Content-Type:application/json’  -d ‘${your_request_body}’       https://host:port/tagGroup/updateRequest   body e.g.:{      “appId”:10004,      “oldName”: “city”,      “newName”:   “province”,      “desc”:   “这是更新后的描述”}Response body   e.g.:http status   200:{    “result”:   0,    “desc”:   “成功”}业务异常:{         “result”: xxx,         “desc”:     “xxx”}http status   500:Internet   server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送
oldNamestringY旧标签分类名称
newNamestringY新标签分类名称
descstringN新标签分类的描述

输出参数:

属性名字类型描述
resultint接口调用是否成功的状态码 0成功,非0失败
descstring文字描述接口调用情况

6.3 添加标签到标签分类接口

接口说明

把标签添加进标签分类里面,一次可添加一个或者多个标签,最多不超过100个。

访问方式

URL编码方式协议methodContent-Type
/tagGroup/addToGroupUtf-8httpsPOSTapplication/json
Curl e.g.:   curl -X POST   -H   ‘authToken:${your_auth_token}’ -H     ‘Content-Type:application/json’  -d ‘${your_request_body}’       https://host:port/tagGroup/addToGroupRequest   body e.g.:{         “appId”:10004,         “name”:”city”,         “tagList”:[“shenzhen”,”guangzhou”]}Response body   e.g.:http status   200:{    “result”:   0,    “desc”:   “成功”}业务异常:{         “result”: xxx,”desc”:     “xxx”}http status   500:Internet   server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送
namestringY标签分类名称
tagListJSON ArrayY一个或多个标签

输出参数:

属性名字类型描述
resultint接口调用是否成功的状态码 0成功,非0失败
descstring文字描述接口调用情况

7.标签组合管理

7.1 新增标签组合接口

接口说明

为应用方增加标签组合。 一个标签组合由多个标签组成。

访问方式

URL编码方式协议methodContent-Type
/tagSegment/addUtf-8httpsPOSTapplication/json
Curl e.g.:   curl -X POST   -H   ‘authToken:${your_auth_token}’ -H     ‘Content-Type:application/json’  -d     ‘${your_request_body}’ https://host:port/tagSegment/addRequest   body e.g.:{    “appId”:10004,    “name”:   “segment1”,          “expression”:{                   “notTags”:[“shenzhen”],                  “andTags”:[],                  “orTags”:[]          }}Response body   e.g.:http status   200:{         “result”: 0,         “desc”: “成功”,}业务异常:{         “result”: xxx,”desc”:     “xxx”}http status   500:Internet   server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送
namestringY标签组合名称
expressionJSON ObjectY标签组合表达式:包含三种JSON数组:notTags表示非操作、andTags表示与操作,orTags表示或操作,例如:”tagExpression”:{                 “notTags”:[“琴”,”棋”,”书”,”画”],                  “andTags”:[“深圳”,”广东”],                  “orTags”:[“本科生”,”研究生”]          }可以表示为,不会琴、棋、书、画的广东省深圳市的本科生或研究生的所有用户。当然这些标签需要先在平台或者接口创建后再使用。

输出参数:

属性名字类型描述
resultint接口调用是否成功的状态码 0成功,非0失败
descstring文字描述接口调用情况

7.2 更新单个标签组合接口

接口说明

更新一个标签组合的信息

访问方式

URL编码方式协议methodContent-Type
/tagSegment/updateUtf-8httpsPOSTapplication/json
Curl e.g.:   curl -X POST   -H   ‘authToken:${your_auth_token}’ -H     ‘Content-Type:application/json’  -d ‘${your_request_body}’       https://host:port/tagSegment/updateRequest   body e.g.:{            “appId”:10004,           “oldName”:”segment1″,           “newName”:”segment2″,”expression”:   {                    “orTags”: [“shenzhen”],                    “andTags”:     [],                    “notTags”: []    }}Response body   e.g.:http status   200:{    “result”:   0,    “desc”:   “成功”}业务异常:{         “result”: xxx,”desc”:     “xxx”}http status   500:Internet   server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送
oldNamestringY旧标签组合名称
newNamestringY新标签组合名称
expressionJSON ObjectN新标签组合表达式:包含三种JSON数组:notTags表示非操作、andTags表示与操作,orTags表示或操作,例如:”tagExpression”:{                 “notTags”:[“琴”,”棋”,”书”,”画”],                  “andTags”:[“深圳”,”广东”],                  “orTags”:[“本科生”,”研究生”]          }可以表示为,不会琴、棋、书、画的广东省深圳市的本科生或研究生的所有用户。当然这些标签需要先在平台或者接口创建后再使用。

输出参数:

属性名字类型描述
resultint接口调用是否成功的状态码 0成功,非0失败
descstring文字描述接口调用情况

8.标签推

8.1标签推接口

接口说明

接入方携带消息内容、标签信息进行通知消息推送。

  标签个数的限制:20个

访问方式

URL编码方式协议methodContent-Type
/message/tagPushUtf-8httpsPOSTapplication/json
Curl e.g.:curl -X POST   -H   ‘authToken:${your_auth_token}’ -H     ‘Content-Type:application/json’  -d ‘${your_request_body}’       https://host:port/message/tagPushRequest   body e.g.:{          “appId”:10004,          “tagExpression”:{                   “notTags”:[“tag1″,”       tag2″,”tag3″,” tag4″],                  “andTags”:[“tag5″,”   tag6″],                  “orTags”:[“tag7″,”tag8”]          },  “segmentName”:   “组合名”,      “notifyType”: 4,    “title”:   “123”,      “content”: “456”,      “timeToLive”: 86400,      “skipType”: 1,      “skipContent”:   “assda”,      “networkType”: -1,      “requestId” :       “25509283-3767-4b9e-83fe-b6e55ac6b123”}Response body   e.g.:http status   200:业务成功:{    “result”:   0,    “desc”:   “请求成功”,    “taskId”:     “2199912448”}业务异常:{         “result”: xxx,”desc”:   “xxx不合法”}http status   500:Internet   server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送
tagExpressionJSON ObjectY标签表达式。包含三种JSON数组:notTags表示非操作、andTags表示与操作,orTags表示或操作,例如:”tagExpression”:{                 “notTags”:[“琴”,”棋”,”书”,”画”],                  “andTags”:[“深圳”,”广东”],                  “orTags”:[“本科生”,”研究生”]          }可以表示为,不会琴、棋、书、画的广东省深圳市的本科生或研究生的所有用户。当然这些标签需要先在平台或者接口创建后再使用。
segmentNamestringN之前创建好的组合名,如果传递组合名,默认用组合名推送,否则如果传递tagExpression,按照标签表达式推送
notifyTypeintY通知类型 1:无,2:响铃,3:振动,4:响铃和振动
titlestringY通知标题(用于通知栏消息) 最大20个汉字(一个汉字等于两个英文字符,一个表情占一个字符,即最大不超过40个英文字符)
contentstringY通知内容(用于通知栏消息) 最大50个汉字(一个汉字等于两个英文字符,一个表情占一个字符,即最大不超过100个英文字符)
timeToLiveintN消息保留时长 单位:秒,取值至少60秒,最长7天。当值为空时,默认一天
skipTypeintY点击跳转类型 1:打开APP首页 2:打开链接 3:自定义 4:打开app内指定页面
skipContentstringN跳转内容 跳转类型为2时,跳转内容最大1000个字符,跳转类型为3或4时,跳转内容最大1024个字符,skipType传3需要在onNotificationMessageClicked回调函数中自己写处理逻辑。pushSDK版本号:480以上,不在支持skipType=3,自定义跳转统一使用skipType=4,详见【vivo推送常见问题汇总】中API接入问题的Q11中的intent uri示例。
networkTypeintN网络方式 -1:不限,1:wifi下发送,不填默认为-1
classificationintN消息类型 0:运营类消息,1:系统类消息。不填默认为0
clientCustomMapJSON ObjectN客户端自定义键值对 自定义key和Value键值对个数不能超过10个,且长度不能超过1024字符, key和Value键值对总长度不能超过1024字符。
requestIdstringY用户请求唯一标识 最大64字符
auditReviewJSON ArrayN第三方审核结果,参见:基于第三方审核结果的消息推送

输出参数:

属性名字类型描述
resultint接口调用是否成功的状态码 0成功,非0失败
descstring文字描述接口调用情况
taskIdstring任务编号

9.消息状态查询

9.1消息状态查询

接口说明

由于目前只返回审计相关信息,单推没有同步返回消息审计状态,其他类型的推送有同步返回。所以可通过调用此接口传递消息id,查询消息的状态。目前有调用频率限制,单个app 1次/s, 建议一批类似的消息体查询一次。

使用:

① 发送消息后查询消息的状态(延时在一分钟内)。

②‘审计通过’或 ‘审计不通过的状态还未入库’,返回 【消息状态未知】,审计不通过状态已入库,返回【消息包含敏感词】

访问方式

URL编码方式协议methodContent-Type
https://api-push.vivo.com.cn/search/msgStatusUtf-8https/httpGETapplication/json
Curl e.g.:   curl -X GET -H   ‘authToken:${your_auth_token}’ -H   ‘Content-Type:application/json’   -d     ‘${your_request_body}’ https://api-push.vivo.com.cn/search/msgStatus?appId=10004&taskIds=taskId1,taskId2Request body e.g.:{    “result”:   0,    “desc”:   “success”,    “data”: [          {                “taskId”: taskId1,                “desc”: “消息包含敏感词”          },          {                ” taskId “: taskId2,                “desc”: “消息状态未知”          }    ]}Response body e.g.:http status 200:http status 500:Internet server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送
taskIdsstringY由多个taskId组成的字符串,多个taskId之间用逗号分隔,一次最多查询100个

10.查询失效id

10.1失效id查询

接口说明

由于用户卸载、客户端主动调用turnOffPush()解订阅、设备14天不联网还有一部分历史原因,可能造成推送的id无效。开发者可以根据推送时返回的InvalidUser对失效id做标记或者清除处理,或者单独查询本接口,将无效的id过滤,避免占用推送额度。

使用:

① 传递要查询的id,以及id的类型,后台根据保存的id,返回无效的id。

② 建议在推送低峰期,例如晚上或者凌晨调用,将保存的id一批批查询,避免影响应用的推送性能。勿高频调用。

访问方式

URL编码方式协议methodContent-Type
/invalidUser/checkUtf-8https/httpPOSTapplication/json
Curl e.g.:   curl -X GET -H   ‘authToken:${your_auth_token}’ -H   ‘Content-Type:application/json’   -d     ‘${your_request_body}’ https://api-push.vivo.com.cn/invalidUser/check    Request body e.g.:{      “appId”:10004,      “userType”: 1,      “userIds”: [            “15547801220021000000000”,            “15547801220021000000001”    ]}Response body e.g.:http status 200:{      “invalidUsers”: [            “15547801220021000000000”,            “15547801220021000000001”    ]}http status 500:Internet server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送
userIdsstring[]Y用户id数组 ,单次最大100个
userTypeintYuserId的类型1:regId,2:alias

11.消息回收

11.1 消息回收接口

接口说明

此接口用于回收已发送给用户的消息。通过传递推送的消息id和具体的用户id、用户类型进行消息回收,消息回收接口调用量和调用速度会占用推送量级和推送速度。

限制:由我司运营人员配置。

消息撤回功能是平台提供给开发者紧急处理运营事故的工具,切勿日常频繁使用,以免对用户体验不当影响。

对于推送内容、应用行为等存在违规的,平台将按《vivo推送运营规则》进行相应处罚。

访问方式

URL编码方式协议methodContent-Type
/message/recycleUtf-8httpsPOSTapplication/json
Curl e.g.:curl -X POST -H ‘   authToken:${your_auth_token}’ -H ‘Content-Type:application/json’  -d ‘${your_request_body}’   https://host:port/message/recycleRequest body e.g.:{         “appId”:10004,         “taskId”:656079923690082304,         “userIds”:[“15762048080021000000007″,”15762048080021000000008″,”15762048080021000000009”],         “userType”:1}Response body e.g.:http status 200:业务成功:{         “result”:   0,         “desc”:   “请求成功”,”invalidUsers”: [         {            “status”: 1,            “userid”:   “15762048080021000000008”         },         {            “status”: 1,            “userid”:   “15762048080021000000008”         }      ]}业务异常:{         “result”:   xxx,”desc”: “xxx不合法”} http status 500:Internet server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送
taskIdstringY单播或广播返回的taskId
userIdsstring[]YuserId列表。个数大于等于1小于等于100
userTypeintY用户类型。1:regId;2:alias

输出参数:

属性名字类型描述
resultint接口调用是否成功的状态码 0成功,非0失败
descstring文字描述接口调用情况
invalidUsersJSON Array非法用户信息,包括status和userid,userid为接入方传的regid或者alias,status有三种情况:1.userId不存在 2.卸载或者关闭了通知 3.七天不在线

12.应用配置信息查询 

12.1 应用配置信息查询接口

接口说明

此接口用于查询应用配置信息,系统消息总量、运营消息总量、群推消息体总量、配置速度等信息、SDK订阅数。此接口限制了调用频率,请勿频繁调用。

访问方式

URL编码方式协议methodContent-Type
/report/getAppConfigUtf-8httpsGETapplication/json
Curl e.g.:curl -X GET -H ‘authToken:${your_auth_token}’   -H ‘Content-Type:application/json’  -d ‘${your_request_body}’     https://host:port/report/getAppConfig?appId=10004Response body e.g.:http status 200:业务成功:{      “result”: 0,      “desc”: “请求成功”,      “data”: {          “sysMsgCount”: 10000,          “marketMsgCount”: 100000,          “sdkSubCount”: 124,          “speed”: 3000,          “groupMsgBodyCount”: 12000,       “remainSysMsgCount”:1200,       “remainMarketMsgCount”:1300
      }}业务异常:{           “result”:   xxx,”desc”:   “xxx不合法”} http status 500:Internet server error!

接口定义

输入参数:

属性名字类型是否必填Y/N描述
appIdintY用户申请推送业务时生成的appId,用于与获取authToken时传递的appId校验,一致才可以推送

输出参数:

属性名字类型描述
resultint接口调用是否成功的状态码 0成功,非0失败
descstring文字描述接口调用情况
datajson object详细内容

data:

属性名字类型描述
sysMsgCountlong系统消息配置量
marketMsgCountlong运营消息配置量
sdkSubCountlongsdk订阅数
speedlong速度配置
groupMsgBodyCountlong群推消息体配置量
remainSysMsgCountlong剩余可发送系统消息量级
remainMarketMsgCountlong剩余可发送运营消息量级


全局公共返回码详解

resultdesc
0请求成功
10000权限认证失败
10040资源已达上限,稍后重试
10044该接口未开放测试模式
10045应用审核中不可发送正式消息
10050alias和regId 不能都为空
10051暂不支持该消息类型
10054notifyType 不合法
10055title 不能为空
10056title 长度不能超过40个字符
10057content 不能为空
10058content 长度不能超过100个字符
10059timeToLive 不合法
10060skipType 不合法
10061skipType = 2, skipContent 不能为空
10062skipType = 2, skipContent 不能超过1000个字符
10063skipType = 3, skipContent 不能为空
10064skipType = 3, skipContent 不能超过1024个字符
10065networkType 不合法
10066自定义key和Value键值对个数不能超过10个
10067自定义key和value键值对不合法
10068skipType = 4, skipContent 不能为空
10069skipType = 4, skipContent 不能超过1024个字符
10070运营消息发送量总量超出限制
10071超出发送时间允许范围
10072推送速度过快,请稍后再试
10073系统消息发送量总量超出限制。系统消息量级申请,请参见:系统消息量级说明
10082系统消息未开通
10084查询速度过快,请稍后再试
10085title 或 content 不能为纯表情
10093获取鉴权码速度过快
10094鉴权码与请求体对应的appId不一致
10101消息内容审核不通过
10102服务器端未知异常
10103推送内容含敏感信息
10104请发送正式信息,请检查title、content,不要发送测试内容
10105推必安内容审核不通过
10106auditReview参数错误
10110请配置商业化消息发送频率
10111今天已发送商业化消息
10112商业化消息发送超出周次数限制
10150aliases 和 regIds 不能都为空
10151taskId 不能为空
10152taskId 不合法
10153regIds 个数不在指定范围[2-1000]
10154aliases 个数不在指定范围[2-1000]
10155消息不存在或已过期
10200appId 不能为空
10201appKey 不能为空
10202appKey 不合法
10203timestamp 不能为空
10204sign 不能为空
10205appId 不存在
10206sign 不正确
10207timestamp 不合法
10250认证接口超过调用次数限制
10252批量发送创建消息体超出限制
10253批量发送regId或alais超过总量限制
10254全量发送超过次数限制
10301alias 长度不能超过40个字符
10302regId 不合法, regId为无效的regId, regId可能已经失效
10304extra 包含不支持的key
10305extra callback长度不能超过128个字符
10306extra callback.param长度不能超过64个字符
10307alias 不合法
10352requestId 不能为空
10353requestId 长度不能超过64个字符
10354Internet server error
10471taskIds 数量不能超过100个
10472taskIds 格式错误
10473taskIds 为空
10600name参数不合法,只能使用中文、英文字母、阿拉伯数字和下划线命名,且不能以数字开头,且长度不超过50字符
10601标签名字不能为空
10602标签描述不能超过300字符
10603oldName参数不能为空
10604newName参数不能为空
10605oldName参数不合法,只能使用中文、英文字母、阿拉伯数字和下划线命名, 且不能以数字开头,且长度不超过50字符
10606newName参数不合法,只能使用中文、英文字母、阿拉伯数字和下划线命名, 且不能以数字开头,且长度不超过50字符
10607id参数不能为空
10608type参数不能为空
10609ids参数不能为空
10610标签名已经存在
10611标签分类名已经存在
10612标签组合名已经存在
10613group参数不合法,只能使用中文、英文字母、阿拉伯数字和下划线命名, 且不能以数字开头,且长度不超过50字符
10614ids数量不能超过1000
10615tag数量不能超过100
10616type参数不合法
10700userids不能为空
10701userid个数超过限制
10702optionType错误
10703register接口调用超频,稍后再试
10704register调用过快,稍后再试
10705app不支持
10706userType错误
10800registration_tokens个数不在指定范围
10801notification不能为空
10802original_source_name不能为空
10803original_source_name长度非法
10804original_source_ip不能为空
10806click_action非法
10807url长度超过限制
10808intent长度超过限制
10255全量推送接口未开放
10901dyeKey长度不能超过限制
10900dye设置个数超过限制
10811超出限制
10810clientId非法
10809click_action不能为空
10805notification_channel长度超过限制
10617系统msgId生成异常
10500订阅标签超出限制
10501标签长度超出限制
10502标签已经删除完成
10503标签不能为空
10504订阅标签超出限制
10505标签长度超出限制
10506标签已经删除完成
10507标签不能为空
10508标签个数超出限制
10550标签操作类型无效
10551标签列表不能为空
10552标签个数超过限制
10553标签组合名不能为空
10309audienceId不合法,alias长度不超过40

vivo推送接入流程

本文档主要介绍启用vivo推送的步骤,以帮助开发者更快速的完成vivo推送的接入。

一、注册vivo开发者账号

请访问vivo开放平台,使用vivo账号登录进入开发者站,如果没有vivo账号需要先注册vivo账号。 

详细开发者账号注册流程请参考《企业开发者注册》。

推送服务将同步开放平台上架应用结果,请关注开放平台应用的上架状态,开发者可在申请页面查看审核结果。 

二、登录vivo推送平台启用推送

若要使用vivo推送平台进行推送,开发者的应用必须要在开放平台通过审核上架后,才会通过消息推送服务审核。

1. 创建应用

创建正式推送:创建正式推送前需先在开放平台创建您的应用。详情请见《应用创建/更新流程》。

2. 申请push服务:

当开发者已经创建应用后,无论应用审核通过与否均可申请push服务。

在登录vivo开发者账号后,申请push服务有以下方式:

① 开放平台首页-产品-应用分发-运营-消息推送进入:https://dev.vivo.com.cn/promote/pushNews

② 开放平台首页-管理中心-常用服务-推送服务进入:https://dev.vivo.com.cn/manageCenter

点击进入消息推送后,将会进入“vivo开放平台-推送运营平台”,在“消息推送-全部应用”中点击“创建应用”;

若此操作在开发者创建应用后,所创建应用将会列入在应用名称里,点击“应用名称”选择要申请的应用后点击“提交申请”。

若先进入此步骤,略过了创建应用环节,可点击“开放平台-创建应用”跳转到相应界面,详细流程请见《应用创建/更新流程》

若已有应用点击提交申请后,推送服务将同步开放平台上架应用结果,请关注开放平台应用的上架状态,开发者可在申请页面查看审核结果。

三、“应用信息”中获取APPID/key/secret

四、集成push服务SDK并在Web页面添加测试设备

1、集成含push服务的客户端SDK,具体参考《客户端SDK集成指南》

2、在Web页面添加测试设备

五、API向指定测试设备发送测试消息联调

具体参考《接入push服务注意事项》– “七、如何发送测试消息图解”

六、在开平上传含有push服务的APK

完成vivo开放平台注册后登录,点击进入【管理中心】

1、点击“管理中心-应用分发-应用”

2、点击“创建应用

3、按流程指引创建应用/游戏,完善信息后提交审核,审核通过上架即可(https://dev.vivo.com.cn/appCreate

七、开放平台审核、Push服务审核

应用推送申请为自动审核,内容库审核通过上架后将同步到Vpush平台,平台会在1-2个工作日同步审核完成。

八、创建正式消息

方式一:接入《服务端API接口文档》创建推送

方式二:在运营后台创建消息

九、用户接收推送

2022年企业开展业务都建议做一个公司自己的APP哦

2022年企业开展业务都建议做一个公司自己的APP哦

现如今时代飞速发展,互联网是联通各行各业的一种最根本媒介,互联网也成为一种关键的发展趋势。

很多企业纷纷打开自己在互联网时代的一种“缺口”,发展成为一种迎合市场规律和满足时代所趋的成功企业。

而这个“缺口”,就是一款企业的移动应用。

是因为移动应用定制是针对企业自己

本身进行塑造、加工,将企业本身功能“压缩”在一种移动应用中,从而给用户带来极致体验。

 

而今人们日常的生产生活也离不开手机,在手机中的移动应用,对广大消费群众来看,更是日常必备。

工作学习、娱乐休闲,移动应用的使用已然成为一个在日常但是的行为。

因此为了企业更好更快的发展,定制一款属于自己的移动应用制作,可为企业发展保驾护航。

 

制作、定制一款移动应用,到底能给企业带来什麽?

一.企业定制制作移动应用可增强企业的品牌粘度

目前人们在互联网络上的体验众多,能够带给消费群体更多有趣的体验,会成为企业发展的一剂良药。

很多的移动应用上会增开一些互动模块,大大增强了与用户之间的交流,使得html转化为apk用户在享受移动应用带来的极致方便体验外,还可收获对企业品牌的一个认知,从而更为依赖和信任该企业。

这相当于在无形之中留住老客户,还可能带来新客户。

这样的“品牌粘度”,助力于企业的未来发展。

二.企业定制制作移动应用可减小服务成本

传统的销售渠道核心集中于线下商店和网络上商城,虽然种类繁多,但对于一种需要在方便大众的前提下还能给本企业带来连锁效益提升消费转化率的一种“综合”企业来看,“一体式”服务是最好的载体。

比如银行客户网站生成app端,可提供转账、查询、理财等一系列根本在线服务,无需在线网站或人员坐席就可完成相应服务,对于企业来看,在不损失客源的情况下,还可减少服务成本;对于消费者来看,既方便有快捷,随时随地、开放安排自己的生活。

三.企业定制移动应用制作可畅快沟通提升生产效率

无论做什麽事,最关键的都是沟通。

沟通乃万物之本。

对企业来看,企业和客户之间的沟通,直接影响着企业的生产效率和未来发展。

而对于一种实体企业,很少有客户能够发表自己的消费建议,客户也很难掌控企业的方向,使得在未来发展中,企业可能失去客户的应用方向。

但有了定制制作的移动应用,一切就轻松化了。

客户在小小的移动应用上能够满足自己的需求,还可通过固定的模块发表自己对移动应用的建议,从而,更好的方便服务。

 

俗话说,成功源于一点点的积累。

而在这个社会里,对企业而言,积累就是企业自己带给客户方便、快捷的体验和信任度。

一门APP定制和制作官方能够助企业一臂之力。

我们有专业的移动应用管理体系和验收体系。

一门APP严格按照项目阶段进行标准化制作,企业客户能够在线上项目管理系统中实时检查和确定项目开发进度和内容,以此保障每一步都不会偏离项目的目标。

同时,一门APP定制服务采用标准化的一门APP制作技术,采用混合应用制作模式,而且,同时网页转app生成iOS和Android系统的移动应用,为企业客户缩短制作时间周期,减少制作成本。

 

假设你想为企业带来不同样的东西,让本企业在同行的竞争中稳操胜券,那快加入我们一门APP吧!

目前提交移动应用定制需求,免费获取报价和制作时间周期:

电脑请点击https://app.yimenapp.com/index?uzchannel=五00

手机请点击https://app.yimenapp.com/m/quickaddcustom

成人教育app制作具有哪些商业价值

成人教育正是面向成年人用户,以满足用户个性化教育需求为核心。对于很多的成年人来看,不止大学生用户群体可能想要考证、考研,一些职场人也会需要提高学历或者是增长更多关于行业内的相关知识信

息,也实现全面的个人发展,对此,为了更好地满足用户对于成人学习方面的个性化需求,成人教育app制作应运而生,在实现多种功能板块的前提下,创造更多的商业价值。

一、成人教育app制作想要具备哪些特色需求?
一种教育官方需要更好地适应市场发展方向,这么不止想要满足官方在控制端口上的需求,也想要迎合市场用户在进行教育学习方面的需求来提供个性化服务。对此,对于成人教育app制作而言,就想要具备多种特色功能需求,以适应用户端以及官方终端的个性化需求。例如,能够实现关于教育资源板块的分类展示,以适应用户对于内容观看的需求,同时在成人教育视频教程当中,融合多种互动方案,来提升用户进行受教育课程中的交互体验感,进而提升用户对于该教育官方的整体好感度。
2、成人教育app制作具有哪些商业价值?
1、获取更多的互联网用户群体
现在互联网用户群体亦是很多行业以及官方所重视的,而且由于更多的用户核心集中在线上,这么怎么发掘互联网用户就成为了各大官方想要研究的问题。而结合成人教育app制作的形式,可以实现有效的线上推广宣传,进而获取更多的用户关注,实现用户引流。
二、借助线上教育模式发展用户粘性
由于很多人的时间开始变得碎片化,而且趋向于便捷的内容获取,这么线上学习的模式能够满足用户这一方面的需求。以成人教育app制作来改变传统下线教育的局限性,让教育更轻松的同时,也有利于发展官方的用户粘性。
现在线上官方可以发挥多方面的作用,推动行业转型迭代的同时,也可以发挥互联网优势取得更多的商机。

VIVO厂家离线消息推送申请通知接口

VIVO作为世界级的手机品牌,实现VIVO手机离线消息通知是当前APP开发者所必须考虑的一个基础功能或能力,开发者在做好APP之后需要向VIVO厂家申请到APP消息推送权限。

那么怎么申请VIVO消息推送呢?

1.登录VIVO开发平台,http://dev.vivo.com.cn/home

(图:VIVO厂家离线消息推送)

2.点击顶部导航开放能力

(图:VIVO厂家离线消息推送)

3.进入消息推送管理后台,点击第一个推送申请接入

(图:VIVO厂家离线消息推送)

点击推送申请接入按钮之后,页面会自动跳转到应用创建页面流程

(图:VIVO厂家离线消息推送)

如图,在申请页面选择需要申请通知消息推送的应用,可以在应用名称这里下拉选择。

当然,如果您还没有创建应用,您需要先去VIVO开放平台新建应用,提交审核之后,在消息推送列表,可以看到消息推送权限的状态

(图:VIVO厂家离线消息推送)

如果状态为【已通过】那么您的APP就正式获得到了VIVO厂家离线推送的权限了,就可以实现VIVO手机离线状态下依旧可以收到消息通知的能力。

如果是状态为【审核中】您的APP可以获得测试阶段的消息推送能力

(图:VIVO厂家离线消息推送)

应用上架后审核状态自动跳转为“已通过”,此时推送权限为“受限”可进行API接口测试。