클릭 처리 재정의
정보
NDA 모듈 - Server to Server(이하 S2S) 광고에 한해서 Click 처리를 Override 할 수 있는 기능에 대해서 설명합니다.
GFPAdConfiguration의 property를 통한 설정 또는 광고 로더별 설정을 통해서 별도 랜딩 처리 설정이 가능합니다.
만약 configuration 와 광고 타입별 로더에 모두 S2SClickDelegate 를 설정할 경우, 우선순위는 아래와 같습니다.
- 광고 타입별 로더에 설정되는 S2SClickDelegate
- GFPAdConfiguration 에 전역으로 설정되는 S2SClickDelegate
만약 둘 다 설정하지 않는다면, 기본 설정으로 랜딩됩니다.
주의
핸들러를 구현할 때, 인자로 넘겨받은 GFPS2SAdLandingHandler을 통해서 올바르게 click 처리가 되었는지 여부를 반드시 호출해주어야 합니다. 정확한 값을 전달해야만 올바른 과금이 발생하니 반드시 확인 부탁드립니다. 핸드러는 반드시 openURL() method 스코프 내부에서 호출해주어야 합니다. ex) UIApplication.shared.open의 응답을 기다리지 않고, 오픈 시도를 한 경우 바로 landingHandler(true) 호출
SDK 초기화 시 GFPAdConfiguration을 통한 전역 설정
- Swift
- Objective-C
var configuration = GFPAdConfiguration()
configuration.s2sClickDelegate = self;
GFPAdManager.setup(withPublisherCd: "", target:self, configuration: configuration) { error:GFPError? in
...
}
func openURL(with urlString: String!, landingHandler: GFPS2SAdLandingHandler!) {
let landingUrl = GFPURLUtils.url(with: urlString)
let isClickProcessEnable = UIApplication.sharedApplication.canOpenURL(landingUrl)
UIApplication.shared.open(landingUrl, options: [:]) { isSuccess in
...
}
...
if (landingHandler != nil) {
landingHandler(isClickProcessEnable);
}
}
GFPAdConfiguration *configuration = [[GFPAdConfiguration alloc] init];
...
configuration.s2sClickDelegate = self; //GFPS2SAdClickDelegate 을 conform 함.
[GFPAdManager setupWithPublisherCd:@"Publisher_Code" target: self configuration:configuration completionDelegate:^(GFPError * _Nullable error) {
NSLog(@"Setup isSdkInitialized: %@, ERROR: %@", [GFPAdManager isSdkInitialized] ? @"YES": @"NO", error);
}];
- (void)openURLWith:(NSString *)urlString landingHandler:(GFPS2SAdLandingHandler)landingHandler {
NSURL *landingUrl = [GFPURLUtils URLWithString: urlString];
BOOL isClickProcessEnable = [UIApplication.sharedApplication canOpenURL:landingUrl];
[UIApplication.sharedApplication openURL: landingUrl
options: @{}
completionHandler:^(BOOL success) {
...
}];
...
if (landingHandler) {
landingHandler(isClickProcessEnable);
}
}
광고 타입별 로더에 설정
GFPAdLoader
- Swift
- Objective-C
var adLoader:GFPAdLoader;
...
adLoader.s2sClickDelegate = self; //GFPS2SAdClickDelegate 을 conform 함.
func openURL(with urlString: String!, landingHandler: GFPS2SAdLandingHandler!) {
UIApplication.shared.open(GFPURLUtils.url(with: urlString), options: [:]) { isSuccess in
if (landingHandler != nil) {
landingHandler(isSuccess);
}
}
}
GFPAdLoader *adLoader = ...
adLoader.s2sClickDelegate = self; //GFPS2SAdClickDelegate 을 conform 함.
- (void)openURLWith:(NSString *)urlString landingHandler:(GFPS2SAdLandingHandler)landingHandler {
[UIApplication.sharedApplication openURL: [GFPURLUtils URLWithString: urlString]
options: @{}
completionHandler:^(BOOL success) {
if (landingHandler) {
landingHandler(success);
}
}];
}
GFPBannerView
- Swift
- Objective-C
var bannerView:GFPBannerView;
...
bannerView.s2sClickDelegate = self; //GFPS2SAdClickDelegate 을 conform 함.
func openURL(with urlString: String!, landingHandler: GFPS2SAdLandingHandler!) {
UIApplication.shared.open(GFPURLUtils.url(with: urlString), options: [:]) { isSuccess in
if (landingHandler != nil) {
landingHandler(isSuccess);
}
}
}
GFPBannerView *bannerview = ...
bannerView.s2sClickDelegate = self; //GFPS2SAdClickDelegate 을 conform 함.
- (void)openURLWith:(NSString *)urlString landingHandler:(GFPS2SAdLandingHandler)landingHandler {
[UIApplication.sharedApplication openURL: [GFPURLUtils URLWithString: urlString]
options: @{}
completionHandler:^(BOOL success) {
if (landingHandler) {
landingHandler(success);
}
}];
}
GFPVideoAdManager
- Swift
- Objective-C
var videoAdManager:GFPVideoAdManager;
...
videoAdManager.s2sClickDelegate = self; //GFPS2SAdClickDelegate 을 conform 함.
func openURL(with urlString: String!, landingHandler: GFPS2SAdLandingHandler!) {
UIApplication.shared.open(GFPURLUtils.url(with: urlString), options: [:]) { isSuccess in
if (landingHandler != nil) {
landingHandler(isSuccess);
}
}
}
GFPVideoAdManager *videoAdManager = ...
videoAdManager.s2sClickDelegate = self; //GFPS2SAdClickDelegate 을 conform 함.
- (void)openURLWith:(NSString *)urlString landingHandler:(GFPS2SAdLandingHandler)landingHandler {
[UIApplication.sharedApplication openURL: [GFPURLUtils URLWithString: urlString]
options: @{}
completionHandler:^(BOOL success) {
if (landingHandler) {
landingHandler(success);
}
}];
}
GFPVideoAdScheduleManager
- Swift
- Objective-C
var videoAdScheduleManager:GFPVideoAdScheduleManager;
...
videoAdScheduleManager.s2sClickDelegate = self; //GFPS2SAdClickDelegate 을 conform 함.
func openURL(with urlString: String!, landingHandler: GFPS2SAdLandingHandler!) {
UIApplication.shared.open(GFPURLUtils.url(with: urlString), options: [:]) { isSuccess in
if (landingHandler != nil) {
landingHandler(isSuccess);
}
}
}
GfpVideoAdScheduleManager *scheduleAdManager = ...
scheduleAdManager.s2sClickDelegate = self; //GFPS2SAdClickDelegate 을 conform 함.