Reward Banner 스크립트 iOS
본 가이드는 iOS 환경에서 스크립트 클릭 시, 리워드 지급을 위한 연동 방식을 기술합니다.
애드팝콘 SSP에서 제공하는 스크립트 만을 노출 시키기 위한 웹 뷰를 구성 한 뒤, 아래와 같이 설정하여 해당 웹 뷰에서 클릭을 체크 후 리워드를 지급합니다.
반드시 다른 웹뷰와 분리하여 웹뷰를 생성해야만 광고에 대한 클릭 처리가 정확히 됩니다.
1. WebView 추가
오직 Reward Banner 광고 만을 위한 WebView를 추가합니다.
@interface MainViewController() <WKUIDelegate, WKNavigationDelegate>
{
WKWebView *_webView;
}
- (void)viewDidLoad
{
WKWebView *_webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, width, height) configuration:nil];
[self.view addSubView:_webView];
}
2. WebView 세팅 및 랜딩
1) 광고 설정 순서
@interface MainViewController() <WKUIDelegate, WKNavigationDelegate>
{
WKWebView *webView;
}
- (void)viewDidLoad
{
WKWebView *_webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, width, height) configuration:nil];
[self.view addSubView:_webView];
[self initializeWebViewSetting];
[self loadscript];
}
2) WebView 관련 설정
webView 관련 설정을 아래와 같이 진행합니다. (initializeWebViewSetting
)
- (void)initializeWebViewSetting
{
_webView.UIDelegate = self;
_webView.navigationDelegate = self;
}
3) script 로드
애드팝콘 사업실로 부터 전달받은 아래 형태의 script를 webview에 로드합니다.(loadScript
)
<iframe class="adpopcorn-ads" src="https://ssp.igaw.io/sdk/html/mediation_v2.html?{파라미터}" width="{WIDTH}" height="{HEIGHT}" marginwidth="0" marginheight="0" frameborder="0" scrolling="no"></iframe>
- (void)loadscript
{
NSString *idfa = [self getIDFA];
NSString *script = @"<iframe class=\"ads\" src=\"https://ssp.igaw.io/sdk/html/mediation_v2.html?{파라미터}\" width=\"320px\" height=\"100px\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\" scrolling=\"no\"></iframe>";
script = [scriptstringByReplacingOccurrencesOfString:@"{idfa}" withString:idfa];
[webView loadData:[script dataUsingEncoding:NSUTF8StringEncoding] MIMEType:@"text/html" characterEncodingName:@"UTF-8" baseURL:[[NSURL alloc] initWithString:@"https://ssp.igaw.io"]];
}
광고 물량은 전달 가능한 파라미터 범위에 따라 달라질 수 있습니다. 가능한 범위 내 최대한 전달해주시길 바랍니다.
벤더 식별자(단, 광고 추적 미동의로 idfa를 전달할 수 없는 경우 idfv 값을 필수로 전달해야 한다)
미디에이션 광고 skip 여부
(true 전달시, 기본 설정 광고 노출)
단, script의 idfa 매크로 값에는 IDFA를 치환하여 전달해 주시면 됩니다.
IDFA를 가져오는 방법은 아래의 링크를 참고해 주시기 바랍니다.
4) 클릭 발생 시 리워드 지급
WKNavigationDelegate. WKUIDelegate
델리게이트를 설정하여, 클릭 동작을 체크하고 리워드를 지급합니다.
#pragma mark WKNavigationDelegate
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
{
NSString *requestString = navigationAction.request.URL.absoluteString;
if(navigationAction.navigationType == WKNavigationTypeLinkActivated)
{
decisionHandler(WKNavigationActionPolicyCancel);
NSURL *requestURL = [NSURL URLWithString:requestString];
if(@available(iOS 10, *))
{
// RCPC 리워드 지급 or 이미 지급 된 경우 바로 랜딩
[[UIApplication sharedApplication] openURL:requestURL options:@{} completionHandler:^(BOOL success) {
if (success) {
[_webView stopLoading];
}
}];
}
else
{
[[UIApplication sharedApplication] openURL:requestURL];
[_webView stopLoading];
}
return;
}
decisionHandler(WKNavigationActionPolicyAllow);
}
#pragma mark WKUIDelegate
- (nullable WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures
{
NSString *requestString = navigationAction.request.URL.absoluteString;
if(navigationAction.navigationType == WKNavigationTypeLinkActivated ||
navigationAction.navigationType == WKNavigationTypeOther)
{
NSURL *requestURL = [NSURL URLWithString:requestString];
// RCPC 리워드 지급 or 이미 지급 된 경우 바로 랜딩
if(@available(iOS 10, *))
{
[[UIApplication sharedApplication] openURL:requestURL options:@{} completionHandler:^(BOOL success) {
if (success) {
[_webView stopLoading];
}
}];
}
else
{
[[UIApplication sharedApplication] openURL:requestURL];
[_webView stopLoading];
}
}
return nil;
}
Last updated