動画リワード実装方法 - glossom-dev/AdfurikunSDK-iOS GitHub Wiki

動画リワード広告

アドフリくんSDKのインポート

Swift
import ADFMovieReward
Objective-C
#import <ADFMovieReward/ADFmyMovieReward.h>

動画リワード広告の初期化

ADFmyMovieRewardクラスのinitializeWithAppID:メソッドを呼び出して初期化を行います。
“アドフリくん管理画面で発行された広告枠 ID” を引数に指定して下さい。

Swift
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        ADFmyMovieReward.initialize(withAppID: 広告枠ID)
    }
}
Objective-C
@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [ADFmyMovieReward initializeWithAppID:広告枠ID];
}

動画リワード広告のロード

ADFmyMovieRewardクラスのgetInstance:delegate:メソッド(static)を呼び出し、ADFmyMovieRewardクラスのインスタンスを受けとります。
loadメソッドを呼ぶことでロードが開始されます。
ロードの成功、失敗の結果はADFmyMovieRewardDelegateデリゲートコールバックで確認できます。

Swift
class ViewController: UIViewController {

    private var movieReward: ADFmyMovieReward?

    override func viewDidLoad() {
        super.viewDidLoad()

        movieReward = ADFmyMovieReward.getInstance(広告枠ID, delegate: self)
        movieReward?.load()
    }
}

extension ViewController: ADFmyMovieRewardDelegate {
    func adsFetchCompleted(_ appID: String, isTestMode isTestMode_inApp: Bool) {
        //広告ロード成功
    }

    func adsFetchFailed(_ appID: String, error: Error, adnetworkError: [AdnetworkError]) {
        //広告ロード失敗
    }
}
Objective-C
@interface ViewController () <ADFmyMovieRewardDelegate>
@property (nonatomic) ADFmyMovieReward *reward;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.reward = [ADFmyMovieReward getInstance:広告枠ID delegate:self];
    [self.reward load];
}

- (void)AdsFetchCompleted:(NSString *)appID isTestMode:(BOOL)isTestMode_inApp {
    //広告取得成功時に呼ばれます
}

- (void)AdsFetchFailed:(NSString *)appID error:(NSError *)error adnetworkError:(NSArray<AdnetworkError *> *)adnetworkError {
    //広告取得失敗時に呼ばれます
}

@end

動画リワード広告の表示

デリゲートで広告ロード成功通知を受け取った後、動画再生開始メソッドを呼びます。

Swift
if movieReward.isPrepared() {
    movieReward.play(withPresenting: self)
}
Objective-C
if ([self.reward isPrepared]) {
    [self.reward playWithPresentingViewController:self];
}

デリゲートメソッドを実装する

Swift
extension ViewController: ADFmyMovieRewardDelegate {
    //広告ロード成功時に呼ばれます。
    func adsFetchCompleted(_ appID: String, isTestMode isTestMode_inApp: Bool) {
    }
    //広告ロード失敗時に呼ばれます。
    func adsFetchFailed(_ appID: String, error: Error, adnetworkError: [AdnetworkError]) {
    }
    //広告表示開始時に呼ばれます。
    func adsDidShow(_ appID: String, adNetworkKey: String!) {
    }
    //広告表示失敗時に呼ばれます。
    func adsPlayFailed(_ appID: String) {
    }
    //広告を最後まで視聴した時に呼ばれます。
    func adsDidCompleteShow(_ appID: String) {
    }
    //広告を閉じた時に呼ばれます。
    func adsDidHide(_ appID: String) {
    }
}
Objective-C
//広告ロード成功時に呼ばれます。
- (void)AdsFetchCompleted:(NSString *)appID isTestMode:(BOOL)isTestMode_inApp {
}
//広告ロード失敗時に呼ばれます。
- (void)AdsFetchFailed:(NSString *)appID error:(NSError *)error adnetworkError:(NSArray<AdnetworkError *> *)adnetworkError {
}
//広告表示開始時に呼ばれます。
- (void)AdsDidShow:(NSString *)appID adNetworkKey:(NSString *)adNetworkKey {
}
//広告表示失敗時に呼ばれます。
- (void)AdsPlayFailed:(NSString *)appID {
}
//広告を最後まで視聴した時に呼ばれます。
- (void)AdsDidCompleteShow:(NSString *)appID {
}
//広告を閉じた時に呼ばれます。
- (void)AdsDidHide:(NSString *)appID {
}

広告視聴によるユーザーへの報酬の付与タイミングについて

報酬の付与は、ADFmyMovieRewardDelegateの

- (void)AdsDidHide:(NSString *)appID;

関数が呼ばれた際にユーザーへ報酬を付与する事を推奨します。

UIWindowについて

一部アドネットワークは新しくUIWindowを生成して広告を再生しています。そのため、アプリケーションで広告再生後UIWindowのKeyWindow設定を変更する場合、動画が見れず音だけ再生されるケースも発生します。ですので、広告再生から広告完了の間ではKeyWindowの設定を変更しないような実装をしてください。

⚠️ **GitHub.com Fallback** ⚠️