uniapp unipush是否支持h5推送消息的具体实现方法

在uniapp中使用unipush时,H5平台能否实现消息推送功能?具体该如何配置和调用API?官方文档提到unipush主要支持App端,但部分开发者反馈H5也能收到推送,想确认下实际支持的场景和完整的实现步骤,包括服务端配置和客户端代码示例。另外需要注意哪些兼容性问题?

2 回复

UniPush在H5端不支持推送消息,因为H5无法直接调用原生推送服务。若需推送,建议使用第三方推送服务(如Web Push API)或引导用户下载App。


UniPush 在 H5 平台上的推送支持有限,具体实现方法如下:

实现条件

  1. 仅支持部分浏览器:需浏览器支持 Web Push API(如 Chrome、Firefox 等)。
  2. 必须 HTTPS 环境:本地调试可用 localhost,正式环境需部署 HTTPS。
  3. 用户授权:需用户主动同意接收推送。

实现步骤

  1. 开通服务

    • 在 UniPush 后台配置 H5 域名(需备案)。
    • 获取 manifest.json 中所需的 appid 和配置信息。
  2. 集成 SDK

    • manifest.json 的 “Push” 模块勾选 UniPush,并填写配置:
      "push": {
        "unipush": {
          "appid": "你的应用ID",
          "url": "https://你的推送服务域名"
        }
      }
      
  3. 前端代码

    // 初始化推送
    uni.getPushClientId({
      success: (res) => {
        console.log('ClientID:', res.cid); // 将 cid 发送到服务器用于推送
      },
      fail: (err) => {
        console.error('获取推送标识失败:', err);
      }
    });
    
    // 监听消息
    uni.onPushMessage((res) => {
      console.log('收到推送:', res);
      // 处理消息(如显示通知)
      if (res.type === 'receive') {
        new Notification('推送标题', { body: res.data.content });
      }
    });
    
  4. 服务端推送

    • 通过 UniPush 官方 API,按文档构造请求(需 cid、标题、内容等参数)。
    • 示例(使用 Node.js):
      const request = require('request');
      request.post({
        url: 'https://restapi.getui.com/v2/你的appid/push/single/cid',
        headers: { 'token': '你的鉴权token' },
        json: {
          request_id: Date.now(),
          audience: { cid: ['用户cid'] },
          push_message: {
            notification: {
              title: 'H5推送测试',
              body: '这是一条H5平台推送消息'
            }
          }
        }
      });
      

注意事项

  • 兼容性:部分浏览器(如 Safari、旧版 Edge)不支持 Web Push。
  • 用户交互:需在用户点击页面后触发授权请求(浏览器限制)。
  • 离线消息:H5 需页面打开才能接收,无法像原生应用离线推送。

建议优先考虑 App 端推送,H5 推送作为补充方案。具体参数请参考 UniPush 官方文档。

回到顶部