Rewarded Video Integration for iOS (Korean)

시작하기 전에 확인하세요 ironSource SDK 및 추가 광고 네트워크 어댑터를 앱에 올바르게 통합했는지 확인하세요. 통합은 여기에 대략적으로 설명되어 있습니다.

1단계. 보상 비디오 대리자 구현

ironSource SDK는 광고 가용성 및 완료를 알려주기 위해 몇 가지 이벤트를 발생시키므로 사용자에게 보상할 시기를 알 수 있습니다. SDK는 아래에 나열된 모든 가능한 이벤트를 대리자에게 알립니다:

OBJECTIVE-C

#pragma mark - ISRewardedVideoDelegate
//Called after a rewarded video has changed its availability.
//@param available The new rewarded video availability. YES if available //and ready to be shown, NO otherwise.
- (void)rewardedVideoHasChangedAvailability:(BOOL)available {
}
//Called after a rewarded video has been viewed completely and the user is //eligible for reward.@param placementInfo An object that contains the //placement's reward name and amount.
- (void)didReceiveRewardForPlacement:(ISPlacementInfo *)placementInfo {
}
//Called after a rewarded video has attempted to show but failed.
//@param error The reason for the error
- (void)rewardedVideoDidFailToShowWithError:(NSError *)error {
}
//Called after a rewarded video has been opened.
- (void)rewardedVideoDidOpen {
}
//Called after a rewarded video has been dismissed.
- (void)rewardedVideoDidClose {
}
//Note: the events below are not available for all supported rewarded video ad networks. Check which events are available per ad network you choose //to include in your build.
//We recommend only using events which register to ALL ad networks you //include in your build.
 //Called after a rewarded video has started playing.
- (void)rewardedVideoDidStart {
}
//Called after a rewarded video has finished playing.
- (void)rewardedVideoDidEnd {
}

SWIFT

//MARK: ISRewardedVideoDelegate Functions
    /**
     Called after a rewarded video has changed its availability.
     
     @param available The new rewarded video availability. YES if available and ready to be shown, NO otherwise.
     */
    public func rewardedVideoHasChangedAvailability(_ available: Bool) {
   }
    
    /**
     Called after a rewarded video has finished playing.
     */
    public func rewardedVideoDidEnd() {
    }
    
    /**
     Called after a rewarded video has started playing.
     */
    public func rewardedVideoDidStart() {
   }
    
    /**
     Called after a rewarded video has been dismissed.
     */
    public func rewardedVideoDidClose() {
   }
    
    /**
     Called after a rewarded video has been opened.
     */
    public func rewardedVideoDidOpen() {
   }
    
    /**
     Called after a rewarded video has attempted to show but failed.
     
     @param error The reason for the error
     */
    public func rewardedVideoDidFailToShowWithError(_ error: Error!) {
   }
    
    /**
     Called after a rewarded video has been viewed completely and the user is eligible for reward.
     
     @param placementInfo An object that contains the placement's reward name and amount.
     */
    public func didReceiveReward(forPlacement placementInfo: ISPlacementInfo!) {
   }

Note:  참고:
  • ironSource는 통합 또는 라이브 프로덕션 중에 발생할 수 있는 오류를 이해하는 데 도움이 되는 오류 코드 메커니즘을 제공합니다. 전체 안내서는 여기에서 확인할 수 있습니다.
  •  콜백이 항상 주요 스레드에서 실행되고 있다고 가정하지 마세요. ironSource의 콜백에서 기인하는 모든 UI 상호작용이나 업데이트는 실행하기 전에 주 스레드로 전달되어야 합니다.

2단계. 사용자에게 비디오 보여주기

보상 비디오 대리자 및 해당 기능을 올바르게 구현하면  rewardedVideoHasChangedAvailability를 통해 가용성 상태를 수신할 수 있습니다. 그리고서 광고 가용성 변경 시 아래의 대리자 기능으로 알림을 받게 됩니다:

OBJECTIVE-C

/**
*Called after a rewarded video has changed its availability.
*@param available The new rewarded video availability. YES if available *and *ready to be shown, NO otherwise.
*/
(void)rewardedVideoHasChangedAvailability:(BOOL)available {
}

SWIFT

 /**
     Called after a rewarded video has changed its availability.
     @param available The new rewarded video availability. YES if available and ready to be shown, NO otherwise.
     */
    public func rewardedVideoHasChangedAvailability(_ available: Bool) {
   }

또는 다음을 호출하여 광고 가용성을 직접 요청할 수도 있습니다:

OBJECTIVE-C

[IronSource hasRewardedVideo];

SWIFT

IronSource.hasRewardedVideo()

광고 네트워크에 사용 가능한 비디오가 있으면 이 비디오 광고를 사용자에게 보여줄 준비가 됩니다. 트리거를 삽입하여 사용자가 비디오 광고를 보도록 유도하기에 이상적인 순간입니다.  다음 메소드를 호출하여 사용자에게 비디오 광고를 보여줄 수 있습니다:

OBJECTIVE-C

[IronSource showRewardedVideoWithViewController:(UIViewController *)viewController placement:(nullable NSString *)placementName];

SWIFT

IronSource.showRewardedVideo(with: <UIViewController>, placement: <String?>)

Note: 참고: placementName 매개 변수가 null인 경우 SDK는 ironSource 플랫폼에 구성된 기본 게재 설정을 검색합니다.
 

 ironSource 광고 게재 도구를 사용하면 보상 비디오 경험을 사용자 정의하고 최적화할 수 있습니다. 이 도구를 사용하면 보상에 따라 다양한 게재 위치에서 비디오를 사용자에게 제공할 수 있습니다. 아래 기능을 사용하여 광고를 보여주고 싶은 정확한 광고 게재 위치를 정의할 수 있습니다. 자세한 내용은 광고 게재 위치 문서를 참조하세요. 각 광고 게재와 관련된 특정 보상에 대한 세부 정보를 얻으려면 다음을 호출할 수 있습니다:

OBJECTIVE-C

[IronSource rewardedVideoPlacementInfo:(NSString *)placementName];
if(pInfo != NULL)
{
	 NSString * rewardName = [pInfo rewardName];
	 NSNumber * rewardAmount = [pInfo rewardAmount];
}

SWIFT

 let placementInfo = IronSource.rewardedVideoPlacementInfo(<placementName: String>)
        if  placementInfo != nil {
            let rewardName = placementInfo.placementName
            let rewardAmount = placementInfo.rewardAmount
        }

이제 ironSource의 광고 게재 위치 외에도 선택한 게재 위치에 대한 상한 및 간격 설정을 구성할 수 있습니다. 상한 및 간격 기능은 정의된 기간 내에 게재되는 광고의 양을 제한하여 앱의 사용자 경험을 개선합니다. 상한 및 간격 기능에 대한 자세한 내용은 여기를 참조하세요.

Note: 참고: 상한 및 간격 조정 도구를 보상 비디오에 사용하려면 아래 메소드를 호출하여 특정 게재 위치가 광고 한도에 도달했는지 확인하는 것이 좋습니다. 이는 게재 위치가 상한 또는 간격 설정되어 비디오 광고를 게재하지 않을 때 보상 비디오를 표시하지 않도록 하기 위한 것입니다.

OBJECTIVE-C

[IronSource isRewardedVideoCappedForPlacement:@"Placement"];

SWIFT

IronSource.isRewardedVideoCapped(forPlacement: <String>)

트랜잭션을 확인하기 위한 동적 사용자ID 동적 사용자ID는 세션에서 변경될 수 있는 매개 변수이며 서버 간 광고 보상 콜백에서 수신됩니다. 이 매개 변수는 AdRewarded 트랜잭션을 확인하는 데 도움이 되며 ShowRV를 호출하기 전에 설정해야 합니다.

OBJECTIVE-C

[IronSource setDynamicUserId:@"DynamicUserId"];

SWIFT

IronSource.setDynamicUserId(<dynamicUserId: String>)

3단계. 사용자 보상

사용자가 성공적으로 비디오를 완료할 때마다 ironSource SDK는 didReceiveReward 이벤트를 발생시킵니다. 보상 시 아래의 대리자 기능으로 알림을 받게 됩니다.

Note: 참고didReceiveRewardrewardedVideoDidClose 이벤트는 비동기적입니다. rewardedVideoDidClose 이벤트 이후 didReceiveReward가 발생되는 경우에도 보상을 부여하도록 리스너를 설정해야 합니다.

게재 위치 객체는 ironSource Admin에 정의된 대로 게재 위치의 보상 이름 및 보상 금액을 포함해야 합니다:

OBJECTIVE-C

//Called after a rewarded video has been viewed completely and the user is //eligible for reward.
//@param placementInfo is an object that contains the placement's reward //name and amount.
- (void)didReceiveRewardForPlacement:(ISPlacementInfo *)placementInfo {
    	 NSNumber *rewardAmount = [placementInfo rewardAmount];
	 NSString *rewardName = [placementInfo rewardName];
}

SWIFT

/**
     Called after a rewarded video has been viewed completely and the user is eligible for reward. @param placementInfo An object that contains the placement's reward name and amount.
*/
  public func didReceiveReward(forPlacement placementInfo: ISPlacementInfo!) {
    }

Note: 참고:
  1. ironSource 계정의 기본 설정은 앱의 클라이언트 내에서 didReceiveReward 콜백을 통해 사용자 완료/보상을 알려주는 것입니다. 또한, 백엔드 서버에서 알림을 받고 싶으면 서버 간 콜백을 활성화할 수 있습니다.
  2. 서버 간 콜백을 활성화하는 경우 동일한 완료에 대해 사용자에게 두 번 이상 보상하지 않는 것을 기억하세요. 클라이언트 측 콜백과 서버 간 콜백이 모두 수행되므로 각 완료에 대해 두 가지 알림을 받게 됩니다. 서버 간 콜백을 활용하려면 여기를 참조하세요.

  완료!  이제 앱에서 보상 비디오를 제공하도록 모두 설정되었습니다.

최초 통합 팁

 앱에 대한 새로운 통합인 경우 앱은 기본적으로 ironSource 대시보드의 ‘테스트 모드‘에 있습니다. 앱이 테스트 모드에 있는 동안 ironSource SDK는 SDK 프로세스에 대한 더 많은 가시성을 제공하기 위해 콘솔에 더 많은 로그를 출력합니다. 광고 인벤토리를 테스트하려면 테스트 기기를 설정하세요. 실시간 광고 인벤토리를 활성화할 때까지 수익을 창출하지 못하는 테스트 캠페인을 받게 됩니다. 앱에 실시간 광고 인벤토리가 준비되면 광고 단위 페이지에서 고 라이브!를 선택하세요.
ironsource-go-live-with-rewarded-video