【FAQ】獲取Push Token失敗,如何進行排查?

来源:https://www.cnblogs.com/hmscore/archive/2023/02/23/17146899.html
-Advertisement-
Play Games

一、 獲取Push Token的方式 獲取Push Token有兩種方式:一種是調用getToken方法向Push服務端請求Token,當getToken方法返回為空時,Token可通過onNewToken方法返回,因此需要實現onNewToken方法;另一種是自動初始化,Token通過onNewT ...


一、 獲取Push Token的方式

獲取Push Token有兩種方式:一種是調用getToken方法向Push服務端請求Token,當getToken方法返回為空時,Token可通過onNewToken方法返回,因此需要實現onNewToken方法;另一種是自動初始化,Token通過onNewToken方法返回。這兩種方法的詳細說明可看獲取和註銷Token文檔:獲取和註銷Token。

二、 獲取Push Token失敗的現象

獲取Push Token失敗大致有兩種現象:一種是獲取Token的介面執行失敗,錯誤會在日誌中顯示,有相應的錯誤碼列印;另一種是獲取Token的介面執行成功,沒有報錯,但是getToken方法返回為空,onNewToken方法也沒有被調用。

三、 分現象進行排查

如果有報錯,需要找到報錯描述和錯誤碼,參考常見錯誤碼說明文檔:常見錯誤碼,根據報錯描述和常見錯誤碼說明文檔中對應錯誤碼的解決方法進行排查,大部分問題都可以得到解決。

比較典型的案例:開發者按照對應錯誤碼的解決方法進行排查,無法解決問題,後來和開發者要了手機端抓取的日誌,從日誌中看到申請Token使用的appid不是應用對應的appid。所以一定要保證使用的agconnect-services.json文件是對應應用最新的文件,可以從AGC控制臺上新下載一份;並且保證應用中所有使用到的appid都是對的,可以用全局搜索進行查找。有些開發者的應用可能是多個人共同開發的,變數命名可能不一致,無法搜索所有用到的appid,這種情況下可以通過手機端日誌確認使用的appid是否正確。

日誌抓取方法:zaaxz

adb shell setprop log.tag.hwpush VERBOSE
adb logcat -v threadtime 1> D:\hwpush.log

2、嘗試復現遇到的問題場景。

3、按快捷鍵“Ctrl+C”完成日誌抓取。

查找關鍵日誌:

搜索api_name:push.gettoken關鍵字,找到如上圖所示的這行日誌,error_code是申請Token失敗時返回的錯誤碼,app_id是用來申請Token的appid,pkg_name是應用的包名,檢查app_id值是否為對應應用的appid,如果不是,可以使用這個app_id在應用的工程中進行全局搜索,排查在哪個地方使用了這個值,併進行修改。

如果獲取token的介面執行成功,沒有報錯,onNewToken方法也沒有被調用,請檢查代碼中繼承了HmsMessageService的自定義類,看下自定義的類中除了重寫了配置Manifest文件文檔中說明的用於接收透傳消息、獲取Token的方法外,是否已經重寫其他方法,如果有請去掉,其他方法不需要重寫,而且重寫可能會導致類中的方法不會被調用。如果繼承HmsMessageService的類實現沒有問題,請排查工程中定義了幾個繼承HmsMessageService的類,如果定義了多個繼承HmsMessageService的類,也會導致實現的方法不會被調用,繼承HmsMessageService的類只能有一個。

典型案例:

開發者使用三方推送,三方推送的SDK中已經定義了一個繼承HmsMessageService的類,這種情況就不需要再定義繼承HmsMessageService的類,需要開發者去咨詢三方推送的技術支持要怎麼使用他們定義的這個類。可以通過反編譯查看Android聲明文件,確定三方推送的SDK中是否定義了繼承HmsMessageService的類。可以通過查看手機端日誌確定有幾個繼承HmsMessageService的類,日誌抓取方法同上,下麵說一下怎麼看關鍵日誌。

查找關鍵日誌:

搜索HmsMessageService num is關鍵字,找到如上圖所示的日誌,結合日誌上下文中的packageName確定對應應用的日誌,HmsMessageService num is後面的數值就是繼承HmsMessageService的類的數量,如果不為1,請排查工程代碼,並刪除多餘的類。

瞭解更多詳情>>

訪問華為開發者聯盟官網
獲取開髮指導文檔
華為移動服務開源倉庫地址:GitHubGitee

關註我們,第一時間瞭解 HMS Core 最新技術資訊~


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

-Advertisement-
Play Games
更多相關文章
  • SQL中的排序 使用關鍵字:ORDER BY ORDER BY 欄位名後使用ASC升序表示;使用DESC表示降序。 ORDER BY 後面可以使用列的別名進行排序(列的別名只能在ORDER BY中使用,不能再HWERE後使用) WHERE需要再FROM後,ORDER BY前聲明!! 多級排序,ORD ...
  • 1.1 技術發展 redis是用來解決性能問題的資料庫 技術的分類: 解決功能性問題:Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN 解決擴展性問題:Struts、Spring、SpringMVC、Hibernate、Mybatis 解決性能問題:NoSQL、Ja ...
  • 研發背景 公司安全部目前針對內部系統的網路訪問日誌的安全審計,大部分都是T+1時效,每日當天,啟動Python編寫的定時任務,完成昨日的日誌審計和檢測,定時任務運行完成後,統一進行企業微信告警推送。這種方案在目前的網路環境和人員規模下,呈現兩個痛點,一是面對日益頻繁的網路攻擊、釣魚鏈接,T+1的定時 ...
  • 摘要:本文就使用springboot結合mybatis plus在項目中實現對GaussDB(DWS)的增刪改查操作。 本文分享自華為雲社區《基於SpringBoot實現操作GaussDB(DWS)的項目實戰【玩轉PB級數倉GaussDB(DWS)】》,作者:清雨小竹。 GaussDB(DWS) 數 ...
  • PS:本教程破解工具均收集於網路,請勿商用,僅供個人學習使用,如有侵權,請聯繫作者刪除。若條件允許,希望大家購買正版 ! 話不多說,直接上乾貨教程!!! 第一步:Get Navicat premium 15安裝包和激活工具 Navicat Premium 15 永久激活工具(親測可用) 第二步:開始 ...
  • EE模塊是搜索系統中改善生態、探索商品的重要鏈路,其目標是緩解數據馬太效應導致模型對商品排序豐富性、探索性不足,帶來的系統非最優解問題。以下分別從模型迭代、線上實驗指標、離線評估體系介紹相應模塊的優化。 ...
  • PostgreSQL 作為當下流行的資料庫,不少開發者因其開源、可靠、可擴展等特性把它應用到實際的生產環境中,幫助無數 PostgreSQL 廠商的 Percona 編製了一個最常見錯誤的列表。即使你認為自己已經正確地安裝配置 PostgreSQL,或許仍會發現此列表對於驗證你的安裝配置大有裨益。 ... ...
  • 前言: 最近接到個需求,我們新產品上的外包側APP需要使用硬體唯一ID(不管怎麼升級怎麼操作,ID始終不變和硬體綁定),用來做許可權校驗。 由於瞭解到安卓ID或序列號都會在擦除升級後重新隨機生成,所以這裡使用硬體上的ID來作為唯一ID,接下來進入正題 此篇以安卓7.1系統為例 一,常用硬體信息ID 這 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...