【问题标题】:What would be the best way to implement video ads for a Flutter app?为 Flutter 应用实施视频广告的最佳方式是什么?
【发布时间】:2022-10-08 23:27:57
【问题描述】:

目前正在制作视频存储和流媒体应用程序。现在我正在尝试向应用程序添加广告。为应用程序提供视频广告的最佳方式是什么?我知道有一个 google_mobile_ads 包,但由于 AdMob 的指导方针,我无法连续显示多个视频广告。我想做一些类似于 YouTube 的事情,向用户展示一系列 2 个广告(在我的例子中,每 30 分钟内容有 1 个广告)。

【问题讨论】:

  • 你找到任何解决方案了吗?
  • @RobertWilliams 不幸的是,我找不到任何东西。当我的视频播放器打开时,我最终只是添加了一个插页式广告。
  • kk 与您分享我的解决方案。

标签: flutter


【解决方案1】:

您可以做的是,在视频开始时获取总视频时长并确定您想要展示广告的频率。然后使用监听器跟踪当前位置并不时显示广告。我做了这样的事情:

int adEvery = 0;
List<int> adIntervalSeconds = []; //timestamps at which ad will be shown
bool throttle = false;

videoPlayerController.addListener(() {
  int durationInSec = chewieController!.videoPlayerController.value.duration.inSeconds;
  int positionInSec = chewieController!.videoPlayerController.value.position.inSeconds;

  //1500 sec = 25 minutes, isDurationLoaded bool used to make sure it run just once.
  if (durationInSec > 1500 && isDurationLoaded == false) {
    isDurationLoaded = true;

    //if duration > 25 mins then show ad every 20 mins approx.
    totalAds = (durationInSec ~/ 1200).toInt();
    adEvery = (durationInSec ~/ totalAds).toInt();

    //get timestamps in seconds list at which ad should be shown
    for (int i = 1; i < totalAds; i++) {
      adIntervalSeconds.add(adEvery * i);
    }     
    
  }

  if (videoPlayerController.value.isPlaying &&
      adIntervalSeconds.isNotEmpty &&
      adIntervalSeconds.contains(positionInSec) &&
      throttle == false) {
    throttle = true;
    
    Future.delayed(const Duration(seconds: 2), () {
      throttle = false;
    });

    adIntervalSeconds.remove(positionInSec);
    showInterstitial();
  }
} 

这就是我想出的。

【讨论】:

    猜你喜欢
    • 2020-10-26
    • 2017-05-17
    • 1970-01-01
    • 2017-12-18
    • 2017-11-19
    • 2011-04-18
    • 2022-11-09
    • 2011-04-05
    • 1970-01-01
    相关资源
    最近更新 更多