Мне только что удалось заставить это работать над моим приложением Ionic3 с OneSignal и тестировать на Android 8.0.Так что, может быть, это может кому-то помочь.Я также обновил до Cordova 9 и обновил onesignal-cordova-plugin до 2.4.7
Я также предполагаю, что здесь у вас уже работают уведомления, это просто пользовательский звуковой файл, который не работает.
Мой звуковой файл alert.wav
, и я поместил его в 'src / assets / audio` (я создал аудио-папку)
В config.xml
мне пришлось добавить следующее, чтобы скопировать этот файл в правильныйlocation:
<resource-file src="www/assets/audio/alert.wav" target="app/src/main/res/raw/alert.wav" />
(аудио-каталог будет скопирован в www
dir при сборке)
Android 8 требует создания канала / категории уведомлений,Вы можете создать группу и категорию в настройках OneSignal.В разделе «Настройки категории - Звук» выберите «Пользовательский» и добавьте имя файла (без расширения) - в моем случае alert
.Все остальное можно оставить по умолчанию.
Я также обнаружил, что если вы отредактируете его, оно будет проигнорировано.поэтому я должен был создать новую категорию при тестировании другого звукового файла.Я рекомендую для тестирования удалить категорию и создать новую, чтобы быть уверенным - не пытайтесь редактировать ее.Как только уведомление отправлено с использованием этого канала, канал создается на устройстве пользователя и не может быть удален / отредактирован - пользователь должен удалить / переустановить приложение.
Я инициировал уведомления через свой внутренний сервер, этоPHP:
$request = json_encode([
'app_id' => 'xxxxxxxxxxxxxxxxxxxxxx',
'headings' => [
'en' => $title,
],
'contents' => [
'en' => $message,
],
'include_player_ids' => $playerIds,
'android_channel_id' => 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee',
// 'android_sound' => 'alert',
]);
Обязательно скопируйте новый идентификатор канала из OneSignal в эту полезную нагрузку запроса.
В конечном счете не требуется значение 'android_sound', поскольку оно запускает настройки канала по умолчанию(который имеет имя аудиофайла), и изменение значения android_sound не имеет никакого эффекта.
к сожалению, вам нужно создать одну категорию на звуковой файл, который вы хотите воспроизвести, что может не подходить для некоторых случаев использования - пользователь увидитэти каналы в настройках уведомлений приложения.
Некоторые другие вещи, которые я рекомендую при тестировании, это деинсталлировать приложение перед каждой сборкой, чтобы проверить определенные изменения, и запуск cordova clean
, как я обнаружил, тоже помогает.
Надеюсь, это поможет!