Как использовать пользовательский звук в уведомлении ионный 3 один сигнал? - PullRequest
0 голосов
/ 15 декабря 2018

Я использую Onesignal для отправки уведомлений в моем приложении ionic, но пользовательский звук не звонит.

Здесь мой app.component:

setupNotification() {
this.oneSignal.startInit('xxxxxxxxxx-xxxx-xxxxxxxxxxx-xxxxxxxx', 'xxxxxxxxxxxx');
this.oneSignal.inFocusDisplaying(this.oneSignal.OSInFocusDisplayOption.InAppAlert);
this.oneSignal.handleNotificationReceived().subscribe(data => {
  data.payload.sound = 'coins.mp3'
});
this.oneSignal.handleNotificationOpened().subscribe(() => {
  // do something when a notification is opened
});
this.oneSignal.endInit();

}

вот мой config.xml:

<platform name="android">
    <resource-file src="res/raw/coins.mp3" target="res/raw/coins.mp3" />
</platform>

Где я ошибаюсь?

1 Ответ

0 голосов
/ 28 июня 2019

Мне только что удалось заставить это работать над моим приложением 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, как я обнаружил, тоже помогает.

Надеюсь, это поможет!

...