Xamarin Forms推送通知未显示在Android通知栏中

fdx2calv  于 2023-02-27  发布在  Android
关注(0)|答案(1)|浏览(205)

我有一个奇怪的问题。我有一个干净的Xamarin表单项目使用Plugin.FirebasePushNotification,它在iOS上工作完美。奇怪的问题是,它在Android上也工作,当我从Postman或Firebase发送推送时,OnNotificationReceived被触发,但没有显示在通知栏中,也没有任何推送声音。
我试过关闭应用程序,但没有注意到,我也试过“杀死”应用程序,但同样的事情发生了。只有当我有应用程序在调试模式下,我可以看到OnNotificationReceived实际上是由我发送的消息触发,所以我发送的有效负载没有任何问题。

主活动.cs(安卓项目)

protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        global::Xamarin.Forms.Forms.Init(this, savedInstanceState);

        FirebaseApp.InitializeApp(this);
        FirebasePushNotificationManager.Initialize(this, true);

        LoadApplication(new App());
    }

MainPage.xaml.cs(共享项目)

public MainPage()
    {
        InitializeComponent();

        //Register for push
        CrossFirebasePushNotification.Current.RegisterForPushNotifications();
        CrossFirebasePushNotification.Current.Subscribe("TESTINGPUSH");
    }
xnifntxz

xnifntxz1#

我终于想通了!
虽然我确实在manifest.xml中使用了正确的权限,但它没有考虑到这一点。

<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>

我在MainActivity中做了一个覆盖,它开始按预期工作。

protected override void OnStart()
    {
        base.OnStart();
        const int requestLocationId = 0;

        string[] notiPermission =
        {
            Manifest.Permission.PostNotifications
        };

        if ((int)Build.VERSION.SdkInt < 33) return;

        if (this.CheckSelfPermission(Manifest.Permission.PostNotifications) != Permission.Granted)
        {
            this.RequestPermissions(notiPermission, requestLocationId);
        }
    }

相关问题