更新记录

4.0.3(2021-01-01)

新增微信小程序,订阅消息示例

4.0.2(2020-12-04)

新增在线推送创建本地消息,收到消息自动滚动到对应项目并高亮显示

查看更多

平台兼容性

阿里云 腾讯云

云函数类插件通用教程

使用云函数类插件的前提是:使用HBuilderX 2.9+


说明: 虽然本插件为uniCloud版UniPush插件,但并不要求开发者把所有的后台服务都迁移到uniCloud。

  • 支持:uniCloud 或传统(PHP、JAVA、PYTHON、C等)语言开发为后台的APP
  • 如果您使用uniCloud为后台,只需要改个config配置就能直接使用了。若无uniCloud基础,请先看免费视频教程:uniCloud入门到精通
  • 如果你的系统之前是非uniCloud写的可以将本插件url化为api进行调用访问;详情:云函数转url教程

开通uniCloud是免费的,其中阿里云是全免费,腾讯云是提供一个免费服务空间。

功能支持:

  1. 离线厂家推送
  2. 消息中心UI
  3. 已读未读处理、本地与同步push服务端的角标处理
  4. 支持苹果、小米、华为和部分oppo手机的厂家离线推送角标设置。

如果你还没开通UniPush你也许需要阅读一下: UniPush开通指南

什么是PUSH?

  • 一种服务端向在线或者离线的客户端, 实时通信的技术。

PUSH现状:

  • ios系统的苹果手机可以直接将push消息从开发者服务器发给苹果服务器,完美送达苹果手机。

  • 而由于Google的Push服务FCM被墙,国内的应用不能通过FCM及时向用户发送消息。

  • 第三方推送仅能在APP在线时接收,APP一旦被关闭(用户自己手动关闭,或手机的节电设置自动关闭了应用)就收不到消息了。

  • 国内手机的厂家已经推出了能在应用处于离线状态也能收到push消息的服务。然而安卓手机的厂商多,国内就有5大手机厂商:华为、小米、vivo、oppo、魅族。这对于APP开发者来说每个手机厂家的服务都得集成开发一遍,这么多平台,工作量会非常巨大,管理维护也很麻烦。

国内有一家叫DCloud的公司,推出了UniPush解决了这个问题。

  • 技术上:DCloud再uni(统一)了一下,推出UniPush,开发者只需要开发一次。系统会自动在不同手机上选择最可靠的推送通道发送push消息,保障送达率。
  • 价格上:UniPush的底层是“个推”(A股上市公司),个推的产品vip版是收费的;而个推是DCloud的股东,之间达成战略:将原本收费的个推vip版推送服务,完全免费地开放给DCloud旗下产品开发者使用。 这比市面上同类产品有了根本上绝对的优势,也成为了开发者们选择uni-app的一个理由。

PUSH消息类型:

  • 消息分在线和离线。在线分透传和非透传,离线只能接收非透传消息。前者好理解,什么是透传呢?以微信聊天为例,当你打开微信聊天界面时,你收到了好友给你发送消息。 而在你的手机消息通知栏没有通知。这就是一种透传的表现。当你把应用切到后台(无论这个时候APP进程是否被杀死) 如果你收到push消息,你的手机系统消息通知栏就会出现一条消息通知。你点击它一般就会唤醒app,或打开每个网页。这就是非透传消息通知。
  • 那么透传消息能否也实现在手机消息中心创建通知呢?答案是肯定的,你可以在收到透传消息的时候根据自己的业务设计用5+ plus接口创建。

流程图:

UniPush流程图

注意这是原生支持端功能,必须使用正确的包名、证书、签名才能使用**

目录结构:

├── cloudfunctions          #云函数目录
|   │─── common             #公共模块
|   |   │── config          #配置文件
|   |   └── push            #push核心代码模块
│   └── pushDemo            #推送功能demo
└── 根目录

使用流程:

  1. 开通并配置UniPush详情
  2. 将获取到的相关key填写到配置文件
  3. 通过自定义基座获取到某一台设备的clientid
  4. 修改pushDemo文件的clientid右键上传并运行即可体验

实例:

 const push = require('push')
 await push(PushType,PushData)

PushType: ( String ) 必选 推送类型 插件支持两种推送方式

可选值 描述
toSingle 单推,向某一台设备推送消息
toApp 群推,向APP下所有设备推送消息,不同手机厂家各种有调用限制
  • 示例:
    return await push("toSingle",{
    "title"     : "【单推】31测通知栏标题(长度取最小集)限制 32 字",
    "content"   : "【单推】31测通知栏内容(长度取最小集) content 长度小于 80 字",
    "payload"   : JSON.stringify({data:"【单推】数据"}),
    "clientid"  : "1a342f5f085b493cda095cdfaa413556"
    //用户单clientid 来源 plus.push.getClientInfo()  http://www.html5plus.org/doc/zh_cn/push.html#plus.push.getClientInfo
    })

PushData: ( JSON ) 必选 事件类型 插件支持两种推送方式

字段 类型 必填 描述
title string 通知栏标题(长度取最小集)限制 32 字
content string 测通知栏内容(长度取最小集) content 长度小于 80 字
payload string 透传或点击消息栏收到的参数
clientid string 类型为toSingle时必填 接受消息的用户的clientid 来源 plus.push.getClientInfo() http://www.html5plus.org/doc/zh_cn/push.html#plus.push.getClientInfo
  • 示例:
    return await push("toApp",{
    "title"     : "【群推】测通知栏标题(长度取最小集)限制 32 字",
    "content"   : "【群推】31测通知栏内容(长度取最小集) content 长度小于 80 字",
    "payload"   : JSON.stringify({data:"【群推】数据"})
    })

注意:

1.请打包app【建议用自定义基座】2.务必使用真机调试

2.厂商推送应用创建配置流程

华为手机厂家离线推送为高频咨询,请注意:

华为厂商通道在华为手机上必须安装“华为移动服务”才能使用华为的厂商推送通道,首先确保手机上已经安装“华为移动服务”应用。 如果在华为手机应用退出后无法接收到推送消息,可尝试以下操作: 更新“华为移动服务”到最新版本; 进入手机“设置”,在[应用和通知]->[应用管理]->[华为移动服务]->[存储]页面选择“删除数据”。 重新启动应用,退出后再下发推送消息。

更多关于UniPush的文献参考:UniPush使用指南

有任何问题联系我qq群:935395389; 希望能高分, 如果大家支持,我将愿意更多地分享我司优秀插件于大家共享

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

  1. Definitions.

    "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

    "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

    "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

    "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.

    "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.

    "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.

    "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).

    "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.

    "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."

    "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.

  2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.

  3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.

  4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

    (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and

    (b) You must cause any modified files to carry prominent notices stating that You changed the files; and

    (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and

    (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.

    You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.

  5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.

  6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.

  7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.

  8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.

  9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.

    END OF TERMS AND CONDITIONS

    APPENDIX: How to apply the Apache License to your work.

    To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.

    Copyright [yyyy] [name of copyright owner]

    Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问