首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

個推推送:App 後台鎖屏收不到通知、通知列表無顯示?缺少後台 Service 支撐

     編輯:程式設計綜合問答

現象

  1. App 在後台、手機鎖屏時收不到個推訊息,但螢幕會亮起。
  2. 收到推送後,通知欄完全沒有該條訊息。

根因分析

  • Android 系統機制:App 進程在後台/鎖屏時極易被系統回收(Doze 模式、App Standby、廠商優化)。**沒有前台 Service(`startForeground`)或系統級推送通道(FCM/華為/小米/OPPO/Vivo 推送),進程無法常駐**,自然收不到訊息。
  • 通知未顯示:客戶端收到推送 payload 後,**必須主動呼叫 `NotificationManager.notify()` 建立通知**。若代碼邏輯缺失、Channel 未建立(Android 8.0+)、或進程在處理前被殺,通知自然不會出現。

標準接入檢查清單

  1. 配置 `IntentService` / `BroadcastReceiver` 接收推送:在 `AndroidManifest` 註冊,`exported="true"`,權限正確。
  2. 實現 `onMessageReceived` / `onReceive` 中建立通知:
    NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
        .setContentTitle(title).setContentText(content).setSmallIcon(R.drawable.ic_push)
        .setAutoCancel(true).setContentIntent(pendingIntent);
    NotificationManagerCompat.from(this).notify(notifyId, builder.build());
    
  3. Android 8.0+ 必須建立 NotificationChannel:`importance` 設為 `DEFAULT` 或 `HIGH`。
  4. 接入廠商推送 SDK(關鍵):華為 HMS Push、小米 MiPush、OPPO Push、Vivo Push、魅族 Push、FCM(海外)。**個推等第三方推送在國內廠商手機上必須走廠商通道才能在殺進程/鎖屏下送達**。
  5. 申請自啟動/後台彈窗/通知權限:引導用戶在系統安全中心/電池優化白名單中授權。

快速驗證

  • 手機連 USB,`adb logcat | grep -i getui` 觀察推送到達日誌。
  • 強制停用 App 後,從個推後台發測試推送,觀察通知欄。
  • 對比:集成廠商 SDK 前後送達率差異。

總結

個推收不到/不顯示,**核心在於「進程不活」+「通知建立邏輯缺失/Channel 缺失」**。**必須接入廠商推送 SDK + 前台 Service + NotificationChannel + 白名單引導**,才能在國內 Android 生態實現可靠送達與顯示。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved