Xamarin.iOS:Firebase 推送通知不起作用

Gre*_*rko 4 c# xamarin.ios firebase xamarin firebase-cloud-messaging

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

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

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

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

Firebase 控制台应用 Firebase 控制台应用配置

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

VisualStudio NuGet 包

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

VisualStudio GoogleService-Info.plist 属性

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

信息表

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

权利.plist

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

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

Xamarin.iOS 应用程序委托

我也覆盖的方法RegisteredForRemoteNotificationsFailedToRegisterForRemoteNotificationsDidReceiveRemoteNotification并呼吁尊重的方法(如在规定入门说明)。

  1. Xamarin.Forms:现在是 iOS 上的地狱。当它调用 时CrossFirebasePushNotification.Current.RegisterForPushNotifications();,它会显示“允许/不允许”弹出窗口,并且在用户单击“允许”后,应用程序将直接关闭。没有抛出异常或任何异常(好吧,至少在 try/catch 语句中没有捕获到任何内容)。该应用程序只是关闭。

Xamarin.Forms App.xaml.cs

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

任何建议将不胜感激!

Gre*_*rko 7

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