커스텀 인앱 브라우저
BuzzAd iOS용 SDK는 사용자가 클릭한 광고나 콘텐츠에 설정된 URL을 BZVLauncher
로 전달하고, open
에서는 광고를 어떤 브라우저로 보여줄지 결정합니다. 광고를 보여주는 브라우저는 외부 브라우저, 버즈빌의 인앱 브라우저, 그리고 직접 구현하는 커스텀 인앱 브라우저가 있습니다.
외부 브라우저나 버즈빌 인앱 브라우저의 경우 BuzzAd iOS용 SDK의 기본 런처를 통해 둘 중 어느 브라우저를 사용할지 광고 설정에 따라 자동으로 결정됩니다. 커스텀 인앱 브라우저로 광고를 보여주려면 먼저 커스텀 인앱 브라우저를 구현하고, 브라우저를 실행하기 위해 커스텀 런처를 구현한 다음 BuzzAdBenefit
에 설정해야 합니다.
커스텀 인앱 브라우저 구현하기
다음은 커스텀 인앱 브라우저를 구현하는 예시입니다. 커스텀 인앱 브라우저를 구현하려면 [BuzzAdBrowser.sharedInstance browserViewController]
를 사용해야 합니다. 그렇지 않으면 액션형 광고와 체류 리워드 광고가 제대로 동작하지 않을 수 있습니다.
- Swift
- Objective-C
final class CustomBrowserViewController: UIViewController {
private lazy var browserViewController: UIViewController = {
BuzzAdBrowser.sharedInstance().browserViewController()
}()
override func viewDidLoad() {
super.viewDidLoad()
displayContentViewController(browserViewController)
}
private func displayContentViewController(_ contentViewController: UIViewController) {
addChild(contentViewController)
contentViewController.view.frame = view.bounds
view.addSubview(contentViewController.view)
contentViewController.didMove(toParent: self)
}
}
@interface CustomBrowserViewController: UIViewController
@end
@interface CustomBrowserViewController ()
@property (nonatomic, strong, readonly) UIViewController *browserViewController;
@end
@implementation CustomBrowserViewController
- (void)viewDidLoad {
[super viewDidLoad];
_browserViewController = [BuzzAdBrowser.sharedInstance browserViewController];
[self displayContentViewController:_browserViewController];
}
- (void)displayContentViewController:(UIViewController *)contentViewController {
[self addChildViewController:contentViewController];
contentViewController.view.frame = self.view.bounds;
[self.view addSubview:contentViewController.view];
[contentViewController didMoveToParentViewController:self];
}
@end
커스텀 런처 구현하기
구현한 인앱 브라우저를 사용하려면 커스텀 런처를 구현해야 합니다. 커스텀 런처를 구현할 때 광고와 콘텐츠에 따라 동작을 다르게 설정할 수 있으며, 콘텐츠의 sourceUrl
에는 앱 링크가 포함되어 있을 수 있습니다.
다음은 커스텀 런처를 구현하고 커스텀 인앱 브라우저에서 광고를 실행하도록 구현한 예시입니다.
- Swift
- Objective-C
final class CustomLauncher: NSObject, BZVLauncher {
// 런처와 관련된 이벤트를 수신할 수 있습니다.
var delegate: BZVLauncherDelegate?
func open(with launchInfo: BZVLaunchInfo) {
// launchInfo의 인자를 확인하여 광고 또는 콘텐츠인지 미리 판단할 수 있습니다.
if let ad = launchInfo.ad {
if ad.isDeepLink {
// 딥링크 광고일 경우 필요한 작업을 할 수 있습니다.
}
} else if let article = launchInfo.article {
let sourceURL = article.sourceURL
}
let customBrowserViewController = CustomBrowserViewController()
YOUR_ROOT_VIEW_CONTROLLER.presentedViewController?.present(customBrowserViewController, animated: true, completion: nil)
}
}
@import BuzzAdBenefit;
@interface CustomLauncher : NSObject <BZVLauncher>
// 런처와 관련된 이벤트를 수신할 수 있습니다.
@property (nonatomic, weak, readwrite, nullable) id<BZVLauncherDelegate> delegate;
@end
@implementation CustomLauncher
- (void)openWithLaunchInfo:(BZVLaunchInfo *)launchInfo {
// launchInfo의 인자를 확인하여 광고 또는 콘텐츠인지 미리 판단할 수 있습니다.
if (launchInfo.ad != nil) {
if (ad.isDeepLink) {
// 딥링크 광고일 경우 필요한 작업을 할 수 있습니다.
}
} else if (launchInfo.article != nil){
NSString *sourceURL = launchInfo.article.sourceURL;
}
// Custom Browser 실행
CustomBrowserViewController *customBrowserViewController = [[CustomBrowserViewController alloc] init];
[YOUR_ROOT_VIEW_CONTROLLER.presentedViewController presentViewController:customBrowserViewController animated:YES completion:nil];
}
@end
커스텀 런처 설정하기
구현한 커스텀 런처를 BuzzAdBenefit
에 설정하세요. 다음은 커스텀 런처를 설정하는 예시입니다.
- Swift
- Objective-C
let launcher = CustomLauncher()
BuzzAdBenefit.setLauncher(launcher)
CustomLauncher *launcher = [[CustomLauncher alloc] init];
[BuzzAdBenefit setLauncher:launcher];