Reward Banner 스크립트 iOS

본 가이드는 iOS 환경에서 스크립트 클릭 시, 리워드 지급을 위한 연동 방식을 기술합니다.

애드팝콘 SSP에서 제공하는 스크립트 만을 노출 시키기 위한 웹 뷰를 구성 한 뒤, 아래와 같이 설정하여 해당 웹 뷰에서 클릭을 체크 후 리워드를 지급합니다.

반드시 다른 웹뷰와 분리하여 웹뷰를 생성해야만 광고에 대한 클릭 처리가 정확히 됩니다.

1. WebView 추가

오직 Reward Banner 광고 만을 위한 WebView를 추가합니다.

Objective-C

@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) 광고 설정 순서

Objective-C
@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)

Objective-C
- (void)initializeWebViewSetting
{
    _webView.UIDelegate = self;
    _webView.navigationDelegate = self;
}

3) script 로드

애드팝콘 사업실로 부터 전달받은 아래 형태의 script를 webview에 로드합니다.(loadScript)

HTML
<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>
Objective-C
- (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"]];
}
  • iOS 파라미터 정의

Parameter필수TypeDefault설명

app_key

Y

string

매체용으로 발급된 광고 앱 키

placement_id

Y

string

매체용으로 발급된 광고 지면 아이디

idfa

Y

string

iOS 광고 식별자

idfv

N(Y)

string

벤더 식별자(단, 광고 추적 미동의로 idfa를 전달할 수 없는 경우 idfv 값을 필수로 전달해야 한다)

android_opt_out_enabled

N

boolean

true

Android 광고 추적 거부 여부

network

N

string

""

네트워크 (mobile or wifi)

carrier

N

string

""

통신사

model

N

string

""

모델명

manufacturer

N

string

""

제조사

os_version

N

string

"0"

플랫폼 OS 버전

단, script의 idfa 매크로 값에는 IDFA를 치환하여 전달해 주시면 됩니다.

IDFA를 가져오는 방법은 아래의 링크를 참고해 주시기 바랍니다.

4) 클릭 발생 시 리워드 지급

WKNavigationDelegate. WKUIDelegate 델리게이트를 설정하여, 클릭 동작을 체크하고 리워드를 지급합니다.

Objective-C
#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