장소 요청 테스트
SDK 구동 이후 장소 요청에 대한 테스트 및 결과를 설명합니다.
테스트 기기 설정
"SDK를 탑재한 앱을 실기기에서 테스트하기 전에 원활한 테스트를 위하여 다음 사항을 체크해 주세요"
- 위치 권한 항상 허용
- ATT 권한 허용
- Fake GPS (Mock Location Provider) 사용금지
- 네트워크 통신이 원활한 상태 (WiFi 연결 상태가 아닌 모바일 데이터 통신 상태 권장)
- 자체 심카드가 꽂혀 있는 기기 이용 (테더링을 제공하거나 테더링 제공 받아 테스트 금지)
테스트 결과
장소 요청 진행 시, PlaceDelegate를 통해 PlengiResponse가 전달됩니다.
PlengiResponse 공통 필드
경고
안내하지 않은 필드들은 테스트용이거나 deprecated 예정이니 사용하지 않는 것을 권장합니다.
| 필드 | 설명 | 상세 |
|---|---|---|
echoCode | 사용자 식별 코드 | Plengi.setEchoCode()로 등록한 값 |
result | 위치 인식 결과 | SUCCESS: 위치 인식 성공 FAIL: 위치 인식 실패 |
errorReason | 실패 사유 | Location Acquisition Fail : 현재 위치 획득 실패Not Allowed Client: 클라이언트 인증 실패 (client_id, client_secret, 패키지명 확인 필요) |
type | 요청 타입 | PLACE: 테스트용 요청PLACE_EVENT: SDK 내부 로직에 따른 요청 |
placeEvent | 인식된 event 타입 | NOT_AVAILABLE: place 확인 불가(area, complex, geofence 등 다른 정보는 있을 수 있음)ENTER: place 진입NEARBY: place 근처 |
위치 인식 성공 시 주요 객체
경고
안내하지 않은 필드들은 테스트용이거나 deprecated 예정이니 사용하지 않는 것을 권장합니다.
경고
모든 필드는 Optional 입니다. nil 체크 후 사용해 주세요.
| 필드 | 설명 |
|---|---|
place | 장소 정보 (매장) |
area | 상권 정보 |
complex | 복합몰 정보 |
geoFence | 지오펜스 정보 |
district | 행정구역 정보 |
location | 기기 위·경도 정보 |
Place
포함된 위·경도는 장소의 위·경도입니다.
accuracy가 threshold보다 큰 경우에는 ENTER, 작은 경우에는 NEARBY로 판정합니다.
// 장소 정보
class Place {
var loplat_id: Int /// ID
var name: String /// 이름
var tags: String /// 관련된 태그
var floor: Int /// 층 정보
var lat: Double /// 장소의 위도
var lng: Double /// 장소의 경도
var accuracy: Double /// 정확도
var threshold: Double /// 임계값
var client_code: String /// 고객사 관리 코드
var category: String /// 카테고리
var category_code: String /// 카테고리 코드
var address: String /// (구) 주소
var address_road: String /// (도로명) 주소
var post: String /// 우편번호
}
client_code 노출 여부 논의 필요
Area
Place 위치(없다면 기기 위치)가 상권 안일 경우, 상권 정보가 장소 인식 결과에 함께 같이 전달됩니다.
포함된 위·경도는 사용자 기기 위치의 위·경도입니다.
// 상권 정보
class Area {
var id: Int /// ID
var name: String /// 이름
var lat: Double /// 기기 위도
var lng: Double /// 기기 경도
/// 지역 (도, 시 단위)
/// - ex) 서울, 경기도, 인천
var tag: String
}
Complex
Place 위치(없다면 기기 위치)가 복합몰 내인 경우, 복합몰 정보가 장소 인식 결과에 함께 같이 전달됩니다.
// 복합몰 정보
class Complex {
var id: Int /// ID
var name: String /// 이름
var branch_name: String /// 지점
var category: String /// 카테고리
var category_code: String /// 카테고리 코드
}
Geofence & Fence
Place 위치(없다면 기기 위치)가 Geofence 내부인 경우, Geofence 정보가 장소 인식 결과에 함께 같이 전달됩니다.
Fence 정보는 Geofence에 포함되어 전달됩니다.
// Geofence 정보
class Geofence {
var lat: Double /// Geofence 중심 위도
var lng: Double /// Geofence 중심 경도
var fences: Array<Fence> /// 하위 fence 리스트
}
// Fence 정보
class Fence {
var gfid: Int /// ID
var dist: Double /// 중심 좌표와 사용자 위치 간 거리
var name: String /// 이름
var client_code: String /// 고객사 관리 코드
}
District
Place 위치(없다면 기기 위치)가 특정 행정구역에 속하는 경우, 행정 구역 정보가 장소 인식 결과에 함께 같이 전달됩니다.
// 행정구역 정보
class District {
var lv0_code: String /// 국가 코드, code만 지원
var lv1_code: String /// 시, 도 코드
var lv1_name: String /// 시, 도 이름
var lv2_code: String /// 시, 구, 군 코드
var lv2_name: String /// 시, 구, 군 이름
var lv3_code: String /// 읍, 동, 면 코드
var lv3_name: String /// 읍, 동, 면 이름
}