Xamarin.iOS:Firebase 推送通知不起作用
Posted
技术标签:
【中文标题】Xamarin.iOS:Firebase 推送通知不起作用【英文标题】:Xamarin.iOS: Firebase push notifications not working 【发布时间】:2019-01-14 21:35:13 【问题描述】:我正在使用 Xamarin.android 和 Xamarin.ios 客户端开发 Xamarin.Forms 应用程序。对于推送通知,我使用FirebasePushNotificationPlugin 库。它在 Android 上完美运行,但在 iOS 上却不行。
在 iOS 上,应用会在请求使用推送通知后关闭。因此:显示“允许/不允许”弹出窗口,当用户单击“允许”时,应用程序将关闭。没有抛出异常或任何东西。
我已完成设置说明中的每一步,但为了仔细检查,我将向您展示所有内容的屏幕截图:
-
Firebase 控制台:我已在 Firebase 控制台上注册了我的 iOS 应用并输入了所有必填字段(App ID、Bundle ID、App Store ID、App ID 前缀)。我还上传了 APNs 身份验证密钥(但没有证书)。
-
NuGet:我已将 Plugin.FirebasePushNotification 包添加到 Xamarin.Forms 和 Xamarin.iOS 项目中。
-
GoogleService-Info.plist:我已将 GoogleService-Info.plist(我从 Firebase 控制台获取)添加到 Xamarin.iOS 项目并将其构建操作设置为
BundleResource
。
-
Info.plist:我已启用远程通知后台模式,并在 Info.plist 中添加了 FirebaseAppDelegateProxyEnabled(并将其设置为 No)。
-
Entitlements.plist:我已添加生产 aps-environment 权利。
这是production
(而不是development
),因为我无法运行和调试应用程序,因此实际上每次都将应用程序上传到 App Store Connect 并使用 TestFlight 作为内部测试人员进行测试。
-
Xamarin.iOS AppDelegate: 我在
AppDelegate.FinishedLaunching
方法中初始化包,就在 LoadApplication(new App());
之后。 false
参数表示它不会自动注册通知(稍后会手动注册)。
我还覆盖方法RegisteredForRemoteNotifications
、FailedToRegisterForRemoteNotifications
、DidReceiveRemoteNotification
并调用受尊重的方法(如Getting Started 说明中所述)。
-
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);' 【参考方案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。以上是关于Xamarin.iOS:Firebase 推送通知不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin iOS - 推送通知 - 区分点击的推送通知与到达