iOS Flutter 没有收到推送通知

Posted

技术标签:

【中文标题】iOS Flutter 没有收到推送通知【英文标题】:iOS Flutter not getting push notifications 【发布时间】:2020-05-25 20:12:33 【问题描述】:

我在 Flutter 上为 ios 设置推送通知时遇到问题。 另一个开发人员也尝试添加 - 有同样的问题。

TL;DR:任何人都可以在 iOS Flutter 上使用来自稳定频道的全新构建推送运行吗?

我按照此处描述的设置步骤进行操作: https://pub.dev/packages/firebase_messaging

具体来说:

生成应用程序 ID 并在 https://developer.apple.com/account/resources/certificates/ 中推送密钥 将 info.plist 添加到 ios/Runner 文件夹 开启推送功能 已将 APNS 证书上传到 Firebase 控制台 确保 App / Runner、info.plist 和 GoogleService-Info.plist 中的 bundle ID 相同

在 AppDelegate.swift 中添加行

如果 #available(iOS 10.0, *) UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate

没有推送。应用在后台时也不会,根本不会。

我还尝试了另一个步骤 - 发送个人推送。在 CURL 中发送代码如下所示:

curl -i -X POST \
   -H "Content-Type:application/json" \
   -H "Authorization:key=AIza_legacy_key" \
   -d \
'

  "to": "my_push_token",

  "notification": 
  "body": "test_body",
   "title": "test_title"
  , 

  "priority": "high", 


' \
 'https://fcm.googleapis.com/fcm/send'

而且响应总是这种类型: - 第一个请求是 InvalidRegistration - 第二次和下一次相同的呼叫未注册

另一个人今年夏天发现了类似的问题并在GitHub上发帖,但是线程被关闭了: https://github.com/flutter/flutter/issues/30486

我的 Flutter 医生:

[✓] Flutter (Channel unknown, v1.12.13+hotfix.7, on Mac OS X 10.15.3 19D76, locale ru-UA)
    • Flutter version 1.12.13+hotfix.7 at /Users/reiven/flutter
    • Framework revision 9f5ff2306b (2 weeks ago), 2020-01-26 22:38:26 -0800
    • Engine revision a67792536c
    • Dart version 2.7.0


[✓] android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /Users/reiven/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-29, build-tools 29.0.2
    • Java binary at: /Applications/Android Studio 3.6 Preview.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.3.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.3.1, Build version 11C504
    • CocoaPods version 1.7.5

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 3.6)
    • Android Studio at /Applications/Android Studio 3.6 Preview.app/Contents
    • Flutter plugin version 43.0.2
    • Dart plugin version 192.7761
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)

[✓] Connected device (4 available)
    • iPhone            • 96c120610d684dbab7f5e4d036a7f48041755f96 • ios            • iOS 12.3.1
    • iPhone 11 Pro Max • 8ABC99D3-6C46-4A3D-968B-F5719AA92C97     • ios            • com.apple.CoreSimulator.SimRuntime.iOS-13-3 (simulator)
    • Chrome            • chrome                                   • web-javascript • Google Chrome 79.0.3945.130
    • Web Server        • web-server                               • web-javascript • Flutter Tools

附言我尝试过的一些事情:

使用了另一个开发者帐户(100% 确认推送正在另一个项目中工作) 使用了另一个 Firebase 帐户 重新创建的证书、项目 让其他开发人员尝试设置自己的推送(他过去也确认成功)。

【问题讨论】:

我也有同样的问题...有什么想法吗? 【参考方案1】:

神奇的是,昨天晚上才开始工作。 所以首先 - 现在尝试。如果不工作 - 重新创建证书并重做初始化步骤。如果仍然无法正常工作 - 祈祷并改天重试。

【讨论】:

您使用的是 AppKey 还是证书?我有完全相同的问题,我的 Android 应用收到 Firebase 的推送,但 iOS 没有。 我用过AppKey。我知道 Android - 它总是运行良好。问题出在 iOS 上 您遇到过类似的问题吗? github.com/FirebaseExtended/flutterfire/issues/1690。删除 if #available(iOS 10.0, *) 我猜对许多开发人员有帮助!这样做会停止获取系统托盘消息吗?只有 onmessage 会被调用? @LOG_TAG,我已经删除了这一行,但没有任何变化...不过,我没有收到推送。 @DanielKuta 系统托盘或 onMessage: print("onMessage: $message");你没有得到哪一个?

以上是关于iOS Flutter 没有收到推送通知的主要内容,如果未能解决你的问题,请参考以下文章

Flutter iOS 应用提交问题警告:缺少推送通知权利

iOS swift中没有收到推送通知?

GCM iOS 没有收到推送通知

phonegap build:没有收到 ios 推送通知

在 iOS Flutter 中更改通知声音

Flutter firebase 消息推送通知格式 3 行