안녕하세요.
구글 IMA 광고를 나의 앱 iOS, Swift 소스로 쉽게 구현하는 설명 및 가이드입니다.
일단 https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side?hl=ko
시작하기 | IMA SDK for iOS | Google for Developers
Google 양방향 미디어 광고 (IMA)를 사용하면 게시자가 iOS에서 동영상, 오디오, 게임 콘텐츠에 광고를 요청하고 표시할 수 있습니다.
developers.google.com
가볍게 정식 가이드라인 보시면 간단히 설치 및 설명이 나와있습니다.
간단히 설명하자면
1. pod으로 해당 프레임워크 및 라이브러리 설치
pod 'GoogleAds-IMA-iOS-SDK', '~> 3.22.1'
2. 해당 정식 가이드 구현된 소스 추가
저는 싱글톤 객체를 활용하여 독립적인 IMA 광고 Manager로 구현
https://nplayground.tistory.com/6
Swift 싱글턴 패턴(Singleton Pattern)
자주 쓰는 객체 같은 경우 Manager 모드로 어느곳이든 편히 쓸수 있을까? 그 방법은 싱글턴 패턴을 이용하여 사용하면 되는것이다. 예로 API 통신을 하는 ConnectionManager 만든 후 각각의 Func 정의후 필
nplayground.tistory.com
이와 같은 형식으로 독립 Manager로 구성
3. 플레이어 Controller에서 영상 재생 시 구글 광고 재생 설정
GoogleIMAManager.sharedInstance.setUpContentAD(adView: self.playerViewlayout, adPlayer: self.kPlayer ?? onairAdPlayer, adUrl: tempGoogleAdUrl , adViewController: self)
위에 소스 설명:
1) GoogleIMAManager.sharedInstance.setUpContentAD == 독립적인 IMA 광고 Manager 객체 안에 함수 setUpContentAD
2) adView: self.playerViewlayout == 플레이어 뷰 적정 크기 및 위치를 adView에 전달
3) self.kPlayer ?? onairAdPlayer == 플레이어를 광고 함수에 전달
4) adUrl: tempGoogleAdUrl == 구글 광고 url 전달
기본적이 소스들이 정식 가이드 SDK와 다르지만 독립적인 객체를 위해 필요한 값을 전달하는 로직을 만들어서
각각의 독립성을 살렸다.
각각의 독립성이 살아있으면 추후 및 유지보수 시 코드의 수정 코드의 오류등이 쉽게 잡아 낼 수 있고
또한 수정이 용이하다.
두 번째로 장착을 했으면 광고 이벤트를 catch 해야 하는데 이 부분은
// MARK: - IMAAdsManagerDelegate
func adsManager(_ adsManager: IMAAdsManager, didReceive event: IMAAdEvent) 항목에서 이벤트가 전달된다.
이벤트들 매우 많지만 필수적이 것만 나열하면
case IMAAdEventType.PAUSE: 광고 일시정지
case IMAAdEventType.RESUME: 광고 재개
case IMAAdEventType.TAPPED: 광고 탭
case IMAAdEventType.STARTED:광고 시작
case IMAAdEventType.SKIPPED: 건너뛰기
case IMAAdEventType.ALL_ADS_COMPLETED: 모든 광고 종료
그리고 소스 안에 해당 필요 액션을 설정하면 된다.
ex) 한 예로 나는 광고 시작하면 숨겨져 있던 광고 텍스트를 노출시켰다.
case IMAAdEventType.STARTED:
appDelegate().rootMainviewController.kPlayerController.googleADText.isHidden = false
또한 IMAAdsManagerDelegate 포함된 함수들을 추가하면 추가로 이벤트를 Catch 할 수 있다.
func adsManager(_ adsManager: IMAAdsManager, didReceive error: IMAAdError) : IMAAdError 이벤트 상태
func adsManagerDidRequestContentPause(_ adsManager: IMAAdsManager) : Pause 이벤트 상태
func adsManagerDidRequestContentResume(_ adsManager: IMAAdsManager): Resume 이벤트 상태
3.구글 광고 재생 종료
그 후 프리롤 광고, 미드롤 광고, 프리롤 광고 2개, 미드롤 광고 2개 등등등 관리자 페이지에서 설정한 광고가 모두 끝나면 ALL_ADS_COMPLETED 이벤트가 주어지는데
그 부분에 나의 앱 영상 재생 코드를 ex)KPlayerManager.sharedInstance.playerPlay() 실행하면 본영상 재생을 진행 하게되고 그러면
스무스하게 광고를 진행할 수 있다.
'iOS, Swift 개발' 카테고리의 다른 글
Swift Dictionary, Array nil 체크 (0) | 2024.04.16 |
---|---|
파이어베이스 dSYM 찾을수 없을때 Issue(Firebase dSYM 요청 이슈) (0) | 2024.04.16 |
Release Monitoring 적용을 위한 Firebase 업데이트시 에러 'libarclite', 'libarclite_iphoneos.a' 문제 (0) | 2024.04.12 |
App Store 심사 제출시 이슈 요청 사항 Missing API declaration (1) | 2024.04.05 |
스위프트(Swift) UIAlertController 구현 (0) | 2024.03.29 |