@andranikTomskiy

Как отключить звук, исходящий из приложения на React Native (Android, iOS)?

Есть кроссплатформенное приложение, написано на React Native. Монетизируется с помощью размещения рекламы. Рекламные блоки от РСЯ. Поскольку РСЯ официально не поддерживает приложения на реакте, то для размещения рекламных блоков используется стороняя библиотека ( https://github.com/vtr0n/react-native-yandex-mobile-ads ). Пользователи, да и сами разработчики неоднократно сталкивались с проблемой, что видеореклама (этот тип является самым доходным) иногда воспроизводится со включенным звуком, при этом возможности его выключить нет (кроме как выйти из приложения). Для такого приложения реклама со звуком является неприемлемой, поскольку им пользуются студенты на парах. Пробовал отключать звук телефона, но оказалось, что есть те, кто пользуются приложением слушая музыку в наушниках и не очень приятно, когда она выключается. Внимание вопрос: как можно убрать звук у такой рекламы? Есть ли возможность на android и ios (средствами react native или без них) убрать звук, который исходит из моего приложения, при этом не трогая рекламу и звук телефона? В интернете искал, ничего не нашел
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
TemaSM
@TemaSM
Fullstack, DevOps, InfSec
Для того чтобы убрать звук, который исходит из вашего приложения во время проигрывания видеорекламы, можно использовать API для управления звуком в React Native.

Для iOS вы можете использовать AVAudioSession из фреймворка AVFoundation для управления звуком на уровне приложения. Это позволит вам установить уровень звука вашего приложения на минимальное значение, когда начинается воспроизведение видеорекламы. После окончания воспроизведения видеорекламы вы можете вернуть уровень звука приложения к его исходному значению.
Вот пример кода на Objective-C:
#import <AVFoundation/AVFoundation.h>

AVAudioSession *session = [AVAudioSession sharedInstance];
NSError *error;
[session setCategory:AVAudioSessionCategoryPlayback error:&error];
[session setActive:YES error:&error];
[session setOutputVolume:0.0f error:&error]; // установить уровень звука на минимальное значение

// начать воспроизведение видеорекламы

[session setOutputVolume:1.0f error:&error]; // вернуть уровень звука на исходное значение


Для Android вы можете использовать AudioManager для управления звуком на уровне приложения. Это также позволит вам установить уровень звука вашего приложения на минимальное значение, когда начинается воспроизведение видеорекламы. После окончания воспроизведения видеорекламы вы можете вернуть уровень звука приложения к его исходному значению.
Вот пример кода на Java:
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int originalVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0); // установить уровень звука на минимальное значение

// начать воспроизведение видеорекламы

audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, originalVolume, 0); // вернуть уровень звука на исходное значение

Обратите внимание, что эти примеры кода показывают только как управлять звуком на уровне приложения. Вам также нужно будет определить, когда начинается и заканчивается воспроизведение видеорекламы, чтобы правильно установить и вернуть уровень звука приложения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы