우리가 사용하는 대다수 웹, 앱에서 구글 광고를 볼 수 있는데, iOS에 구글 애드몹 SDK를 적용해 볼 기회가 생겼다.
구글 애드몹 SDK 적용법은 구글 애드몹 공식 홈페이지의 가이드를 따랐으니 참고 바란다. (*안드로이드도 동일 페이지에 가이드 있음)
구글 애드몹 SDK를 실제로 적용하면서 해결한 이슈를 정리해보려고 한다.
현재 개발하고 있는 앱의 최소 지원 버전은 iOS 12 인데 애드몹 광고가 노출되지 않는 현상이 발생했다..😱
iOS 애드몹 SDK Release Note를 확인해보니 SDK v11.0.0 부터는 iOS 13 이상 만 애드몹 광고를 받을 수 있다고 한다! (최소 지원 버전이 iOS 12던데 뭐지..🙄)
나는 최신 버전 (2024년 8월 기준, v11.6.0)의 SDK 를 사용하기 위해 iOS 12에서는 광고를 미노출하는 방법을 택했다.
SPM(Swift Package Manager) 으로 애드몹 SDK 를 다운 받은 후, swift 파일에서 SDK 를 import 했는데 이 에러가 발생했다.
Module 'GoogleMobileAds' not found
구글링을 했더니 다들 cocoapod으로 SDK 설치한 케이스 밖에 없는거다..ㅠㅠ
이런 저런 시도를 하다 결국 gpt 대리님에게 해결방법을 얻었는데 Bridging-Header.h 파일에 import 가 필요한 문제였다!
#import <GoogleMobileAds/GoogleMobileAds.h>
개발 환경에서 테스트 광고만 노출하기 위해 사전 설정이 필요하다.
설정 방법은 간단한데, 광고 ID / 벤더 UUID 를 해시한 값을 테스트 기기 목록에 넣어주면 된다. 코드는 다음과 같다.
var deviceID = ASIdentifierManager.shared().advertisingIdentifier.uuidString
if deviceID == UUID(uuidString: "00000000-0000-0000-0000-000000000000")?.uuidString {
// 광고 추적 허용되지 않은 경우, 벤더 UUID로 대체
deviceID = UIDevice.current.identifierForVendor?.uuidString ?? ""
}
// MD5 해시
let digest = Insecure.MD5.hash(data: deviceID.data(using: .utf8) ?? Data())
let encDeviceID = digest.map { String(format: "%02hhx", $0) }.joined()
GADMobileAds.sharedInstance().requestConfiguration.testDeviceIdentifiers = [encDeviceID]