iOS Rewarded Video - adxcorp/ADXLibrary_Integration GitHub Wiki
Rewarded Video load์ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ผ๋, ๋ฏธ๋ฆฌ load ํด๋์ ๋ค์ ์ฌ์ฉํ์๋ ๊ฒ์ ๊ถ์ฅ๋๋ฆฝ๋๋ค.
- ๊ด๊ณ ๋ฅผ ๋ก๋ํ๊ธฐ ์ ์ ์ฑ์์ GADMobileAds.sharedInstance์
startWithCompletionHandler:
๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ AdMob ๊ด๊ณ SDK๋ฅผ ์ด๊ธฐํ -
GADFullScreenContentDelegate
delegate ์ถ๊ฐ - GADRequest๋ฅผ ์์ฑํ์ฌ GDPR ๊ด๋ จ ์ค์ ์ด ํ์ํ ๊ฒฝ์ฐ extra๋ก npa ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ (ADXConsentStateDenied ์ํ์ผ ๋๋ง npa ๋ฅผ '1' ๋ก ์ถ๊ฐํด์ฃผ์๋ฉด ๋ฉ๋๋ค.)
- GADRewardedAd ์
loadWithAdUnitID: request: completionHandler:
๋ก ๊ด๊ณ ๋ก๋ - GADRewardedAd ์
presentFromRootViewController: userDidEarnRewardHandler:
๋ก ๋ฆฌ์๋ ๋น๋์ค ๋ ธ์ถ - ๊ด๊ณ ์์ฒญ์ ๋ชจ๋ ์๋ฃํ๋ฉด
GADUserDidEarnRewardHandler
๊ฐ์ฒด์์ ๋ฆฌ์๋ ์ง๊ธ ์ฒ๋ฆฌ
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[[GADMobileAds sharedInstance] startWithCompletionHandler:nil];
return YES;
}
@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];
}
Rewarded Video load์ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ผ๋, ๋ฏธ๋ฆฌ load ํด๋์ ๋ค์ ์ฌ์ฉํ์๋ ๊ฒ์ ๊ถ์ฅ๋๋ฆฝ๋๋ค.
- MPRewardedAds์ App ID์ delegate ์ถ๊ฐ
- MPRewardedAds ์
loadRewardedAdWithAdUnitID:
๋ก ๊ด๊ณ ๋ก๋ - ๊ด๊ณ ๋ก๋๊ฐ ์๋ฃ๋๋ฉด
rewardedAdDidLoadForAdUnitID:
ํธ์ถ - MPRewardedAds ์
hasAdAvailableForAdUnitID:
๋ก ํ์ ํ ๊ด๊ณ ๊ฐ ์๋์ง ํ์ธ ํ,presentRewardedAdForAdUnitID:
๋ก ๋ฆฌ์๋ ๋น๋์ค ๋ ธ์ถ - ๊ด๊ณ ์์ฒญ์ ๋ชจ๋ ์๋ฃํ๋ฉด
rewardedAdShouldRewardForAdUnitID:reward:
๊ฐ ํธ์ถ ๋๋ฏ๋ก,rewardedAdShouldRewardForAdUnitID:reward:
๊ฐ ํธ์ถ ๋ ๊ฒฝ์ฐ์ ๋ฆฌ์๋ ์ง๊ธ ์ฒ๋ฆฌ
#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);
}