【问题标题】:Flutter iOS push not being received未收到 Flutter iOS 推送
【发布时间】:2022-11-27 19:25:52
【问题描述】:

我的 Flutter 应用程序无法在 iOS 设备上收到推送通知。

我试着遵循这个指南:https://firebase.flutter.dev/docs/messaging/apple-integration/

我为配置推送通知所做的步骤:

  1. 在 Firebase 控制台上从 developer.apple.com 注册我的 APN(云消息传递 -> 我的应用程序)
  2. 使用了来自 firebase 的 GoogleServices-Info.plist
  3. 构建应用程序并上传到 TestFlight
  4. 请求用户允许在 iOS 上显示通知
  5. 从我的应用程序复制 fcm 令牌并将其粘贴到 Firebase 控制台 -> 云消息传递 -> 新活动
  6. 已从 TestFlight 安装应用程序的实体 iPhone 未收到推送。

    我还确保我已正确配置 XCode 并且:

    1. 我选择了推送通知和后台模式(后台获取、远程通知)
    2. 我正在使用正确的包标识符(笑)
    3. 我的 App ID 选择了推送通知
    4. 我的 APN 密钥选择了推送通知服务

      知道我做错了什么吗?有人遇到过类似的问题吗?

      编辑: 这是我的AppDelegate.swift 文件,也许它对解决我的问题有点帮助(值得一提 - 我没有碰它,我猜它是由 flutter 生成的):

      import UIKit
      import Flutter
      import FirebaseMessaging
      
      @UIApplicationMain
      @objc class AppDelegate: FlutterAppDelegate {
          
        override func application(
          _ application: UIApplication,
          didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
        ) -> Bool {
          GeneratedPluginRegistrant.register(with: self)
          return super.application(application, didFinishLaunchingWithOptions: launchOptions)
        }
          
          override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
      
             Messaging.messaging().apnsToken = deviceToken
             super.application(application, didRegisterForRemoteNotificationsWithDeviceToken: deviceToken)
           }
      }
      

      在向 Test Flight 提交构建时也收到了来自 Apple 的此类电子邮件:

【问题讨论】:

    标签: ios flutter firebase push-notification apple-push-notifications


    【解决方案1】:

    ITMS-90078您从 App Store 收到的问题表明最终应用程序签名的权利缺少 aps-environment 条目。因此,推送通知在 TestFlight 构建中可能无法按预期工作。

    首先,确保全部Xcode 项目中的 .entitlements 文件确实包含具有适当值的所述条目(通常是 developmentproduction)。

    其次,在用于构建应用程序的机器上,确保位于 ~/Library/MobileDevice/Provisioning Profiles 的配置文件的本地副本确实包含 aps-environment 条目。如果没有,您应该再次下载配置文件并替换您的本地副本。

    最后,要验证最终配置文件是否包含 aps-environment 值,您可以解压缩构建的 IPA 并导航到 Payload/AppName.app/embedded.mobileprovision。您可以检查权利部分实际上包含具有预期值的键。

    如果不是,您的授权文件或供应配置文件可能会被其中一个构建阶段更改(这种可能性很小)。

    【讨论】:

      猜你喜欢
      • 2020-05-25
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      • 2020-08-05
      • 1970-01-01
      • 2017-01-23
      • 1970-01-01
      相关资源
      最近更新 更多