#android #c #firebase #admob
#Android #c #firebase #admob
Вопрос:
Я добавляю награды AdMob в свое приложение для Android на C с помощью исходного кода:
class RewardedVideoListener: public firebase::admob::rewarded_video::Listener {
public:
//RewardedVideoListener() {}
//RewardedVideoListener(FirebaseScene* scene) : scene(scene) {}
void OnRewarded(firebase::admob::rewarded_video::RewardItem reward) override {
//::LogMessage("Rewarding user with %f %s.", reward.amount, reward.reward_type.c_str());
int a = 1;
}
void OnPresentationStateChanged(firebase::admob::rewarded_video::PresentationState state) override {
int b = 1;
}
};
static void OnRewardVideoInited(const firebase::Future<void>amp; future) {
namespace rewarded_video = firebase::admob::rewarded_video;
if (future.error() == firebase::admob::kAdMobErrorNone) {
RewardedVideoListener rewarded_listener;
rewarded_video::SetListener(amp;rewarded_listener);
firebase::admob::AdRequest request = GetRequest();
rewarded_video::LoadAd(kRewardedVideoAdUnit, request);
rewarded_video::LoadAdLastResult().OnCompletion(OnRewardVideoLoaded);
}
}
int AdMobC::showBanner() {
firebase::App* app;
app = ::firebase::App::Create(GetJniEnv(), GetActivity());
firebase::admob::Initialize(*app, kAdMobAppID);
// Start up rewarded video ads and associated mediation adapters.
namespace rewarded_video = firebase::admob::rewarded_video;
rewarded_video::Initialize();
rewarded_video::InitializeLastResult().OnCompletion(OnRewardVideoInited);
return 1;
}
всякий раз, когда я добавляю эти строки:
RewardedVideoListener rewarded_listener;
rewarded_video::SetListener(amp;rewarded_listener);
Я получаю ‘A / libc: фатальный сигнал 11 (SIGSEGV), код 1 (SEGV_MAPERR), ошибка addr 0x8 в tid 18423 (adarts.fuelhunt), pid 18423 (adarts.fuelhunt)’
Интересно, что я делаю не так? Я некоторое время не использовал C .
Комментарии:
1. Уверен, что
rewarded_video::SetListener(amp;rewarded_listener);
это хорошо работает с локально определенной переменной? Что произойдет, еслиrewarded_listener
выйдет за рамки и перестанет существовать?2. ДА. Похоже, это проблема.