Webview(웹뷰) 환경에서 이벤트를 전송할 때, 왜 Web SDK를 사용하는 게 아니라 App SDK로 보내야하나요?
질문
Webview(웹뷰) 환경에서 이벤트를 전송할 때, 왜 Web SDK를 사용하는 게 아니라 App SDK로 보내야하나요?
답변
앱 내에서 발생한 이벤트는 웹뷰이더라도 앱 이벤트로 인식시킬 수 있도록 Javascript Interface를 통해 Native SDK에서 인식될 수 있도록 처리하시기를 권장합니다. 가장 큰 이유는 세션 및 인앱메시지 동작과 관련되어있습니다.
1. 세션 수 집계
앱에서 init 및 이벤트를 발생시키다가 웹뷰 이벤트를 Web SDK로 전송하게 되면 다음 예시와 같이 플랫폼이 끊기게 되고, 세션도 별도로 찍히게 되어, 세션 수 집계에 영향을 미칠 수 있습니다.
2. 세션 timeout 시간
플랫폼 마다 session timeout 시간이 다르게 되어있습니다. (디폴트값 기준 - iOS: foreground를 벗어난 즉시 / Android: 10초 / Web: 30분)
유저가 하나의 세션 안에서 native 이벤트 , 웹뷰 이벤트를 했을 때 유저 세션 시작 기반 메시지를 발송 및 타겟 설정하는 등의 과정에 영향을 줄 수 있습니다.
(예: Android App 세션 시작 → App 이벤트 발생 → WebView이벤트 Web에서 발생 → 백그라운드 10초 뒤 다시 돌아왔을 때 Web 기준 timeout 적용으로 세션이 재시작되지 않을 수 있음)
3. 인앱메시지 동작
세션을 재시작할 때 발송될 수 있는 인앱메시지의 목록 (payload)을 받아오게 되는데, 서로 다른 세션 timeout의 영향으로 의도한 대로 인앱메시지가 발송되지 않을 수 있습니다.
또한, Web에서만 띄우려는 인앱메시지를 세팅한 경우 앱 내 Webview가 Web SDK에서 처리되고 있다면 앱 내 Webview 영역에서도 뜨게 될 수 있습니다.
이 외에도 브레이즈에서 기본적으로 Javascript Bridge를 지원하지 않기 때문에 Web SDK 설치 만으로 Web View 영역 이벤트 수집이 보장되기 어려울 수 있다는 점, Web SDK 만으로는 푸시 토큰을 수집할 수 없다는 점 등의 이유로
App SDK 설치 후 Webview 영역에서 발생한 유저 행동을 Javascript Interface를 구현하시어 Native 단에서 Custom event / Custom attribute를 수집하시는 것을 권장 드리고 있습니다.
참고할 만한 자료
-