iOS Rewarded Video - adxcorp/ADXLibrary_Integration GitHub Wiki

AdMob Rewarded Video Ad Integration

Rewarded Video load์— ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋‹ˆ, ๋ฏธ๋ฆฌ load ํ•ด๋‘์‹  ๋‹ค์Œ ์‚ฌ์šฉํ•˜์‹œ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  1. ๊ด‘๊ณ ๋ฅผ ๋กœ๋“œํ•˜๊ธฐ ์ „์— ์•ฑ์—์„œ GADMobileAds.sharedInstance์˜ startWithCompletionHandler: ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ AdMob ๊ด‘๊ณ  SDK๋ฅผ ์ดˆ๊ธฐํ™”
  2. GADFullScreenContentDelegate delegate ์ถ”๊ฐ€
  3. GADRequest๋ฅผ ์ƒ์„ฑํ•˜์—ฌ GDPR ๊ด€๋ จ ์„ค์ •์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ extra๋กœ npa ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ (ADXConsentStateDenied ์ƒํƒœ์ผ ๋•Œ๋งŒ npa ๋ฅผ '1' ๋กœ ์ถ”๊ฐ€ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.)
  4. GADRewardedAd ์˜ loadWithAdUnitID: request: completionHandler:๋กœ ๊ด‘๊ณ  ๋กœ๋“œ
  5. GADRewardedAd ์˜ presentFromRootViewController: userDidEarnRewardHandler:๋กœ ๋ฆฌ์›Œ๋“œ ๋น„๋””์˜ค ๋…ธ์ถœ
  6. ๊ด‘๊ณ  ์‹œ์ฒญ์„ ๋ชจ๋‘ ์™„๋ฃŒํ•˜๋ฉด GADUserDidEarnRewardHandler ๊ฐ์ฒด์—์„œ ๋ฆฌ์›Œ๋“œ ์ง€๊ธ‰ ์ฒ˜๋ฆฌ

AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    [[GADMobileAds sharedInstance] startWithCompletionHandler:nil];
    
    return YES;
}

MyViewController.m

@import GoogleMobileAds;

@interface ADXAdMobRewardViewController () <GADFullScreenContentDelegate>

@end

@implementation ADXAdMobRewardViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    [self createAndLoadRewardedAd];
}

- (GADRewardedAd *)createAndLoadRewardedAd {                   
  GADRequest *request = [GADRequest request];
  //*** GDPR
  if ([ADXGDPR.sharedInstance getConsentState] == ADXConsentStateDenied) {
        GADExtras *extras = [[GADExtras alloc] init];
        extras.additionalParameters = @{@"npa": @"1"};
        [request registerAdNetworkExtras:extras];
  }
  [GADRewardedAd loadWithAdUnitID:@"<YOUR AD UNIT ID HERE>" request:request completionHandler:^(GADRewardedAd *rewardedAd, NSError *error) {
        if (error) {
            // Handle ad failed to load case.
        } else {
            // Ad successfully loaded.
            self.rewardedAd = rewardedAd;
            self.rewardedAd.fullScreenContentDelegate = self;
        }
    }]; 
}

- (IBAction)selectShowAd:(id)sender {
    if (self.rewardedAd) {
        [self.rewardedAd presentFromRootViewController:self userDidEarnRewardHandler:^{
            GADAdReward *reward = self.rewardedAd.adReward;
            // TODO: Reward the uesr!
        }];
    } else {
        NSLog(@"Ad wasn't ready");
        [self createAndLoadRewardedAd];
    }
}

#pragma mark - GADFullScreenContentDelegate

/// Tells the delegate that an impression has been recorded for the ad.
- (void)adDidRecordImpression:(id<GADFullScreenPresentingAd>)ad {
    NSLog(@"adDidRecordImpression");
}

/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(id<GADFullScreenPresentingAd>)ad didFailToPresentFullScreenContentWithError:(NSError *)error {
    NSLog(@"Rewarded ad failed to present.");
}

/// Tells the delegate that the ad presented full screen content.
- (void)adDidPresentFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
    NSLog(@"Rewarded ad presented");
}

/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
    NSLog(@"adDidDismissFullScreenContent");
    [self createAndLoadRewardedAd];
}

MoPub Rewarded Video Ad Integration

Rewarded Video load์— ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋‹ˆ, ๋ฏธ๋ฆฌ load ํ•ด๋‘์‹  ๋‹ค์Œ ์‚ฌ์šฉํ•˜์‹œ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  1. MPRewardedAds์— App ID์™€ delegate ์ถ”๊ฐ€
  2. MPRewardedAds ์˜ loadRewardedAdWithAdUnitID:๋กœ ๊ด‘๊ณ  ๋กœ๋“œ
  3. ๊ด‘๊ณ  ๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด rewardedAdDidLoadForAdUnitID: ํ˜ธ์ถœ
  4. MPRewardedAds ์˜ hasAdAvailableForAdUnitID:๋กœ ํ‘œ์‹œ ํ•  ๊ด‘๊ณ ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ ํ›„, presentRewardedAdForAdUnitID:๋กœ ๋ฆฌ์›Œ๋“œ ๋น„๋””์˜ค ๋…ธ์ถœ
  5. ๊ด‘๊ณ  ์‹œ์ฒญ์„ ๋ชจ๋‘ ์™„๋ฃŒํ•˜๋ฉด rewardedAdShouldRewardForAdUnitID:reward:๊ฐ€ ํ˜ธ์ถœ ๋˜๋ฏ€๋กœ, rewardedAdShouldRewardForAdUnitID:reward:๊ฐ€ ํ˜ธ์ถœ ๋œ ๊ฒฝ์šฐ์— ๋ฆฌ์›Œ๋“œ ์ง€๊ธ‰ ์ฒ˜๋ฆฌ

MyViewController.m

#import <MoPub.h>

@interface ADXRewardViewController () <MPRewardedAdsDelegate>

@end

@implementation ADXRewardViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    [MPRewardedAds setDelegate:self forAdUnitId:<YOUR AD UNIT ID HERE>];
    [MPRewardedAds loadRewardedAdWithAdUnitID:<YOUR AD UNIT ID HERE> withMediationSettings:nil];
}

- (IBAction)selectShowAd:(id)sender {
    
    if ([MPRewardedAds hasAdAvailableForAdUnitID:<YOUR AD UNIT ID HERE>]) {
        [MPRewardedAds presentRewardedAdForAdUnitID:<YOUR AD UNIT ID HERE> fromViewController:self withReward:nil customData:nil];
    } else {
        [MPRewardedAds loadRewardedAdWithAdUnitID:<YOUR AD UNIT ID HERE> withMediationSettings:nil];
    }
}

#pragma mark - MPRewardedAdsDelegate

- (void)rewardedAdDidLoadForAdUnitID:(NSString *)adUnitID {
    NSLog(@"rewardedAdDidLoadForAdUnitID : %@", adUnitID);
}

- (void)rewardedAdDidFailToLoadForAdUnitID:(NSString *)adUnitID error:(NSError *)error {
    NSLog(@"rewardedAdDidFailToLoadForAdUnitID : %@\nerror : %@", adUnitID, error.localizedDescription);
}

- (void)rewardedAdDidExpireForAdUnitID:(NSString *)adUnitID {
    NSLog(@"rewardedAdDidExpireForAdUnitID : %@", adUnitID);
}

- (void)rewardedAdDidFailToShowForAdUnitID:(NSString *)adUnitID error:(NSError *)error {
    NSLog(@"rewardedAdDidFailToShowForAdUnitID : %@\n error : %@", adUnitID, error.localizedDescription);
}

- (void)rewardedAdWillPresentForAdUnitID:(NSString *)adUnitID {
    NSLog(@"rewardedAdWillPresentForAdUnitID : %@", adUnitID);
}

- (void)rewardedAdDidPresentForAdUnitID:(NSString *)adUnitID {
    NSLog(@"rewardedAdDidPresentForAdUnitID : %@", adUnitID);
}

- (void)rewardedAdWillDismissForAdUnitID:(NSString *)adUnitID {
    NSLog(@"rewardedAdWillDismissForAdUnitID : %@", adUnitID);
}

- (void)rewardedAdDidDismissForAdUnitID:(NSString *)adUnitID {
    NSLog(@"rewardedAdDidDismissForAdUnitID : %@", adUnitID);
}

- (void)rewardedAdDidReceiveTapEventForAdUnitID:(NSString *)adUnitID {
    NSLog(@"rewardedAdDidReceiveTapEventForAdUnitID : %@", adUnitID);
}

- (void)rewardedAdWillLeaveApplicationForAdUnitID:(NSString *)adUnitID {
    NSLog(@"rewardedAdWillLeaveApplicationForAdUnitID : %@", adUnitID);
}

- (void)rewardedAdShouldRewardForAdUnitID:(NSString *)adUnitID reward:(MPReward *)reward {
    NSLog(@"rewardedAdShouldRewardForAdUnitID : %@\n reward : %@", adUnitID, reward.currencyType);
}
โš ๏ธ **GitHub.com Fallback** โš ๏ธ