자주하는질문 (FAQ)

UserHabit에 대해 자주하는 질문들입니다. 찾으시는 질문이 없으면 help@userhabit.io으로 문의해주시기 바랍니다.


일반

UserHabit은 어떤 플랫폼을 지원하나요?

현재 안드로이드와 iOS 네이티브 앱을 지원하고 있습니다. 추후 각 플랫폼의 하이브리드앱에 대한 지원을 검토중이며 연구 개발중에 있습니다.

UserHabit은 어떤 방식으로 동작하나요?

앱 내에 삽입하는 소스코드 라이브러리인 SDK와 분석 결과를 보고서 형태로 제공하는 웹페이지로 구성됩니다. UserHabit SDK가 심어진 앱을 배포하면, 앱 사용자의 행동 데이터를 실시간으로 수집합니다. 이렇게 수집된 데이터를 분석한 결과를 웹페이지에서 바로 확인할 수 있습니다.

팀에 개발자가 없을 경우 도움을 받을 수 있나요?

네, 물론입니다. 문의하기를 통해 서비스 소개 및 필요한 지원내용을 작성해 보내주시면 담당 개발자의 연락을 통해 도움을 받으실 수 있습니다. 서비스의 업데이트 및 지속적으로 원활한 서비스 사용을 위해서 고객지원이 포함된 유료플랜을 사용하실 것을 권해 드립니다.

구글 애널리틱스(GA)와 어떤 차이점이 있나요?

첫째, 이벤트를 정의할 필요가 없어 SDK 통합 과정이 굉장히 쉽고 빠릅니다. 따라서 별도의 설계나 학습 과정 없이 바로 분석을 시작할 수 있습니다.둘째, 단순히 트래픽이 아니라, 사용자의 구체적인 행동 데이터를 수집하므로 단순히 앱의 현황 파악이나 문제를 인지하는 수준이 아니라 해결에 대한 인사이트도 얻을 수 있습니다. 셋째, 어려운 숫자만을 보여주는 것이 아니라, 직관적인 형태로 시각화된 정보를 제공하므로 전문가가 아니라도 누구나 쉽고 빠르게 앱 사용자에 대한 인사이트를 얻을 수 있습니다.


데이터 및 성능

데이터는 실시간으로 수집되나요?

앱이 시작되거나 종료될 때 데이터를 전송, 수집하는 방식으로 완전한 실시간은 아니지만, 실시간에 가까운 데이터를 얻을 수 있습니다.

앱이 느려지거나 하지는 않을까요?

비디오 녹화방식을 사용하는 다른 솔루션과 달리 데이터만을 수집하므로 앱의 성능에 미치는 영향이 훨씬 적습니다.

사용자의 데이터 용량을 사용하지 않나요?

데이터 수집을 위해 Userhabit 서버와 통신하는 데에 데이터 용량이 사용됩니다. 단, 주로 text로 이루어진 정보이기 때문에 평균 수십 kb 정도의 작은 크기의 데이터를 보내므로 데이터 사용이 과다하지 않습니다. 또한 동영상 녹화 방식을 사용하지 않기 때문에 데이터 용량에 대한 부담이 훨씬 덜합니다.

다수의 사용자 행동 패턴을 분석하나요? 한 명의 사용자의 사용성을 파악하나요?

둘 다 가능합니다. 실제 사용자의 데이터를 모두 수집하여 화면분석과 경로분석에서 다수의 사용자 행동 패턴을 보여주고 있으며, 세션 리플레이 기능을 통해 한 명의 사용자 이용흐름을 리플레이 해 보며 한 사람의 사용흐름도 확인할 수 있습니다.

스크롤 방식의 동적인 앱의 경우에도 수집이 가능한가요?

activity나 UI View Controller 외의 화면을 구분하고 싶은 경우에는 subView 기능을 사용하시면 됩니다. 스크롤과 관련된 UI 추적은 현재 연구 개발중입니다.

세션(Session)은 어떤 기준으로 측정되는 지표인가요?

세션은 사용자가 앱을 사용한 시점부터 종료할 때 까지를 한 세션이라고 정의하며, 다른 분석툴에서의 세션과 같은 개념입니다. 기본적으로 사용자가 앱을 종료하거나 백그라운드로 이동 상태일 때 10초 뒤에 세션을 종료시키며 이 값은 언제든지 수정 가능합니다. [가이드 바로가기: 안드로이드, iOS]

스크린(Screen)은 어떤 단위인가요?

안드로이드: Activity를 스크린의 단위로 잡고 있습니다.
iOS: UIViewController를 스크린의 단위로 잡고 있습니다.

안드로이드와 iOS 모두 SDK에서 제공하는 setScreen 기능을 통해 사용자 기준의 스크린을 정의할 수 있습니다.

화면 캡쳐 타이밍이 언제인가요?

안드로이드: 안드로이드 내부적으로 draw 작업이 발생되는 시점으로 부터 1초 뒤에 화면을 캡쳐하고 정보를 전송합니다.
iOS: UIViewController의 life cycle중 viewDidAppear 호출 직전에 화면을 캡쳐 하고, 정보를 전송합니다.

오브젝트 캡쳐 타이밍은 언제인가요?

안드로이드: 개발자 모드에서 최초 화면 진입시 화면 캡쳐 작업과 함께 object들을 캡쳐하고 일부 수집하지 못한 object들은 사용자에 의해 터치 한 시점에서 이미지 캡쳐와 관련 정보를 수집합니다.

iOS : 개발자 모드에서 실행중에 touch event가 있는 오브젝트를 터치 한 시점에서 이미지 캡쳐를 하고, 정보를 전송합니다.

사용자 정보 전송은 언제 하나요?

안드로이드: iOS와 전반적으로 동일하게 사용자 정보를 전송합니다. 안드로이드에 경우 해당 세션에서 전송 이전에 강제 종료를 하게 되면 별도에 서비스를 통해 세션을 전송하고 종료하게 됩니다.
iOS: 앱이 시작될때, 이전에 전송하지 못한 데이터가 있는 경우에는 이전 세션 정보를 함께 전송합니다.
앱 실행 중, 이전에 캡쳐하지 못한 스크린 혹은 오브젝트가 있는 경우 캡쳐하고 정보를 전송합니다.
앱 종료 후, 기본 전송 대기 시간인 10초, 혹은 사용자 지정 시간 이후 session data를 전송합니다.
세션 데이터 전송 직전 혹은 전송 중에 앱이 강제 종료 되면 세션 정보를 전송하지 않고, 이후 세션이 시작 됐을때 전송합니다.
화면과 오브젝트 캡쳐는 개발자 모드에서만 수행되며, 제품 모드에서는 캡쳐와 이미지 전송 모두 실행하지 않습니다.

UserHabit과 GA를 동시에 사용할 수 있나요?

Android, iOS 모두 다른 서비스나 framework와 사용하실 수 있습니다.



문제해결

안드로이드에서 일부 오브젝트가 수집되지 않습니다

유저해빗 안드로이드에서 현재 수집 하고 있는 오브젝트들은 모두 ID 값이 지정되어 있어야 합니다. 또한 해당 오브젝트에 다음과 같은 이벤트 리스너가 추가되어야 합니다.(OnClickListener, OnTouchListener, OnLongClickListener)

안드로이드에서 동적으로 추가되는 오브젝트들도 분석하고 싶습니다.

화면 내의 오브젝트는 화면이 최초로 실행이 되거나 사용자가 해당 오브젝트를 터치하는 경우에 자동으로 수집됩니다. 일부 동적으로 추가되는 오브젝트의 경우에도 자동으로 데이터를 수집하지만 ID값이 지정되지 않는 경우가 많아 ‘알 수 없는 오브젝트’로 보여집니다.

'알 수 없는 오브젝트'에 대한 정확한 분석 결과를 얻으시려면 다음과 같이 오브젝트에 동적으로 ID를 추가하시면 됩니다.

ids.xml( ids.xml 파일이 없을 경우 추가해 주세요. ) 파일에 아래와 같이 ID 값을 생성합니다.
<?xml version=""1.0"" encoding=""utf-8""?>
<resources>
    <item name=“dynamic_view_id"" type=""id""/>
</resources>
그리고 실제 코드에서 아래와 같이 입력해 주세요.
mDynamicView.setId(R.id.dynamic_view_id);

안드로이드에서 세션이 수집되지 않습니다.

앱이 백그라운드로 넘어가서 일정 시간이 흐르거나 강제종료를 하게 되면 해당 세션을 전송하게 됩니다. 일부 세션이 전송이 되지 않는 경우에 몇 가지 경우를 확인하세요

  1. system.exit() 함수를 사용할 경우
  2. OnStart,OnStop 주기가 상이 한 경우
  3. 인터넷이 연결이 되지 않는 경우
  4. 5회 이상 전송이 실패한 경우
  5. 개발자용 키로 제품 모드의 데이터를 확인한 경우 혹은 그 반대에 경우
안드로이드에서 'You need v4 support library v.22.2.0 and up in order to use Userhabit.' 메세지가 뜹니다.

Android v4 support library를 22.2 이상을 사용하고 있는데 'You need v4 support library v.22.2.0 and up in order to use Userhabit.' 메세지가 나올 경우, 프로가드로 인하여 해당 라이브러리를 찾지 못해서 발생하는 문제입니다.
아래와 같이 유저해빗에서 사용하는 오픈소스를 추가하세요.

-dontwarn android.support.**
-dontwarn org.apache.http.**
-keep class android.support.v4.** { *; }
-keep interface android.support.v4.** { *; }
-keep class org.apache.** { *; }
-keep interface org.apache.http.** { *; }

안드로이드에서 프로가드와 관련된 에러가 발생합니다.

위 문제와 같은 방법으로 해결할 수 있습니다.

iOS에서 framework not found가 나옵니다.

framework를 찾을 수 없다는 메세지가 나오는 경우, project setting/framework search path/framework 파일의 경로를 입력하시면 해결 됩니다.


개인정보 및 보안

개인정보 문제는 없을까요?

사용자의 민감한 정보를 포함할 수 있는 스크린샷 수집기능은 개발자 모드를 통해서만 가능합니다. 개발자용 API키를 사용해 스크린샷을 수집하신 후 제품 API키로 변경해 실 사용자들에게 앱을 배포하시기 바랍니다.

사용자에게 데이터 수집 동의를 받아야 하나요?

단말기에 대한 일반적인 정보 외에는 개인을 식별할 수 있는 정보는 전혀 수집하지 않으며 민감한 정보는 블라인드 처리가 가능하기 때문에 사용자에게 따로 동의를 구하는 과정을 거치지 않아도 됩니다. 다시 말해 앱 퍼블리셔에게 개인 정보를 수집하지 않을 권한과 책임이 있으며, 만약 개인정보나 민감한 정보를 수집하고자 한다면 사용자들의 동의를 구해야 합니다.

사용자에게 데이터 수집에 대한 사실을 알려야 할까요?

UserHabit은 사용자를 식별할 수 있는 정보를 수집하지 않으며, 민감한 정보를 제외할 수 있는 기능을 제공하고 있습니다. 따라서 앱 운영업체들이 이 기능을 활용하여 개인 정보를 수집하지 않기를 권장합니다. 이 경우 아무런 문제가 없지만, 사용자가 자신의 데이터를 수집한다는 사실을 알게 되면 부정적으로 느낄 수 있기 때문에 되도록이면 사용자에게 데이터를 수집한다는 사실을 알리지 않기를 권장합니다. 만약 개인정보나 민감한 정보를 수집하고자 한다면 사용자들의 동의를 구해야 합니다.

가격

유저해빗을 무료로 사용해볼 수 있나요?

유저해빗은 무료 플랜과 유료 플랜을 사용량에 제한을 두고 구분하여 제공하고 있습니다. 무료 플랜에서는 유저해빗이 제공하고 있는 대시보드, 화면분석, 사용흐름 분석, 리플레이 등의 모든 기능을 무료로 사용하실 수 있습니다. 다만 50만 스크린뷰까지 사용하실 수 있는 제한이 있기 때문에, 추가적으로 더 사용하고 싶으신 고객은 유료 플랜으로 업그레이드하여 사용하실 수 있습니다.

유료 플랜은 제한 없이 사용할 수 있나요?

유료 플랜을 신청해 스크린뷰에 제한없이 사용하실 수 있습니다. 월 2,000만 스크린뷰까지 Startup plan의 기본 가격으로 사용하실 수 있으며 이후 추가 스크린뷰에 대해 추가 과금됩니다. 또한 추가적으로 SDK 연동, 컨설팅 등을 지원해드리고 있습니다. 무료 플랜으로 테스트하여 사용해 보신 후 유료 플랜으로 전환하여 넉넉하게 사용하시면 됩니다.