【问题标题】:Xamarin.iOS: Firebase push notifications not workingXamarin.iOS:Firebase 推送通知不起作用
【发布时间】:2019-01-14 21:35:13
【问题描述】:

我正在使用 Xamarin.Android 和 Xamarin.iOS 客户端开发 Xamarin.Forms 应用程序。对于推送通知,我使用FirebasePushNotificationPlugin 库。它在 Android 上完美运行,但在 iOS 上却不行。

在 iOS 上,应用会在请求使用推送通知后关闭。因此:显示“允许/不允许”弹出窗口,当用户单击“允许”时,应用程序将关闭。没有抛出异常或任何东西。

我已完成设置说明中的每一步,但为了仔细检查,我将向您展示所有内容的屏幕截图:

  1. Firebase 控制台:我已在 Firebase 控制台上注册了我的 iOS 应用并输入了所有必填字段(App ID、Bundle ID、App Store ID、App ID 前缀)。我还上传了 APNs 身份验证密钥(但没有证书)。

  1. NuGet:我已将 Plugin.FirebasePushNotification 包添加到 Xamarin.Forms 和 Xamarin.iOS 项目中。

  1. GoogleService-Info.plist:我已将 GoogleService-Info.plist(我从 Firebase 控制台获取)添加到 Xamarin.iOS 项目并将其构建操作设置为 BundleResource

  1. Info.plist:我已启用远程通知后台模式,并在 Info.plist 中添加了 FirebaseAppDelegateProxyEnabled(并将其设置为 No)。

  1. Entitlements.plist:我已添加生产 aps-environment 权利。

这是production(而不是development),因为我无法运行和调试应用程序,因此实际上每次都将应用程序上传到 App Store Connect 并使用 TestFlight 作为内部测试人员进行测试。

  1. Xamarin.iOS AppDelegate: 我在 AppDelegate.FinishedLaunching 方法中初始化包,就在 LoadApplication(new App()); 之后。 false 参数表示它不会自动注册通知(稍后会手动注册)。

我还覆盖方法RegisteredForRemoteNotificationsFailedToRegisterForRemoteNotificationsDidReceiveRemoteNotification 并调用受尊重的方法(如Getting Started 说明中所述)。

  1. Xamarin.Forms: 现在,iOS 上的一切都陷入了困境。当它调用CrossFirebasePushNotification.Current.RegisterForPushNotifications(); 时,它会显示“允许/不允许”弹出窗口,并且在用户单击“允许”后,应用程序会简单地关闭。不会抛出任何异常或任何东西(好吧,至少在 try/catch 语句中没有捕获到任何东西)。应用会直接关闭。

有趣的是,FCM 令牌在这一切之前已经(成功)创建,如果我向该令牌(那个 iOS 应用程序的)发送推送消息,Firebase 服务器返回success。所以我猜测 Firebase 部分是正确的,但是 iOS 和/或库有问题吗?

任何建议将不胜感激!

【问题讨论】:

  • 改用这个 firebase nuget 包怎么样? nuget.org/packages/Xamarin.Firebase.iOS.CloudMessaging 它是由 Xamarin 创建的。我在之前的项目中成功使用过。
  • 我已经考虑过了,但是实现也必须为Android单独完成......我目前使用的库是使用你提到的包实现的。如果没有人提出解决方案,我一定会尝试。
  • 设备日志中是否显示任何内容?看看控制台是否吐出任何关于它为什么杀死应用程序的系统消息。
  • 有机会我会检查的。
  • 它是工作:'LoadApplication(new App()); FirebasePushNotificationManager.Initialize(options, true); CrossFirebasePushNotification.Current.RegisterForPushNotifications(); return base.FinishedLaunching(app, options);'

标签: c# firebase xamarin xamarin.ios firebase-cloud-messaging


【解决方案1】:

对于阅读本文的任何人:我已经通过删除 FirebasePushNotificationPlugin 库解决了这个问题,该库显然不适用于 iOS。然后,我按照 GettingStarted 指南使用 Xamarin.Firebase.iOS.CloudMessaging 包实现了通知。

【讨论】:

  • 入门指南链接已损坏! =/
  • 他们更改了文档的位置。我已更新链接,请再次检查。
  • firebase.google.com/docs/cloud-messaging/ios/… @GregaMohorko 我也将您的方法与本文结合起来,它对我有用。
  • 您是否从 iOS 项目或主 Forms 项目中删除了 FirebasePushNotificationPlugin?因为我在表单项目中使用 FirebasePushNotificationPlugin,它适用于我的 android 项目。
  • 我将它从主 Forms 项目中删除并开始在 Android 和 iOS 中使用 Xamarin.Firebase.iOS.CloudMessaging。
猜你喜欢
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
  • 2017-04-29
  • 2016-05-22
相关资源
最近更新 更多