簡體   English   中英

如何調試 iOS 未收到推送通知(使用 firebase_messaging 的 Flutter)?

[英]How to debug iOS not receiving push notifications (Flutter using firebase_messaging)?

目前,我正在使用 flutter firebase_messaging 庫來推送 iOS 和 Android 的通知。

我在接收由 firebase 控制台(通過指定 apnsToken 進行通知測試)或使用舊版 HTTP 協議的 curl 請求(僅通知,不發送 iOS 或 Android 有效負載)發送的 iOS 通知時遇到問題。 在 Android 上,這兩種方法都可以正常工作並且會收到通知。

我已按照文檔中的所有指定步驟操作但沒有成功:

  • 啟用推送通知和后台模式(后台獲取和遠程通知)
  • 注冊一個密鑰並將 .r8 導出到 firebase 控制台 APN Auth 密鑰。
  • 注冊一個 APP ID(啟用推送通知)。
  • 生成了一個供應配置文件。
  • 等待顫振側的 Firebase 初始化。
  • 在 iOS 上請求通知權限

更多信息:我可以在 iOS 和 Android 上獲取 APNs ID,所以我猜問題不在於 firebase(核心)配置,而可能在於 firebase 消息傳遞。 但是,iOS APN(僅大寫鎖定字符和數字)似乎與 Android APN 完全不同。 正常嗎?

我沒有弄亂 FirebaseAppDelegateProxyEnabled,甚至認為我收到以下消息:FIRMessaging 遠程通知代理已啟用,將調整遠程通知接收器處理程序。

我知道 curl 請求返回 200 OK(響應代碼,我在 Android 上收到通知)。

我忘記了任何步驟? 我該如何調試?

根據我的經驗,一般來說調試這個是相當困難的。 我有一個類似的問題,我發現這是由於我犯的兩個錯誤。 雖然您可能已經解決了您的問題,但我會將其發布在這里,以便其他人可以從中受益。

1. 請求權限

在 iOS 上,您需要請求發送通知的權限,否則它們將永遠不會到達。 查看特定命令的文檔 就我而言,它的工作原理是

FirebaseMessaging.instance.requestPermission(
  alert: true,
  announcement: false,
  badge: true,
  carPlay: false,
  criticalAlert: false,
  provisional: false,
  sound: true,
);

2.使用普通令牌,而不是APNs令牌

這應該是顯而易見的,但我以某種方式設法認為如果Platform.isIOS ,我需要使用 APNs 令牌。 這當然不是真的,你應該總是使用

String? token = await FirebaseMessaging.instance.getToken();

取回它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM