アプリに動画リワード広告を導入するにあたって、アドフリくんを導入することになりましたので実装方法について、ご紹介します。
1. インポートの設定
import ADFMovieReward
2. インスタンスの設定
class ViewController: UIViewController {
var movieAd: ADFmyMovieReward?
override func viewDidLoad() {
self.movieAd = ADFmyMovieReward.getInstance("IDを入れる", delegate: self)
}
}
3.動画の再生
・再生の準備ができているか確認し、再生する。
・動画が再生されたら、カウントを0に戻す。
・読み込みができない際は、1秒待ってから再度トライする。
・20回トライしても広告を読み込めなかった場合は、エラーのアラートを表示してカウントを0に戻す。
var tryCount = 0
func movieNow() {
if !SVProgressHUD.isVisible() {
SVProgressHUD.show()
}
if tryCount > 20 {
SVProgressHUD.dismiss()
// 20回超えたのでカウントを0に戻す
tryCount = 0
AlertControllerHelper.defaultOnly(viewController: self, title: "エラー", message: "動画の読み込みに失敗しました。時間をおいて再度試してみてください。", defaultButtonText: "OK", complication: nil)
return
}
if ADFmyMovieReward.isSupportedOSVersion() {
// 再生の準備ができているか確認し、再生する。
if let movieAd = self.movieAd {
if movieAd.isPrepared() {
SVProgressHUD.dismiss()
// 再生されたらカウントを0に戻す
tryCount = 0
movieAd.play(withPresenting: self)
} else {
tryCount += 1
// 読み込みができない際は、1秒待ってから再度トライする。
Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(movieNow), userInfo: nil, repeats: false)
}
}
} else {
SVProgressHUD.dismiss()
}
}
全体のコード
ViewController.swift
import ADFMovieReward
class ViewController: UIViewController {
var movieAd: ADFmyMovieReward?
var tryCount = 0
override func viewDidLoad() {
self.movieAd = ADFmyMovieReward.getInstance("IDを入れる", delegate: self)
}
@IBaction func onAdButtonTapped(_ sender: Any) {
movieNow()
}
func movieNow() {
if !SVProgressHUD.isVisible() {
SVProgressHUD.show()
}
if tryCount > 20 {
SVProgressHUD.dismiss()
tryCount = 0
AlertControllerHelper.defaultOnly(viewController: self, title: "エラー", message: "動画の読み込みに失敗しました。時間をおいて再度試してみてください。", defaultButtonText: "OK", complication: nil)
return
}
if ADFmyMovieReward.isSupportedOSVersion() {
if let movieAd = self.movieAd {
if movieAd.isPrepared() {
SVProgressHUD.dismiss()
tryCount = 0
movieAd.play(withPresenting: self)
} else {
tryCount += 1
Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(movieNow), userInfo: nil, repeats: false)
}
}
} else {
SVProgressHUD.dismiss()
}
}
}