在函数内等待AdMob免费奖励视频事件(Ionic / Typescript)

时间:2018-06-10 15:00:25

标签: typescript ionic3

我有一个功能可以检查用户是否看到或需要查看奖励视频,以便能够在我的离子应用中使用某个功能:

let canUseThisFunction = await this.someService.canUseFunction();

if(canUseThisFunction){
     console.log("can use");
} else {
    console.log("can NOT use");
} 

并且检查功能类似于:

canUseFunction(){
    let canUse = await this.checkInBackend.checkIfUserHasReward();

    if(!canUse){
        await this.adService.showRewardVideo();   
     } else {
         return false;
     }
}

我遇到的问题是在checkIfUserHasReward()调用admob.rewardVideo.show()之后,当奖励视频正在运行时,它只会解析“OK”。

..
this.admob.rewardVideo.config(rewardVideoConfig);

        return this.admob.rewardVideo.prepare().then((prepareReward) => {
            console.log("prepareReward", prepareReward);
            return this.admob.rewardVideo.show();
        }).then(rewardShowed => {
            console.log("rewardShowed", rewardShowed);
            return rewardShowed;
        }).catch(e => console.error(e));

我可以使用

获得奖励活动
(document as any).addEventListener("admob.rewardvideo.events.REWARD")

但它会在canUseFunction()之外解析。有没有办法在另一个函数中捕获这个eventListener

1 个答案:

答案 0 :(得分:0)

您应该使用new Promise构造函数创建一个可以随意解决的承诺:

return new Promise(resolve => document.addEventListener("...", resolve);