Пользовательский звук уведомления Не воспроизводится на iOS для react-native-push-уведомлений

#ios #react-native #push-notification #react-native-push-notification

Вопрос:

Я использую пакет npm react-native-push-уведомления. Я устанавливаю путь к пользовательскому звуку при создании канала уведомлений, как показано ниже:

  PushNotification.createChannel(
    {
      channelId: 1, // (required)
      channelName: 'My Channel', // (required)
      channelDescription: 'A channel to categorise your notifications', // (optional) default: undefined.
      soundName: 'tone1', 
      playSound: true, 
      importance: 4,
      vibrate: true, 
    },
    (created) => console.log(`createChannel returned '${created}'`),
  );
 

Для ios я добавляю звук в корневую папку проекта в XCode следующим образом:

звуковой файл в XCode

звуковой файл в ресурсах пакета копирования

Но это не работает, и звук по умолчанию все еще воспроизводится. На Android пользовательский звук работает правильно. Я даже импортировал звуковой файл и воспроизвел его вручную, чтобы убедиться, что он работает правильно:

 import SoundPlayer from 'react-native-sound-player';

SoundPlayer.playSoundFile('tone1', 'mp3');
 

Я даже использовал расширение .mp3 в переменной soundName, но оно все равно не работает.

Версия библиотеки: 7.3.2

Ответ №1:

Мне удалось заставить его работать. Оказывается, я не добавлял звуковой файл в нужную папку. Мы должны добавить его в каталог ios/ (на том же уровне, что и папка Pods).

Кроме того, мне также пришлось передать переменную soundName, когда мы планируем локальное уведомление. Ранее я передавал переменную только при создании канала.

 PushNotification.localNotificationSchedule({
    title: 'Hello',
    message: 'Check Notification'   new Date(Date.now()   1 * 1000),
    date: new Date(Date.now()   1 * 1000), // in 1 secs
    allowWhileIdle: false, // (optional) set notification to work while on doze, default: false
    channelId: 'checkNotification',
    soundName: 'tone5.mp3', // (optional) Sound to play
  });