Skip to main content

Huawei Push (HMS) — Overview

Paylisher delivers push notifications and in-app messages to Android through Firebase Cloud Messaging (FCM). However, Huawei devices released after 2019 ship without Google Mobile Services (GMS), so FCM cannot deliver to them. Huawei provides its own channel — HMS Push Kit — for these devices.

Paylisher adds HMS Push Kit alongside FCM. A device is either GMS‑based or HMS‑based; the SDK detects which is available at runtime and uses the correct channel. FCM behaviour is completely unchanged — HMS is additive and opt‑in.

When do you need this?

DeviceHas GMS?Channel
Samsung, Pixel, most global AndroidFCM (nothing to do)
Huawei with Google Play installedFCM
Huawei 2019+ (P40, Mate 30/40, nova 6+, AppGallery‑only)HMS Push Kit

If your audience includes GMS‑less Huawei devices, integrate HMS. If not, you can skip this entirely — the FCM setup is enough.

Architecture

Both channels converge on the same Paylisher rendering engine. The transport (FCM vs HMS) is stripped away before any rendering happens, so a push or in‑app message renders identically regardless of which channel delivered it — all layout types (banner / modal / fullscreen / carousel / native) included.

[Android client]                              [Backend: Engage]
paylisher-android ── token(+provider) ──► routing by pushProvider:
+ paylisher-android-hms (optional) "fcm" → FCM sender
│ HMS message "hms" → HMS sender
▼ ◄──── HMS push ────
shared render engine (identical to FCM)
  • Client: the optional paylisher-android-hms module receives the HMS message/token and feeds it to the same provider‑neutral core the FCM path uses.
  • Backend (Engage): each device carries a pushProvider tag; Engage routes hms tokens to the HMS sender and everything else to FCM.

Two audiences — who does what

This section serves two kinds of readers. Use the table to find your path.

StepYou use Paylisher's hosted services (SaaS)You run Paylisher on‑prem (self‑hosted Engage)
Huawei developer account + AppGallery Connect projectPaylisher's project (coordinate with Paylisher)You create your own — see [AppGallery Setup](../../Push Credentials/huawei-hms.md)
Register your app + SHA‑256, get agconnect-services.jsonCoordinate with Paylisher, or use your own projectYou — see [AppGallery Setup](../../Push Credentials/huawei-hms.md)
App‑side SDK integrationYou — see App IntegrationYou — see App Integration
Engage backend credentials (HMS_*)Paylisher configures itYou — see Backend Config
note

Whichever path you're on, the app‑side integration (App Integration) is the same. Only the account ownership and backend configuration differ.

What you'll set up

  1. AppGallery Connect — enterprise account, project, app, Push Kit, SHA‑256 fingerprint, agconnect-services.json, and the sending credential. → [AppGallery Setup](../../Push Credentials/huawei-hms.md)
  2. App‑side — add the HMS module, the Huawei Maven repo, the AGConnect Gradle plugin, the config file, and register the push token. → App Integration
  3. Backend (Engage) — set the HMS_* environment variables (on‑prem only). → Backend Config
  4. On‑prem — the end‑to‑end self‑hosted checklist. → On‑Prem
  5. Troubleshooting — error codes and common pitfalls. → Troubleshooting