Just My Life & My Work

App 遠端推播流程

現在大家用智慧手機,有網路的狀態下,總是會持續接收到遠端推播,可說是非常重要的功能。

.

在現今行動裝置普及的時代,遠端推播通知已成為企業與用戶之間最直接且即時的溝通管道。透過推播,企業能在第一時間將重要資訊、最新優惠或系統提醒送達使用者手機螢幕,不需要依賴電子郵件或使用者主動開啟應用程式,就能達到即時互動的效果。這種即時性不僅提升了資訊傳遞的效率,也大幅增加了用戶的參與度與黏著度。

對企業而言,推播是一種低成本但高效益的行銷工具。透過精準的分眾與內容設計,可以將正確的訊息送到正確的使用者手中,進而提升轉換率與品牌價值。而在服務應用層面,推播能即時提醒使用者系統異動、交易狀態更新或安全通知,強化使用者體驗與信任感。

此外,推播在使用者行為數據的收集與分析上也扮演關鍵角色。企業可藉由用戶對推播的反應,優化行銷策略與產品功能,形成良性循環。綜合來看,手機遠端推播不僅是一項技術工具,更是企業經營、用戶體驗與數據分析之間的重要橋樑,在現代數位生態中具有不可或缺的戰略價值。

那它整個機制是如何進行的呢?iOS/Android 有何差異呢?

iOS 遠端推播通知流程說明

  1. App 向 APNs 註冊
    • 使用者開啟 App,App 會呼叫 UIApplication.shared.registerForRemoteNotifications()APNs (Apple Push Notification Service) 請求一個 Device Token
    • 這個 Token 就像是這台裝置在 APNs 的門牌號碼。
  2. App 將 Device Token 傳給伺服器
    • App 拿到 Token 後,會送到你的 App Server (推播伺服器)
    • 伺服器必須保存這個 Token,之後要推播時才知道要推送到哪個裝置。
  3. App Server 建立推播請求
    • 你的伺服器準備一個 JSON payload(包含訊息標題、內容、badge 數字等)。
    • 然後透過 HTTP/2 或 JWT-based authentication,帶著憑證/金鑰呼叫 APNs API
  4. APNs 將推播傳送到指定裝置
    • APNs 收到推播後,會根據 Device Token 將訊息送到對應的裝置。
  5. iOS 裝置收到推播並通知使用者
    • iOS 系統會決定如何呈現推播(橫幅、通知中心、聲音、震動)。
    • 如果 App 在前景,會觸發 UNUserNotificationCenterDelegate,讓 App 自行決定要不要顯示。

.

Android 遠端推播通知流程說明

Android 推播通常透過 Firebase Cloud Messaging (FCM) 實現,完整流程如下:

  1. App 啟動 → 向 FCM 註冊 Token
    • App 第一次啟動時,會透過 Firebase SDKFCM Server 請求一組唯一的 Device Token
    • 這個 Token 代表該裝置在 FCM 系統中的身份。
  2. App Server 保存 Token
    • App 將 Token 傳回自己的後端伺服器 (App Server),以便後續推送通知時使用。
  3. App Server 發送推播請求給 FCM
    • 當有通知需求時 (例如新訊息),App Server 將 通知內容 (payload) + 目標 Token 發送給 FCM Server
  4. FCM Server → 裝置
    • FCM Server 負責將訊息路由到對應的 Android 裝置
    • 若裝置在線,會立即送達;若不在線,會暫存在 FCM,直到裝置上線 (但有保存時效限制)。
  5. App 收到推播
    • 裝置上的 Firebase SDK 接收訊息。
    • 若是 通知訊息 (Notification message):會自動顯示在系統通知列。
    • 若是 資料訊息 (Data message):會交由 App 的 FirebaseMessagingService 回呼處理,可自訂行為 (例如更新 UI、背景下載)。

.

後台遠端推播通知流程說明

📌 架構重點:

  1. 伺服器只需呼叫友盟 / 極光 API,不用自己管理各廠商的差異。
  2. 友盟 / 極光 會自動分流:
    • 中國大陸:轉發到 各手機廠商通道(小米/華為/OPPO/vivo…)
    • 海外:轉發到 Google FCM
  3. 手機端 SDK 負責接收並展示通知,開發者無須自行判斷通道。

.

iOS 和 Android 遠端推播通知差異

雖然 iOS 和 Android 都支援遠端推播通知 (Remote Push Notifications),但在實作與行為上有一些重要差異,特別是當我們在 Flutter 中處理跨平台推播時,需要留意以下幾點:


📱 iOS 推播通知 (APNs)

  • 服務提供者:Apple Push Notification Service (APNs)
  • 必須註冊:App 必須向 APNs 註冊,才能取得 device token
  • 權限要求:必須由使用者授權(通常會跳出「是否允許通知?」的系統彈窗)。
  • 背景限制
    • iOS 對背景執行的限制嚴格,通知 payload 如果要觸發背景處理,必須設定 content-available: 1(silent push)。
    • Silent push 常受省電策略影響,無法保證 100% 投遞。
  • 通知顯示
    • 系統完全控制通知樣式(僅能透過 Notification Service Extension 改變部分內容,例如圖片、按鈕)。
  • 平台限制
    • iOS 不允許應用程式在未經使用者同意的情況下顯示通知。

🤖 Android 推播通知 (FCM)

  • 服務提供者:Firebase Cloud Messaging (FCM),底層透過 Google Play Services。
  • 自動註冊:安裝後即可自動取得 registration token
  • 權限要求
    • Android 13 (API 33) 之後,通知也需要使用者授權。
    • 在 Android 12 以前則預設允許通知。
  • 背景限制
    • Android 支援更多彈性,例如前景服務 (Foreground Service)、背景處理等。
    • 即使是 “data message"(純資料推播),也能喚醒 App 處理。
  • 通知顯示
    • 開發者可以完全自定義通知 UI(例如使用 NotificationCompat 建立自訂樣式)。
    • 可顯示大圖、進度條、自訂 layout。

🔑 主要差異整理

功能/限制iOSAndroid
推播服務APNsFCM
權限請求必須,系統彈窗Android 13+ 必須
註冊方式手動呼叫 APNs自動透過 FCM
通知控制系統控制,僅能有限修改完全自訂
背景限制嚴格,Silent Push 不保證投遞可透過 data message 喚醒處理
測試難度高,需要真機與正確憑證相對容易

.

隨意留個言吧:)~

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

標籤雲