BasilYes / godot-yandex-games-sdk

Yandex games SDK implementation for godot

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Прошу помощи в убирании звука игры во время рекламы

Regrad opened this issue · comments

Вызываю рекламу при помощи YandexSDK.show_ad()
Никак не хочет работать подключённый сигнал YandexSDK.connect("ad", self, "sound_on"). Функция sound_on не вызывается.

Мне кажется я иду не по верному пути. Как отключать звук и музыку (или ставить игру на паузу) во время показа рекламы?

Проверь логи, если там принтуется, что реклама показана или что возникла ошибка, значит сигнал 100% вызван и ты не так на него подписался (а ещё не забывай что у сигнала есть аргумент), если не принтуется, проверь вызывается ли логика ждаваскрипта (там тоже принт похожий), т.е. если ты получил 2 принта, значит все ок, и у тебя какие-то проблемы с подпиской на сигнал, если нет пиши сюда подробнее с логом

func _rewarded_ad(args):
	print("rewarded ad res: ", args[0])
	emit_signal("rewarded_ad", args)


func _ad(args):
	print("ad res: ", args[0])
	emit_signal("ad", args[0])

Я проверял код func _ad(args) Он не вызывается. Так же я вызывал _ad(args) принудительно и в этом случае сигнал работает.
Так или иначе мой вопрос больше в том, как узнать о начале и конце показа рекламы, чтобы принудительно выключать звук в игре. Ну или какие есть варианты, а то Яндекс не пропускает игру, пока это не будет решено =(

Начало показа рекламы, когда ты вызываешь функцию показа рекламы. Конец когда по идее возвращается сигнал. Можешь посмотреть файл который .js там записана сама функция показа скопипащенная из документации Яндекса, там свой принт стоит (js овский), он вызывается когда ты запускаеш показ рекламы? (Посмотри логив браузере)

Может ты запускаешь рекламу с наградой? Тогда это другой сигнал

Проблема в том, что Яндекс не всегда показывает рекламу при запросе на это. Это приведёт к тому, что убрав звук, я не смогу получить сигнал о закрытии рекламы.
Я запускаю рекламу при помощи YandexSDK.show_ad()
Подключение сигнала при помощи YandexSDK.connect("ad", self, "start_game")
Ну и сама функция выглядит так: func start_game(ad_result):

Так, я посмотрел внимательнее. У меня не хватает колбеков для вызова рекламы
вот в эту функцию (в .js файле)

function ShowAd(callback) {
    console.log('Show ad');
    ysdk.adv.showFullscreenAdv({
        callbacks: {
            onClose: function(wasShown) {
                callback('closed')
                console.log('Ad shown');
            },
            onError: function(error) {
                callback('error')
                console.log('Ad error');
            }
        }
    })
}

Нужно добавить обработчики для событий описанных в документации:
onOpen — вызывается при успешном открытии рекламы.
onOffline — вызывается при потере сетевого соединения (переходе в офлайн-режим).
по аналогии, если запушиш потом это сюда будет прекрасно. Если нет, я сам это сделаю попозже.

Я бы рад, но с JS имею опыта, поэтому и пришёл сюда =) Если ты будешь вносить это в свой аддон - я лучше подожду комита от автора =) Пока для меня твой аддон это магический чёрный ящик. Первый опыт с WEB =)

Хахахахахаха, я тоже 0 в вебе, я просто скопипастил примеры из документации и сделал часть по аналогии

И всё же вопрос по поводу того, что нет сигнала при закрытии рекламы пока остаётся. Я ещё раз перепроверил - не вызывается функция, которая должна отправить сигнал.

Попробуй поледний коммит
Работоспособность не гарантирую, делал прямо в гитхабе

Ух ты, заработало. Ты гений. Звук на рекламу останавливается! И всё отлично работает. Если реклама не показывается - звук не пропадает. То что нужно! Спасибо!