Rewarded ads를 사용하면 사용자가 광고에 참여하는 대가로 게임 계속하기, 가상 화폐 또는 기타 보상과 같은 인앱 아이템을 제공할 수 있습니다. Rewarded ads는 사용자가 자신의 시간에 대해 실질적인 혜택을 받기 때문에 참여도를 높입니다.
다음 섹션에서는 Rewarded ad를 로드하고 보여주는 방법을 보여줍니다.
Rewarded ad를 로드하려면 Rewarded ad unit에 해당하는 MARewardedAd 객체의 인스턴스를 가져온 다음 해당 loadAd 메서드를 호출합니다.
광고가 준비되었을 때 알림을 받을 수 있도록 MARewardedAdDelegate를 구현합니다.
이것은 다른 광고 관련 이벤트에 대해서도 알려줍니다.
#import "ExampleViewController.h"
#import <AppLovinSDK/AppLovinSDK.h>
@interface ExampleViewController()<MARewardedAdDelegate>
@property (nonatomic, strong) MARewardedAd *rewardedAd;
@property (nonatomic, assign) NSInteger retryAttempt;
@end
@implementation ExampleViewController
- (void)createRewardedAd
{
self.rewardedAd = [MARewardedAd sharedWithAdUnitIdentifier: @"«ad-unit-ID»"];
self.rewardedAd.delegate = self;
// Load the first ad
[self.rewardedAd loadAd];
}
#pragma mark - MAAdDelegate Protocol
- (void)didLoadAd:(MAAd *)ad
{
// Rewarded ad is ready to show. '[self.rewardedAd isReady]' now returns 'YES'
// Reset retry attempt
self.retryAttempt = 0;
}
- (void)didFailToLoadAdForAdUnitIdentifier:(NSString *)adUnitIdentifier withError:(MAError *)error
{
// Rewarded ad failed to load
// AppLovin recommends that you retry with exponentially higher delays up to a maximum delay (in this case 64 seconds)
self.retryAttempt++;
NSInteger delaySec = pow(2, MIN(6, self.retryAttempt));
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delaySec * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[self.rewardedAd loadAd];
});
}
- (void)didDisplayAd:(MAAd *)ad {}
- (void)didClickAd:(MAAd *)ad {}
- (void)didHideAd:(MAAd *)ad
{
// Rewarded ad is hidden. Pre-load the next ad
[self.rewardedAd loadAd];
}
- (void)didFailToDisplayAd:(MAAd *)ad withError:(MAError *)error
{
// Rewarded ad failed to display. AppLovin recommends that you load the next ad.
[self.rewardedAd loadAd];
}
#pragma mark - MARewardedAdDelegate Protocol
- (void)didRewardUserForAd:(MAAd *)ad withReward:(MAReward *)reward
{
// Rewarded ad was displayed and user should receive the reward
}
@end
class ExampleViewController : UIViewController, MARewardedAdDelegate
{
var rewardedAd: MARewardedAd!
var retryAttempt = 0.0
func createRewardedAd()
{
rewardedAd = MARewardedAd.shared(withAdUnitIdentifier: "«ad-unit-ID»")
rewardedAd.delegate = self
// Load the first ad
rewardedAd.load()
}
// MARK: MAAdDelegate Protocol
func didLoad(_ ad: MAAd)
{
// Rewarded ad is ready to show. '[self.rewardedAd isReady]' now returns 'YES'.
// Reset retry attempt
retryAttempt = 0
}
func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError)
{
// Rewarded ad failed to load
// AppLovin recommends that you retry with exponentially higher delays up to a maximum delay (in this case 64 seconds).
retryAttempt += 1
let delaySec = pow(2.0, min(6.0, retryAttempt))
DispatchQueue.main.asyncAfter(deadline: .now() + delaySec) {
self.rewardedAd.load()
}
}
func didDisplay(_ ad: MAAd) {}
func didClick(_ ad: MAAd) {}
func didHide(_ ad: MAAd)
{
// Rewarded ad is hidden. Pre-load the next ad
rewardedAd.load()
}
func didFail(toDisplay ad: MAAd, withError error: MAError)
{
// Rewarded ad failed to display. AppLovin recommends that you load the next ad.
rewardedAd.load()
}
// MARK: MARewardedAdDelegate Protocol
func didRewardUser(for ad: MAAd, with reward: MAReward)
{
// Rewarded ad was displayed and user should receive the reward
}
}
Rewarded ad를 표시하려면 가져온 MARewardedAd 객체에서 showAd를 호출합니다.
if ( [self.rewardedAd isReady] )
{
[self.rewardedAd showAd];
}
if rewardedAd.isReady
{
rewardedAd.show()
}
Rewarded ad 오디오가 앱의 배경 오디오를 방해하지 않도록 하려면, 광고를 표시하기 전에 앱의 배경 오디오를 중지하는 것을 AppLovin은 권장합니다. 그런 다음 광고를 숨긴 후에 앱의 배경 오디오를 다시 시작할 수 있습니다.
보상 금액과 통화에 액세스하려면 -[MARewardedAdDelegate didRewardUserForAd:withReward:] 콜백을 오버라이드합니다:
- (void)didRewardUserForAd:(MAAd *)ad withReward:(MAReward *)reward
{
NSLog(@"Rewarded user: %d %@", reward.amount, reward.label);
}
func didRewardUser(for ad: MAAd, with reward: MAReward)
{
print("Rewarded user: \(reward.amount) \(reward.label)")
}
귀하의 통화 서버로 콜백을 받을 수 있습니다. 방법을 알아보려면 MAX S2S rewarded 콜백 API 가이드를 참조하십시오. 그런 다음 Edit Ad Unit 페이지에서 Server Side Callback URL을 업데이트합니다.
보상 금액과 통화를 설정하려면:

