Unity에서 Firebase와 AppsFlyer를 함께 적용할 때의 충돌 회피
iOS에서는 Firebase, Facebook 등 여러 플러그인이 각자 UnityAppController를 스위즐링하거나 서브클래싱하면서 충돌을 일으켜, 앱 라이프사이클 이벤트가 동작하지 않는 경우가 있다.
또한 Firebase 패키지가 참조하는 External Dependency Manager for Unity(EDM4U)와 AppsFlyer 패키지에 들어 있는 EDM4U가 의존성 resolve 도중 충돌하는 일이 있다.
Firebase와 AppsFlyer 모두 iOS의 AppController를 메인으로 처리하려고 한다.
AppController는 Firebase를 메인으로
섹션 제목: “AppController는 Firebase를 메인으로”Firebase가 AppController를 메인으로 처리하도록 AppsFlyer 쪽의 서브클래스 등록 코드를 주석 처리한다.
//IMPL_APP_CONTROLLER_SUBCLASS(AppsFlyerAppController)IMPL_APP_CONTROLLER_SUBCLASS(AppsFlyerAppController)AppsFlyer의 EDM4U는 가져오지 않는다
섹션 제목: “AppsFlyer의 EDM4U는 가져오지 않는다”AppsFlyer unitypackage를 import할 때 EDM4U를 대상에서 제외하고, AppsFlyer에 필요한 라이브러리는 직접 추가한다.
appsflyer-unity-plugin.v*.unitypackage를 import하되EDM4U의존성의 체크를 해제한다.- Android 의존성을 내려받아
Assets/Plugins/Android폴더에 넣는다. - iOS 의존성을 내려받아
Assets/Plugins/iOS/AppsFlyer폴더에 넣는다.- iOS SDK를 정적 라이브러리로 내려받는다.
- 압축을 푼다.
- 모든 파일을
Assets/Plugins/iOS/AppsFlyer폴더에 끌어다 놓는다.