|
|
@@ -6,4 +6,33 @@
|
|
|
9、学习中心右边放个 清空消息,能让他清掉已经存在的全部角标
|
|
|
|
|
|
|
|
|
-![[Pasted image 20260122160303.png]]
|
|
|
+![[Pasted image 20260122160303.png]]
|
|
|
+
|
|
|
+
|
|
|
+## 一个订单通知,App 会收到两次通知
|
|
|
+#### 这里的逻辑解释:
|
|
|
+
|
|
|
+1. **`force_notification` (服务端控制)**:
|
|
|
+ * **`true` (修改前)**:强制创建通知栏消息。无论 App 是在前台还是后台,都会在手机通知栏弹出一个消息。
|
|
|
+ * **`false` (修改后)**:
|
|
|
+ * **App 在线(前台/后台运行)**:消息会以 **透传(Transmission)** 方式下发。App 能够监听到消息内容,但**不会**自动在手机通知栏显示。
|
|
|
+ * **App 离线(进程被杀)**:消息会尝试走 **厂商通道**(小米、华为、OPPO、VIVO 等)。由于您的代码中已经配置了 `options`(如 `initHdOptions` 中的 vendor settings),离线时依然会在通知栏显示消息。
|
|
|
+
|
|
|
+### 关于“在线时,是不是把消息放到某处(例如消息中心)”
|
|
|
+
|
|
|
+**答案是:系统不会自动帮您存到“消息中心”。**
|
|
|
+
|
|
|
+`pushByCloud` 方法目前的作用仅仅是**发送**一条即时消息给手机,它**没有**将消息保存到数据库的功能。
|
|
|
+
|
|
|
+如果您希望 App 在线时收到消息后能进入“消息中心”列表,或者离线点击通知后能在“消息中心”看到历史记录,您需要配合以下开发:
|
|
|
+
|
|
|
+1. **后端存储(推荐)**:
|
|
|
+ 在调用 `push->ghsOrderMessage()` 的地方(例如 `MqController.php`),同时调用数据库保存方法,将消息写入到数据库表中(例如 `Notify` 表或 `Message` 表)。
|
|
|
+ * 我注意到 `bizGhs` 下有 `bizGhs\notify\classes\NotifyClass`,您可以在发推送的同时调用 `NotifyClass::add($data)` 来持久化存储这条消息。
|
|
|
+
|
|
|
+2. **前端处理(App 端)**:
|
|
|
+ * **在线时**:App 的 `uni.onPushMessage` 会监听到透传消息。您需要在前端代码里决定是弹出一个 `uni.showToast`,还是弹出一个模态框,或者是刷新一下“消息中心”的列表接口。
|
|
|
+ * **离线时**:用户点击通知栏消息启动 App,App 需要调用后端的接口(如 `/notify/list`)从数据库拉取最新的消息列表,这样用户才能在“消息中心”看到刚才那条消息。
|
|
|
+
|
|
|
+**总结建议**:
|
|
|
+如果“消息中心”是指 App 里的一个历史记录页面,您必须在后端发推送的同时,把消息**写入数据库**。
|