push 是指从服务器主动给手机端发送消息。

  • App平台uni-app 提供了 uni push 服务,这是一个包括客户端和服务器的统一服务,整合了苹果APNs、华为、小米、OPPO、魅族等多家厂商的推送和个推的独立推送,不管客户端还是服务器,一套代码多端推送。因本文档内容有限,单独写了一篇详细的 uni push 业务介绍,请仔细阅读 https://ask.dcloud.net.cn/article/35622

uni push 推送的开发API文档:https://www.html5plus.org/doc/zh_cn/push.html

  • 小程序平台小程序平台的类似概念叫做模板消息

以微信为例,开发者的服务器发送消息给微信的服务器,微信服务器会发送一条模板消息,折叠到微信的消息列表中的服务通知里。它属于后台开发,和手机端无关。

微信模板消息文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/template-message.html

支付宝模板消息文档:https://docs.alipay.com/mini/introduce/message

百度模板消息文档:https://smartprogram.baidu.com/docs/develop/third/api/

注意:以下API暂停维护,仅为向下兼容而保留。App端 uni push 的API请使用 https://www.html5plus.org/doc/zh_cn/push.html

uni.subscribePush(OBJECT)

开启推送

平台差异说明:

  • 5+AppOBJECT 参数说明
参数名类型必填说明
providerString分享推送提供商,通过 uni.getProvider 获取
successFunction接口调用成功的回调
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

示例

  1. uni.getProvider({
  2. service: 'push',
  3. success: function (res) {
  4. console.log(res.provider)
  5. // 个推的名称为 igexin
  6. if (~res.provider.indexOf('igexin')) {
  7. uni.subscribePush({
  8. provider: 'igexin',
  9. success: function (res) {
  10. console.log('success:' + JSON.stringify(res));
  11. }
  12. });
  13. }
  14. }
  15. });

uni.unsubscribePush(OBJECT)

关闭推送。

平台差异说明

  • 5+AppOBJECT 参数说明
参数名类型必填说明
providerString分享推送提供商,通过 uni.getProvider 获取
successFunction接口调用成功的回调
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

示例

  1. uni.unsubscribePush({
  2. provider: 'igexin',
  3. success: function (res) {
  4. console.log('success:' + JSON.stringify(res));
  5. }
  6. });

uni.onPush(OBJECT)

监听透传数据。

平台差异说明

  • 5+AppOBJECT 参数说明
参数名类型必填说明
providerString分享推送提供商,通过 uni.getProvider 获取
callbackFunction接收到透传数据回调,回调参数(Object):messageId(消息id)、data(消息内容)
successFunction接口调用成功的回调
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

示例

  1. uni.onPush({
  2. provider: 'igexin',
  3. success: function () {
  4. console.log('监听透传成功');
  5. },
  6. callback: function (data) {
  7. console.log("接收到透传数据:" + JSON.stringify(data));
  8. }
  9. });

uni.offPush(OBJECT)

移除监听透传数据。

平台差异说明

  • 5+AppOBJECT 参数说明
参数名类型必填说明
providerString分享推送提供商,通过uni.getProvider获取
successFunction接口调用成功的回调
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

示例

  1. uni.offPush({
  2. provider: 'igexin',
  3. success: function () {
  4. console.log('取消监听透传成功');
  5. },
  6. fail: function () {
  7. console.log('fail');
  8. }
  9. });
FAQ

Q:为什么真机测试推送可以用,打包后就失败呢?A:HBuilder 真机运行环境下,第三方支付 SDK 的配置信息是 HBuilder 这个应用。这个配置信息是不能动态修改的,因此涉及到第三方 SDK 的配置,需要打包自定义基座进行测试。真机运行自定义基座包使用说明

Q:用到了推送功能,在打包原生应用时,需要注意什么呢?A:如果是云打包,首先勾选权限配置,manifest.json->App 模块权限配置->Push。然后,manifest.json->App SDK 配置->推送,按照提示申请相应平台的信息,并填写。最后,勾选并填写完成后再进行打包即可。如果是离线打包,自行在原生工程中配置SDK,并确保选择了推送模块。


发现错误?想参与编辑?在 GitHub 上编辑此页面!