어찌어찌 출시해서 스스로 잘 돌아가고 있던 (다른 말로 하면 신경 끄고 있던) 앱에 facebook 광고를 위해 SDK를 적용해달라는 요청이 들어왔다.
앱에 광고를 노출하는 것은 아니고, facebook 에 앱 설치 광고를 내고, 그 효과를 측정하기 위해 앱에서 이벤트를 리포트하는 기능을 넣어달라는 것이다.
facebook에서 제공하는 자료가 좀 불친절하고(내용이 부실하고 그나마 여기 저기 흩어져 있음), iOS 14.5부터 새롭게 추가된 기능&정책이 있어서 생각보다 시행착오를 많이 겪고 오래 걸린 작업이었다.
이미(!) 잊어버린 것도 있고, 빠뜨린 작업도 있을 수 있지만, 기록 차원에서 했던 일들을 정리해본다.
전반적인 내용은 facebook 문서(https://developers.facebook.com/docs/app-events/getting-started) 에 있는데, 여기서 빠진 내용이나 잘 안 됐던 내용 위주로 정리한다.
1. 앱 생성
일단 developers.facebook.com 에서 앱을 생성해야 한다.
앱 생성(Create an App)이라고 되어 있지만, facebook 플랫폼에 나의 앱을 등록하는 절차라고 생각하면 되겠다.
이미 생성해놓은 앱이 있다면 다음(앱 인증)으로 넘어가면 된다.
https://developers.facebook.com/apps/create/
앱 생성 시 몇가지 정보를 넣어야 하는데, 광고 연동을 위해서는 Business Account 를 넣어야 하고, 개발자 계정이 Business Account 의 권한을 가지고 있어야 한다.
앱을 생성하고 나면 필요한 프로덕트를 추가할 수 있는데, 여기서 필요한 기능들을 추가해주면 된다.
일단은 App Events만 추가한다.
App Events 를 추가하고 Set up 을 선택하거나 왼쪽 App Events 메뉴에서 Quickstart 를 선택하면 iOS, Android 패키지의 설정에 대한 설명을 볼 수 있다. 이것은 나중에 보자.
앱 생성 이후에 플랫폼 등록을 해줘야 하는데, iOS, Android 플랫폼을 각각 등록해주면 된다. (Settings - Basic)
1) 플랫폼 등록 - iOS
Bundle ID 는 iOS 앱의 번들 ID를 넣어주면 되고, iPhone Store ID는 앱스토어커넥트의 앱 정보 - 일반 정보에 있는 Apple ID 를 넣어주면 된다.
Shared Secret 은 앱스토어커넥트에서 앱 내 추가 기능 - 구독 - 앱 공유 암호 에서 생성한 키를 넣어준다.
2) 플랫폼 등록 - android
안드로이드 스토어는 Google Play 선택해주면 되고, Key hash 에서 일차 난관이 발생한다.
developer key hash 는 간단하게 만들 수 있는데, release key hash 는 상황에 따라 다르다. release key store를 직접 만들어서 스토어에 업로드했으면 https://developers.facebook.com/docs/android/getting-started/#release-key-hash 여기 있는 것처럼 해주면 되고, 구글 플레이 개발자 콘솔에서 Google play app signing 옵션을 활성화시켰다면 구글 플레이 콘솔에서 Setup - App Integrity - App signing key certificate - SHA-1 certificate fingerprint 를 이용하면 된다.
잠깐 부연설명하자면, Google play app signing 옵션을 활성화하면 개발자가 업로드한 바이너리를 구글이 생성한 키로 서명해서 배포하기 때문에, 개발자는 업로드 키스토어파일만 가지고 있고 배포용 키스토어 파일은 가지고 있지 않게 된다. 즉, 개발자가 빌드한 release 바이너리와 구글이 플레이스토어를 통해 배포하는 바이너리의 서명이 다른 상황이 만들어지게 되고, 개발자는 배포된 바이너리의 키스토어를 가지고 있지 않기 때문에 필요한 경우 Google Play Console 에서 fingerprint를 가져와서 사용하면 되는 것이다.
> echo <구글 플레이 콘솔에서 가져온 SHA-1 certificate fingerprint> | xxd -r -p | openssl base64
의 결과를 Key hash에 넣어주면 된다.
2. 앱 소유 확인 (app-ads.txt)
이 작업을 처음 한다면 각 플랫폼에서 모바일 앱의 소유권을 확인해야 한다는 알림이 보일 것이다.
https://www.facebook.com/business/help/718352112419262?id=211412110064838
여기서 하라는 대로 해주면 되긴 하는데 몇 가지 시간 걸렸던 포인트가 있어서 정리한다.
1) app-ads.txt
- app-ads.txt 파일은 등록된 웹사이트의 루트에 있어야 한다.
- app-ads.txt 파일의 내용은 https://developers.facebook.com/docs/audience-network/optimization/best-practices/authorized-sellers-app-ads/ 를 참고하면 되는데, 이게 문서를 읽어도 뭘 써야하는지 좀 애매한 부분이 있다. (나만 헷갈렸나?) 수정하면 반영되는데 시간이 걸려서 확인하기 어려우니 아래와 같이 하면 된다.
facebook.com, <facebook 앱 아이디>, RESELLER, c3e20eee3f780d68
첫번째, 네번째는 문서에 있는 그대로 'facebook.com', 'c3e20eee3f780d68' 써주면 되고, 세번째는 facebook AD 설정하는 경우에는 'RESELLER' 써주면 된다.
두번째가 헷갈렸는데, iOS나 android 앱 아이디가 아니라 위에서 생성한 facebook 앱의 아이디를 넣어주면 된다.
'앱 소유권 확인' 이라고 되어 있어서 좀 헷갈렸는데, 서비스 도메인에서 여러 광고 플랫폼에 공통으로 사용되는 app-ads.txt 에 'facebook' 을 등록하는 과정이라고 생각하면 되겠다.
2) App Store 마케팅 URL
앱스토어에 iOS 앱 등록할 때 마케팅 URL 이라는 항목이 있다. 여기에 서비스 도메인 URL이 들어있어야 하는데, 만약 이 필드가 제대로 되어있지 않아서 수정이 필요하다면 앱 버전을 올려야 한다.
마케팅 URL 필드만 수정할 수 없기 때문에 앱 심사 및 릴리즈에 시간이 소요된다는 것을 고려하도록 하자.
여기까지가 페이스북에 앱을 등록하는 과정이었다. 사실 여기까지는 flutter 와는 상관 없는 부분이었고, 다음 포스트에서 실제 facebook SDK 를 flutter 앱에 적용하는 과정에 대해서 정리해보도록 하겠다.