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

时间:2018-08-07 17:57:51

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

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

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

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

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

Firebase Console app Firebase Console app configuration

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

VisualStudio NuGet packages

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

VisualStudio GoogleService-Info.plist Properties

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

Info.plist

  1. Entitlements.plist :我添加了生产aps环境的权利。

Entitlements.plist

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

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

Xamarin.iOS AppDelegate

我还重写方法RegisteredForRemoteNotificationsFailedToRegisterForRemoteNotificationsDidReceiveRemoteNotification并调用受尊重的方法(如Getting Started指令中所述)。

  1. Xamarin.Forms :现在,这一切在iOS上都是地狱。当它调用CrossFirebasePushNotification.Current.RegisterForPushNotifications();时,将显示“允许/不允许”弹出窗口,并且在用户单击“允许”后,该应用程序仅关闭。没有引发异常或任何异常(嗯,至少在try / catch语句中没有任何异常)。该应用程序只是关闭了。

Xamarin.Forms App.xaml.cs

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

任何建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

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