聊天室(二)__ unipush 推送實現詳細教程

来源:https://www.cnblogs.com/web-learn/archive/2023/07/04/17524889.html
-Advertisement-
Play Games

一、推送作用 推送作用我就不廢話了,能做推送的都知道作用,直接上乾貨。 二、unipush 快速開通 Dcloud 開發者實名認證註冊賬號,綁定對應的 app 信息。 uni-push產品有2個入口: 通過 HBuilderX(3.5.1及其以上版本)進入 打開 HBuilderX,雙擊項目中的 “ ...


一、推送作用

推送作用我就不廢話了,能做推送的都知道作用,直接上乾貨。

 

二、unipush 快速開通

 

Dcloud 開發者實名認證註冊賬號,綁定對應的 app 信息。

uni-push產品有2個入口:

  1. 通過 HBuilderX(3.5.1及其以上版本)進入

打開 HBuilderX,雙擊項目中的 “manifest.json” 文件,選擇“App 模塊配置”,向下找到“Push(消息推送)”,勾選後,點擊 “uniPush” 下麵的配置鏈接。如下圖所示:

  1. 通過開發者中心進入

使用 HBuilder 賬號登錄 開發者中心 ,登錄後 會進入“uniPush”-“Uni Push 2.0(支持全端推送)”-“應用信息”,點擊“當前應用”選擇要操作的應用。

以上兩種方式均可進入uniPush 應用開通界面。如下圖所示:

 

 

按照國家法律要求,所有提供雲服務的公司在用戶使用雲服務時都需要驗證手機號。

用戶初次開通 uni-push 時,需要向個推同步手機號信息(DCloud開發者無需再註冊個推賬戶)。

關聯服務空間說明:uni-push2.0需要開發者開通uniCloud。不管您的業務伺服器是否使用uniCloud,但專業推送伺服器在uniCloud上。生成雲函數,放置雲伺服器上。

三、push 模塊

Push模塊管理推送消息功能,可以實現線上、離線的消息推送,通過 plus.push 可獲取推送消息管理對象。

3.1、獲取設備信息

客戶端標識信息用於業務伺服器下發推送消息時提交給推送伺服器的數據,用於說明下發推送消息的接收者(客戶端)。通常需要客戶端在第一次運行時獲取並提交到業務伺服器綁定。

ClientInfo : 客戶端推送標識信息對象

let clientInfo = plus.push.getClientInfo()let cid = cliendInfo.clientId

 

cid : 客戶端推送標識,類似於聯繫人的電話號碼。

3.2、推送事件監聽器

void plus.push.addEventListener( event, listener, Boolean );

添加推送消息事件監聽器,當指定推送事件發出時觸發。

參數:

  • type: ( String ) 必選 事件類型

  • 支持事件類型:"click"-從系統消息中心點擊消息啟動應用事件;"receive"-應用從推送伺服器接收到推送消息事件。

  • listener: ( PushReceiveCallback ) 必選 事件監聽器回調函數,在接收到推送消息時調用

  • capture: ( Boolean ) 可選 是否捕獲事件,此處可忽略

平臺支持:

  • Android - 2.2+ (支持)

  • iOS - 4.3+ (支持) :

  • 在客戶端在運行時收到推送消息觸發receive事件,離線接收到的推送消息全部進入系統消息中心。 

plus.push.addEventListener('receive',(message)=>{    
//收到透傳消息,執行該事件
})

點擊推送事件示例:

plus.push.addEventListener('click',(message)=>{
   // 點擊通知消息的時候執行該事件
   // message 推送的所有信息
   let payload = message.payload;//自定義內容獲取
   try{
      //自己的業務邏輯 如頁面跳轉,網路跳轉
   }catch(err){    }
})

3.3、自定義推送消息欄

void plus.push.createMessage( content, payload, option );

說明:

在本地直接創建推送消息,並添加到系統消息中心。

參數:

  • content: ( String ) 必選 ,消息顯示的內容,在系統通知中心中顯示的文本內容。

  • payload: ( String | Object ) 可選,消息承載的數據,可根據業務邏輯自定義數據格式。

  • options: ( MessageOptions ) 可選 創建消息的額外參數,參考MessageOptions。如圖標、標題等。

有些童鞋雖然自定義了推送消息,但是發現無論怎麼配置參數都不起作用。這是什麼原因呢?

3.4、setAutoNotification

setAutoNotification 設置程式是否將消息顯示在系統消息中心。

void plus.push.setAutoNotification( notify );

 

說明:

預設情況下程式在接收到推送消息後將會在系統消息中心顯示,通過此方法可關閉預設行為,接收到推送消息後不在系統消息中心顯示,通過addEventListener方法的“receive”事件監聽處理接收到的消息。在這種模式下可通過createMessage方法創建在系統消息中心顯示的消息。

參數:

  • notify: ( Boolean ) 必選 是否自動提示推送消息

  • 可取值true或false,true表示自動顯示推送消息,false則不顯示。預設值為true。

3.5、清空所有推送消息

void plus.push.clear();

上面列舉了超級常用的幾個方法,剩餘的大家看官方文檔,方法介紹一看就會。

官方文檔:https://www.html5plus.org/doc/zh_cn/push.html

四、客戶端

4.1、獲取設備信息

uni.getPushClientId 獲取客戶端唯一的推送標識。

註意:這是一個非同步的方法,且僅支持uni-push2.0;

OBJECT 參數說明

參數名

類型

必填

說明

success

Function

介面調用的回調函數,詳見返回參數說明

fail

Function

介面調用失敗的回調函數

complete

Function

介面調用結束的回調函數(調用成功、失敗都會執行)

success 返回參數說明

參數

類型

說明

cid

String

個推客戶端推送id,對應uni-id-device表的push_clientid

errMsg

String

錯誤描述

fail 返回參數說明

參數

類型

說明

errMsg

String

錯誤描述

常見報錯:
getPushClientId:fail register fail: {\"errorCode\":1,\"errorMsg\":\"\"}
請檢查:

  1. 當前應用是否已開通uni-push2.0 詳情參考

  2. 客戶端對應平臺是否已啟用uni-push2.0詳情參考

  3. HBuilderX3.5.1 App平臺vue3項目首次啟動調用uni.getPushClientId 存在可能獲取不到cid的問題,HBuilderX3.5.2修複了此問題,請升級。

     

示例代碼:

uni.getPushClientId({
    success: (res) => {
      console.log(res.cid);
    },
    fail(err) {
      console.log(err)
    }
  })

4.2、監聽推送消息

uni.onPushMessage(callback) 啟動監聽推送消息事件。

uni.onPushMessage((res) => {
   console.log('監聽推送消息', res)
})
//收到消息內容
{
  "type":"click",
    "data":{
      "__UUID__":"androidPushMsgXXXXXX",
        "title":"tmgh",
          "appid":"__UNI__DXXXXX",
            "content":"c✨",
              "payload":{
                "timeMillis":"1686192721365"
              },
              "force_notification":"true"
    }
}

4.3、創建本地通知欄消息

uni.createPushMessage(OBJECT) 創建本地通知欄消息(HBuilderX 3.5.2起支持)

平臺差異說明

App

H5

快應用

微信小程式

支付寶小程式

百度小程式

位元組跳動小程式、飛書小程式

QQ小程式

快手小程式

京東小程式

x

x

x

x

x

x

x

x

x

OBJECT 參數說明

參數名

類型

必填

說明

title

string

推送消息的標題,在系統消息中心顯示的通知消息標題,預設值為程式的名稱。
Android - ALL (支持)
iOS - 5.0+ (不支持): 不支持設置消息的標題,固定為程式的名稱。

content

string

消息顯示的內容,在系統通知中心中顯示的文本內容。

payload

string、Object

消息承載的數據,可根據業務邏輯自定義數據格式。

icon

string

推送消息的圖標
本地圖片地址,相對路徑 - 相對於當前頁面的host位置,如"a.jpg",註意當前頁面為網路地址則不支持;絕對路徑 - 系統絕對路徑,如Android平臺"/sdcard/logo.png",此類路徑通常通過其它5+ API獲取的;擴展相對路徑URL(RelativeURL) - 以"_"開頭的相對路徑,如"_www/a.jpg";本地路徑URL - 以“file://”開頭,後面跟隨系統絕對路徑。
Android - 2.3+ (支持)
iOS - ALL (不支持): 不支持自定義圖片,固定使用應用圖標。

sound

string

'system' 'none'推送消息的提示音
顯示消息時的播放的提示音,可取值:“system”-表示使用系統通知提示音;“none”-表示不使用提示音;預設值為“system”。
Android - 2.3+ (支持)
iOS - 5.1+ (支持): 當程式在前臺運行時,提示音不生效。註:通常應該設置延遲時間,當程式切換到後臺才創建本地推送消息時生效。

cover

boolean

是否覆蓋上一次提示的消息
可取值true或false,true為覆蓋,false不覆蓋,預設為permission中設置的cover值
Android - ALL (支持)
iOS - 5.0+ (不支持): 不支持覆蓋消息,只能創建新的消息。

delay

number

提示消息延遲顯示的時間
當設備接收到推送消息後,可不立即顯示,而是延遲一段時間顯示,延遲時間單位為s,預設為0s,立即顯示。

when

Date

消息上顯示的提示時間
預設為當前時間,如果延遲顯示則使用延時後顯示消息的時間。
Android - ALL (支持)
iOS - 5.0+ (不支持): 不支持設定消息的顯示時間,由系統自動管理消息的創建時間。

success

Function

介面調用成功的回調函數

fail

Function

介面調用失敗的回調函數

complete

Function

介面調用結束的回調函數(調用成功、失敗都會執行)


uni.createPushMessage({ title:
'自創標題', content: '自創內容', payload: {}, success: () => { console.log("自創推送成功") }, fail: () => { console.log("自創推送失敗") } })
 

4.4、關閉消息監聽

uni.offPushMessage(callback) 關閉推送消息監聽事件 示例代碼:

let callback = (res)=>{
  console.log(res)
}
//啟動推送事件監聽
uni.onPushMessage(callback);
//關閉推送事件監聽
uni.offPushMessage(callback);

 

五、調試中 bug

 

前端同學最愁的就是按照官方文檔寫了,看著沒有問題,但是推送就是不好,出現問題找不到解決辦法愁死人。

無法觸發推送事件,怎麼解決?

plus.push.addEventListener("receive") 和 uni.onPushMessage 無法觸發,需要透傳消息,使用unipush 後臺推送透傳消息可以觸發,但是自己平臺的推送始終不執行,好氣哦!

網上各種百度,解決辦法五花八門的,最後還是在官方文檔里找到解決辦法,建議大家多看開發文檔。

解決辦法:

修改雲函數中 force_notification 配置參數。

服務端執行推送時,傳遞參數force_notification:true,客戶端就會自動創建“通知欄消息”(此時你監聽不到消息內容),當用戶點擊通知欄消息後,APP才能監聽到消息內容。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 摘要:本文主要為大家講解在數倉性能調優過程中,關於大寬表關聯MERGE性能優化過程。 本文分享自華為雲社區《GaussDB(DWS)性能調優:大寬表關聯MERGE性能優化》,作者:譡里個檔。 【業務背景】 如下MERGE語句執行耗時長達2034s MERGE INTO sdifin.hah_ae_l ...
  • # 1、環境 Windows 11 Docker 20.0.2 # 2、拉取鏡像 我選擇 ubuntu20.04: ```powershell docker pull ubuntu:20.04 ``` ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/6d91edc5 ...
  • 數據倉庫是資料庫的下一代產品形態 —— 如何對數字化轉型過程中涌現的數據集合進行有效的存儲、分析和利用,繼而幫忙企業進行運營決策優化甚至創造出新的獲客模式和商業模式形成競爭力,是企業主們亟需解決的問題。在數據價值爆發的時代背景中,數據倉庫在千行百業中都有著相應的應用場景。 ...
  • 原文地址: [Android BottomNavigation底部導航欄使用 - Stars-One的雜貨小窩](https://stars-one.site/2023/07/04/android-bottomnavigation-use) ## 基本使用 本文側重點記錄一些特殊的樣式設置,所以基本 ...
  • ### 動機 在進行移動端全球化的時候,我們需要根據語言類型準備格式相同,文本不同的好多個文件,如果一個一個翻譯顯然很浪費時間,如果整篇複製到Google翻譯通常翻譯出來的文本是沒辦法直接用的,所以我通過有道雲API實現了一個翻譯iOS全球化文件的工具類。Android可以重寫文本匹配的部分。 ## ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 前言 在使用 Vue 3 組件庫 Naive UI 的數據表格組件 DataTable 時碰到的問題,NaiveUI 的數據表格組件 DataTable 在固定頭部和列的示例中,在鍵盤操作下表格橫向滾動會有問題,本文是記錄下解決問題的過程 ...
  • vue3+tiff.js展示tif文件 場景:tif格式的文件需要在頁面上預覽(預覽的tif文件較小) 組件:tiff.js npm install tiff.js 組件引入: import 'tiff.js'; 註意:網路上的信息引入使用import Tiff from 'tiff.js' 但是實 ...
  • 有很多方法可以優化我們的 JavaScript 代碼,本文總結了我在工作中經常使用的 8 個 JavaScript 技巧,希望它也能幫助你。 ### 減少使用 if-else 在編寫兩個以上的 if ... else 時,是否有更好的優化方法? 如下代碼,我們需要根據一個漢堡包的名字來計算它的價格。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...