자주 묻는 질문
해당 페이지는 SDK를 적용, 실행, 테스트하면서 발생하는 문제들과, 기타 문제들을 정리해놓은 페이지입니다.
해당 페이지에 나와 있지 않은 문제가 발생하거나, 질문이 있으실 경우 dev@loplat.com 으로 메일 부탁드립니다.
Q. SDK 용량은 어떻게 되나요?
버전 2.1.1.6.1 기준으로 289KB 입니다.
버전 1.4.4 기준으로 2.75MB 입니다.
Q. 배터리 사용량은 어떻게 되나요?
위치 옵션을 항상 허용 (백그라운드에서도 동작 / 앱을 종료시에도 동작) 으로 하고, 배터리 잔량이 100%에서 SDK가 탑재된 앱을 설치 / 실행 후 여러가지 디바이스로 사용자가 출근 ~ 퇴근 (약 12시간)까지 사용했을 때, 결과는 아래와 같습니다.
SDK 2.1.1.6.1 탑재한 Galaxy S22(Android 13)로 테스트했을 때 평균 18.5mAh (0.5%) 소모
상대 배터리 사용량을 역산하여 계산하 였을 때 평균 0.8% 소모
안드로이드 대비 배터리를 더 소모하는 이유 : iOS에서는 OS 정책상 와이파이 스캔이 불가능하므로, 와이파이 스캔 대비, 배터리 소모가 비교적 큰 가속도센서 + BLE 스캔 + GPS 값을 통해 사용자의 움직임을 감지합니다.
위의 테스트 결과는, 사용자의 행동 패턴 / 기기 / OS 버전에 따라 달라질 수 있습니다.
Q. 사용하는 권한은 어떻게 되나요?
android.permission.ACCESS_COARSE_LOCATION
,android.permission.ACCESS_FINE_LOCATION
- 사용자의 현재 위치를 가져오기 위해 사용합니다.
- 안드로이드 6.0 이상부터 와이파이 스캔시 필요한 권한입니다.
android.permission.ACCESS_NETWORK_STATE
- SDK 내부적으로 인터넷 연결 상태를 확인하기 위해 사용합니다.
android.permission.ACCESS_WIFI_STATE
,android.permission.CHANGE_WIFI_STATE
- 와이파이 스캔 시 사용합니다.
android.permission.INTERNET
- 로플랫 서버와 통신할 때 사용합니다.
android.permission.RECEIVE_BOOT_COMPLETED
- 디바이스가 재부팅이 되었을 때, 사용자가 앱을 다시 실행하지 않더라도 자동으로 지속적인 위치 트래킹을 위해 사용합니다.
com.google.android.gms.permission.AD_ID
- Google Play 서비스 광고 ID를 사용합니다.
android.permission.FOREGROUND_SERVICE
- 안드로이드 8.0 이상부터 위치 획득을 위한 서비스를 실행할 때 사용합니다.
android.permission.POST_NOTIFICATIONS
- targetSdkVersion 33 이상일 경우 알림을 띄우기 위해 사용합니다.
android.permission.ACCESS_BACKGROUND_LOCATION
- Android 10 이상일 경우 백그라운드 위치 액세스(위치-항상허용)를 하기 위해 추가해야 합니다.
android.permission.ACTIVITY_RECOGNITION
- Android 10 이상부터 사용자 행동 기반으로 효율적으로 획득하기 위해 사용합니다.
- Android 10 미만 OS 버전들은 https://developers.loplat.com/android/#_1 참고해주세요
Access Wi-Fi Information
- 현재 연결된 와이파이 정보를 가져오기 위해 사용합니다.
- iOS 12 이상부터 연결된 와이파이 정보를 가져오려면 해당 권한이 필요합니다.
Background Modes - Location Updates
- 백그라운드에서 사용자의 위치를 가져오기 위해 사용합니다.
- 사용자가 앱을 강제종료 했을 때, 시스템에 의해 되살아나는 로직을 사용하기 위해 사용합니다.
Background Modes - Background fetch
- 사용자가 앱을 강제종료 했을 때, 시스템에 의해 되살아나는 로직을 사용하기 위해 사용합니다.
- 앱을 빈번하게 사용할 수록 백그라운드로 자주 되살아 납니다.
Q. 지원 가능 OS 버전은 각각 어떻게 되나요?
minSdkVersion
19
컴파일 가능 iOS 버전 : iOS 9.0 이상
Q. 안드로이드에서 WiFi가 꺼져 있어도 WiFi 스캔이 가능한가요?
기본적으로 WiFi가 꺼져 있더라도 WiFi 스캔이 가능합니다. 만약 WiFi 스캔이 안된다면 아래의 설정을 확인해주세요.
- GPS 설정이 켜져있어야 함
- 앱이 사용자로부터 위치 권한을 득해야 함
- 설정 -> 정확도 향상 or 위치 서비스 검색 -> Wi-Fi 찾기 (와이파이가 꺼져있을 때 와이파이 스캔을 가능하게 함, 아래 사진 참조)
과거 버전 | 최신 버전(Android12 이상) |
---|---|
Q. iOS에서 블루투스가 꺼져 있어도 비콘 스캔이 가능한가요?
블루투스와 위치서비스가 켜져있어야 비콘 스캔을 할 수 있습니다.
(위치서비스만 켜져있을 경우 WiFi 연결 정보 및 GPS로만 위치를 인식합니다.)
iOS 11 이상부터 기본적으로 제어센터에서 블루투스의 스위치를 꺼도 연결해제 상태로 변경될 뿐, 실제 블루투스 기능은 꺼지지 않습니다.
제어 센터에서 블루투스를 껐을 경우엔 상관이 없으나, 환경설정에서 블루투스를 끌 경우에는 블루투스 기능 자체가 꺼지므로, 비콘 스캔을 할 수 없습니다.
Q. 한 장소에서 얼마나 머물러야 장소 인식 이벤트가 발생하나요?
최대 5분
최대 6분
Q. iOS 앱스토어에 아카이브 하고 올리려고 하니, 아카이브가 되지 않습니다.
iOS SDK에는 기본적으로 시뮬레이터용 x86_64, 실제 기기용 arm64 아키텍쳐가 포함되어 있습니다. 오류가 난다면, 시뮬레이터용 바이너리가 포함되어 있는 경우이니, Cocoapods를 사용하지 않고 직점 프레임워크 파일을 추가하시는 고객사에 한해서 아래의 명령줄을 입력해주신 후, 다시 빌드 및 아카이브 해주세요.
$ cd ~/MiniPlengi.framework/
$ lipo -remove i386 MiniPlengi -o MiniPlengi && lipo -remove x86_64 MiniPlengi -o MiniPlengi
Q. iOS 앱스토어 심사에서 반려됐습니다. 심사 방법이 뭔가요?
SDK에서 위치 기능을 사용하기 때문에 앱의 Info.plist
파일에 아래의 항목이 추가되어야합니다.
iOS 10 이상부터는 정책 변경에 따라 사용자의 개인정보를 사용하는 경우, 아래의 사용자 피드백 문구를 제공해야합니다.
<?xml version="1.0" encoding="UTF-8">
<!DOCTYPE plist PUBLIC "=//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- 중간 생략 -->
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>앱에서 위치 기능을 사용하는 이유를 적어주세요.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>앱에서 위치 '항상 허용' 을 사용하는 이유를 적어주세요,</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>앱에서 위치 '앱을 사용하는 동안' 을 사용하는 이유를 적어주세요.</string>
<!-- 이하 생략 -->
</dict>
</plist>
그리고 SDK 코드에는 loplat X 기능과 유저 데이터 식별을 위하여 IDFA(Identifier for advertisement) 를 사용하는 코드가 포함되어 있습니다.
iOS 14 이상 버전에서는 IDFA를 수집하기 위해서는 App Tracking Transparency 프레임워크의 적용이 반드시 필요합니다. (iOS 가이드 참고)
서비스에서 loplat X를 사용하지 않고, 유저 식별을 위한 IDFA도 수집하지 않는다면 IDFA가 빠진 버전의 SDK를 배포를 위하여 dev@loplat.com으로 연락 부탁드립니다.
(App Store Connect - 앱이 수집하는 개인정보 탭 - 기기 ID 식별자를 체크하지 않는 경우)