이번 주제는 facebook sdk를 이용하여 meta 광고 시 사용자 활동이 추적 가능하도록 facebook sdk를 적용하는 것이다.
앱 출시 후에는 이제 본격적으로 사용자의 피드백을 받을 수 있기 때문에 meta 광고를 통해 유입된 사용자의 경로나 활동을 파악하기 위해 facebook sdk를 적용해야 했다.
facebook sdk를 적용하기 위한 방법은 공식문서에 자세하게 나와있는데, 다만 이러한 방법들은 모두 react native가 아닌 android/ios 각각의 개발에 초점이 맞춰져 있었다.
react native에 facebook sdk를 적용하는 방법과는 사뭇 달라보였고, 공식 문서와 함께 참고할 수 있는 여러 정보를 찾아보았다.
다만 이렇게 공식문서가 아닌 인터넷의 정보를 참고할 때는 그 정보가 언제 기록됐는지를 잘 살펴봐야 한다. 특히 react native는 불과 몇개월 사이에도 버전과 라이브러리가 정말 많이 바뀌기 때문에 꼭 찾아보는 시점과 비슷한 시점인지를 알아보고, 다소 오래된 정보더라도 참고할 수 있으니 이를 고려하여 판단하면 된다.
이번에 이 포스팅을 쓰는 목적도 이와 비슷하다.
react native에 광고 추적을 목적으로 facebook sdk를 적용하는 방법을 알아보았는데 최신에 작성된 글이 없어 시행착오를 많이 겪었다.
다행히 여러 정보를 종합하여 적절히 해결하긴 하였지만, 나중에 이번에 작성한 글이 도움이 될 수 있으므로 작성해두려 한다.
React Native에서만 쓰는 라이브러리?
react native에는 facebook sdk 적용을 도와주는 라이브러리가 있다. 이 라이브러리를 사용하면 공식 문서에 나와있는 방법과는 달라진다.
https://github.com/thebergamo/react-native-fbsdk-next
react-native-fbsdk-next 라는 라이브러리이다.
초기 버전은 react-native-fbsdk였던 것 같지만, 이 버전 대신 next를 추가한 버전을 사용하는 것 같다.
위 깃허브 링크로 들어가보면 굉장히 자세하게 설명된 readme 파일을 확인할 수 있다.
위 readme 파일 대로만 따라하면 된다.
다만, ios 설정에 있어 오류가 발생할 수 있는 부분은 3번이다.
error use of undeclared identifier 'FBSDKApplicationDelegate'
아마 이러한 에러가 뜰텐데, 깃허브 readme대로 따라하면 해결된다.
이는 swift로 작성된 코드가 인식되지 않아 Swift 파일을 추가해주어야 한다.
이 역시 readme 파일에 자세히 나와 있다.
여기까지 정상적으로 되었다면, 이제 남은 한가지만 해결하면 된다.
사용자 활동 추적 허용 for ios
몇년 전, IOS는 ios 15 이상부터 사용자 행동을 추적하는 로그 등을 이용할 경우, 반드시 사용자에게 메세지를 안내하고, 추적을 금지할 수 있도록 하는 기능을 반드시 추가하도록 변경하였다.
이에 따라, 이용할 수 있는 관련된 라이브러리가 있는데 내가 정상적으로 사용한 라이브러리는 react native permission이다.
https://github.com/zoontek/react-native-permissions
다른 라이브러리로도 시도를 해보고, 직접 ios 폴더의 파일을 수정해보며 적용을 시도해보았으나 계속해서 오류가 발생하였다.
react-native-permissions 라이브러리는 추적과 관련된 권한 말고도 굉장히 다양한 권한을 다루는 범용성이 높은 라이브러리로, react native에서 permission 을 관리할 수 있도록 한다.
이 역시 readme 파일 대로만 따라하면 아마 오류 없이 잘 작동할 것이다.
native 코드를 수정한 후에는 app.tsx 등 앱의 가장 시작점에 위치한 파일에 permission request 후, request의 반환값인 result를 저장하여 행동 추적 로그의 로직 분리로 이용할 수 있다.
나의 경우, result의 값을 asyncStorage에 저장하여 로그 추적의 경우 result의 값이 추적 허용일 경우에만 사용자 행동 로그를 수집할 수 있게끔 하였다.
나는 위 두가지 라이브러리를 이용하여 해결하였지만, 물론 다른 방법을 이용해서도 가능할 것이다. 중요한 점은 최신 나와있는 라이브러리, 혹은 트렌드 등을 잘 알아보고 자신의 프로젝트에 가장 적합한 방법을 찾는 것이 중요할 듯 하다.