SetSound и SetVibrationPattern не работают - PullRequest
0 голосов
/ 09 апреля 2019

Я хочу воспроизвести пользовательский mp3, помещенный в папку res / raw, при push-уведомлении, но он всегда воспроизводит звук уведомления по умолчанию на моем телефоне. Я использовал xamarin, и мой тестовый телефон - Android 8.1. Даже на более ранних версиях не всегда воспроизводится кастомный звук. Следующий код помещается в метод OnMessageReceived. Уведомление от FCM содержит только тег данных, а не тег уведомления. Кроме того, шаблон вибрации, кажется, всегда по умолчанию. Иконка и текст отлично работает.

NotificationManager notificationManager = (NotificationManager)this.GetSystemService(Context.NotificationService);

                //Setting up Notification channels for android O and above
                if (Build.VERSION.SdkInt >= BuildVersionCodes.O)
                {
                    SetupChannels(notificationManager, messageTitle);
                }

                var notificationBuilder = new NotificationCompat.Builder(this, MainActivity.CHANNEL_ID)
                                             .SetSmallIcon(Resource.Drawable.icon)

                                             .SetContentTitle(messageTitle)
                                             .SetContentText(messageBody)
                                             .SetAutoCancel(true)
                                             .SetDefaults((int)NotificationDefaults.All)

                                             .SetSound(global::Android.Net.Uri.Parse("android.resource://" + this.ApplicationContext.PackageName + "/raw/de900"))
                                             .SetVibrate(new long[] { 1000, 500, 1000, 500 })
                                             .SetContentIntent(pendingIntent)
                                             .SetStyle(new NotificationCompat.BigTextStyle().BigText(messageBody));

                notificationManager.Notify(MainActivity.NOTIFICATION_ID, notificationBuilder.Build());

            }

            private void SetupChannels(NotificationManager notificationManager, string description)
            {
                // AudioAttributes.Builder.
                NotificationChannel channel = new NotificationChannel(MainActivity.CHANNEL_ID, "EmersyChannel", NotificationImportance.Max)
                {                
                    LockscreenVisibility = NotificationVisibility.Public,   
                    Description = description
                };

                var audioattributes = new AudioAttributes.Builder();
                audioattributes.SetContentType(AudioContentType.Music);
                audioattributes.SetUsage(AudioUsageKind.Notification);


                channel.SetSound(global::Android.Net.Uri.Parse("android.resource://" + this.ApplicationContext.PackageName + "/raw/de900"),
                    audioattributes.Build());
                channel.EnableVibration(true);
                channel.SetVibrationPattern(new long[] { 100, 30, 100, 30, 100, 200, 200, 30, 200, 30, 200, 200, 100, 30, 100, 30, 100, 100, 30, 100, 30, 100, 200, 200, 30, 200, 30, 200, 200, 100, 30, 100, 30, 100 });
                channel.EnableLights(true);
                channel.LightColor = Color.Red;
                channel.SetShowBadge(true);            


                if (notificationManager != null)
                {
                    notificationManager.CreateNotificationChannel(channel);
                }
            }

1 Ответ

1 голос
/ 10 апреля 2019

Какой у тебя телефон?Я тестирую ваш код в Google Pixel (Android 8.1), он работает хорошо.Затем я тестирую его на Xiaomi MI 5s Plus (Android 8.1), он не работает, пока я не введу Настройка телефона , а затем не открою Звук в канале уведомлений приложения.!Так что может случиться так, что некоторые производители телефонов имеют свои собственные настройки, вы можете попробовать ввести настройки телефона, чтобы посмотреть!

Обновление :

официальная ссылка:https://docs.microsoft.com/en-us/xamarin/android/app-fundamentals/notifications/local-notifications-walkthrough

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...