위치 사용
앱에서 위치 지리적 위치 서비스를 사용하는 방법을 알아봅니다.
Adobe Experience Platform 데이터 수집 위치 서비스 는 위치를 인식하는 모바일 앱이 위치 컨텍스트를 이해할 수 있도록 해주는 지리적 위치 서비스입니다. 이 서비스는 유연한 관심 영역(POI) 데이터베이스를 동반하는 풍부하고 사용하기 쉬운 SDK 인터페이스를 사용합니다.
전제 조건
- 모든 패키지 종속성은 Xcode 프로젝트에 있습니다.
- AppDelegate에 등록된 확장입니다.
- 개발 appId를 사용하도록 MobileCore를 구성했습니다.
- 가져온 SDK.
- 위의 변경 사항으로 앱을 빌드하고 실행했습니다.
학습 목표
이 단원에서는 다음과 같은 작업을 수행합니다
- Places 서비스의 관심 영역을 정의하는 방법을 이해합니다.
- Places 확장으로 태그 속성을 업데이트합니다.
- 스키마를 업데이트하여 지리적 위치 이벤트를 캡처합니다.
- Assurance에서 설정의 유효성을 검사합니다.
- 앱을 업데이트하여 Places 확장을 등록합니다.
- 앱의 위치 서비스에서 지리적 위치 추적을 구현합니다.
설정
Places 서비스가 앱 내에서 및 Mobile SDK 내에서 작동하려면 일부 설정을 수행해야 합니다.
위치 정의
Places 서비스에서 일부 관심 영역을 정의합니다.
- 데이터 수집 UI에서 위치를 선택합니다.
- 
                  - 컨텍스트 메뉴에서 라이브러리 관리를 선택합니다.
   
- 라이브러리 관리 대화 상자에서 새로 만들기를 선택합니다.
- 라이브러리 만들기 대화 상자에서 이름(예: Luma)을 입력하십시오.
- 확인을 선택합니다.
   
- 라이브러리 관리 대화 상자를 닫으려면 닫기를 선택합니다.
- POI 관리로 돌아가서 POI 가져오기를 선택하십시오.
- 위치 가져오기 대화 상자에서 시작을 선택합니다.
- 라이브러리 목록에서 Luma을(를) 선택합니다.
- 다음을 선택합니다.
   
- Luma POIs ZIP 파일을 다운로드하고 컴퓨터의 위치에 추출합니다.
- 위치 가져오기 대화 상자에서 추출한 luma_pois.csv파일을 CSV 파일 선택 - 파일 드래그 앤 드롭에 끌어다 놓습니다. 유효성 검사 성공 - CSV 파일의 유효성을 검사했습니다가 표시됩니다.
- 가져오기 시작을 선택합니다. 성공 - 6개의 새 POI를 추가함이 표시됩니다.
- 완료를 선택합니다.
- POI 관리에서 6개의 새로운 Luma 스토어가 목록에 추가됩니다. 
                  
   
위치 확장 설치
- 
                  태그(으)로 이동하여 모바일 태그 속성을 찾은 다음 속성을 엽니다. 
- 
                  확장을 선택하십시오. 
- 
                  카탈로그를 선택하십시오. 
- 
                  Places 확장을 검색합니다. 
- 
                  확장을 설치합니다.   
- 
                  확장 설치 대화 상자에서: - Luma라이브러리 선택 목록에서 을(를) 선택합니다.
- 작업 라이브러리(예: 초기 빌드)를 선택했는지 확인하십시오.
- 라이브러리에 저장에서 라이브러리 및 빌드에 저장을 선택합니다.
   
 
- 
                  라이브러리가 다시 빌드되었습니다. 
스키마 확인
스키마 만들기에 정의된 대로 스키마에 POI 및 지리적 위치 데이터를 수집하는 데 필요한 필드 그룹 및 클래스가 포함되어 있는지 확인합니다.
- 데이터 수집 인터페이스로 이동하여 왼쪽 레일에서 스키마를 선택합니다.
- 상단 표시줄에서 찾아보기를 선택합니다.
- 스키마를 선택하여 엽니다.
- 스키마 편집기에서 소비자 경험 이벤트를 선택합니다.
- POI 인터랙션 및 지리적 위치 데이터를 캡처할 개체 및 필드가 있는 placeContext 개체가 표시됩니다.
   
태그 속성 업데이트
태그에 대한 위치 확장 기능은 지리적 위치 이벤트를 모니터링하고 이러한 이벤트를 기반으로 작업을 트리거할 수 있는 기능을 제공합니다. 이 기능을 사용하면 앱에서 구현해야 하는 API 코딩을 최소화할 수 있습니다.
데이터 요소
먼저 여러 데이터 요소를 만듭니다.
- 
                  데이터 수집 UI에서 태그 속성으로 이동합니다. 
- 
                  왼쪽 레일에서 데이터 요소를 선택합니다. 
- 
                  데이터 요소 추가를 선택합니다. 
- 
                  데이터 요소 만들기 화면에서 Name - Entered과(와) 같은 이름을 입력하십시오.
- 
                  확장 목록에서 위치를 선택합니다. 
- 
                  데이터 요소 형식 목록에서 이름을(를) 선택하십시오. 
- 
                  TARGET 아래에서 현재 POI를 선택하십시오. 
- 
                  라이브러리에 저장을 선택합니다. 
   
- 
                  아래 표의 정보를 사용하여 4~8단계를 반복하여 추가 데이터 요소를 만듭니다. table 0-row-4 1-row-4 2-row-4 3-row-4 4-row-4 5-row-4 이름 확장 기능 데이터 요소 유형 TARGET Name - Exited장소 이름 마지막으로 종료한 POI Category - Current장소 카테고리 현재 POI Category - Exited장소 카테고리 마지막으로 종료한 POI City - Current장소 구/군/시 현재 POI City - Exited장소 구/군/시 마지막으로 종료한 POI 다음 데이터 요소 목록이 있어야 합니다.   
규칙
그런 다음 이러한 데이터 요소로 작업할 규칙을 정의합니다.
- 
                  태그 속성의 왼쪽 레일에서 규칙을 선택합니다. 
- 
                  규칙 추가를 선택합니다. 
- 
                  규칙 만들기 화면에서 규칙 이름(예: POI - Entry)을 입력하십시오.
- 
                  - 확장 목록에서 위치를 선택하고 이벤트 유형 목록에서 POI 입력을 선택합니다.
- 변경 내용 유지를 선택합니다.
   
 
- 
                  - 
                      확장 목록에서 Mobile Core를 선택하고 작업 유형에서 데이터 첨부를 선택합니다. 이 작업은 페이로드 데이터를 첨부합니다. 
- 
                      JSON 페이로드에 다음 페이로드를 붙여 넣습니다. code language-json { "xdm": { "eventType": "location.entry", "placeContext": { "geo": { "city": "{%%City - Current%%}" }, "POIinteraction": { "poiDetail": { "name": "{%%Name - Current%%}", "category": "{%%Category - Current%%}" }, "poiEntries": { "value": 1 } } } } }{%% ... %%}데이터- 
                      변경 내용 유지를 선택합니다. 
   
 
- 
                      
- 
                  - 확장 목록에서 Adobe Experience Platform Edge Network을 선택하고 Edge Network으로 이벤트 전달을 선택합니다. 이 작업을 수행하면 이벤트 및 추가 페이로드 데이터가 Platform Edge Network에 전달됩니다.
- 변경 내용 유지를 선택합니다.
 
- 
                  규칙을 저장하려면 라이브러리에 저장을 선택합니다.   
다른 규칙을 만들어 보겠습니다
- 
                  규칙 만들기 화면에서 규칙 이름(예: POI - Exit)을 입력하십시오.
- 
                  - 확장 목록에서 위치를 선택하고 이벤트 유형 목록에서 POI 종료를 선택합니다.
- 변경 내용 유지를 선택합니다.
 
- 
                  - 
                      확장 목록에서 Mobile Core을 선택하고 작업 유형 목록에서 데이터 첨부를 선택합니다. 
- 
                      JSON 페이로드에 다음 페이로드를 붙여 넣습니다. code language-json { "xdm": { "eventType": "location.exit", "placeContext": { "geo": { "city": "{%%City - Exited%%}" }, "POIinteraction": { "poiExits": { "value": 1 }, "poiDetail": { "name": "{%%Name - Exited%%}", "category": "{%%Category - Exited%%}" } } } } }
- 
                      변경 내용 유지를 선택합니다. 
 
- 
                      
- 
                  - 확장 목록에서 Adobe Experience Platform Edge Network을 선택하고 Edge Network으로 이벤트 전달을 선택합니다.
- 변경 내용 유지를 선택합니다.
 
- 
                  규칙을 저장하려면 라이브러리에 저장을 선택합니다.   
태그의 모든 변경 사항이 게시되도록 하려면
- 빌드할 라이브러리로 초기 빌드를 선택합니다.
- 빌드를 선택합니다.
   
Assurance에서 설정 유효성 검사
Assurance에서 설정의 유효성을 검사하려면:
- 
                  Assurance UI로 이동합니다. 
- 
                  왼쪽 레일에서 아직 사용할 수 없는 경우 왼쪽 레일에서 구성을 선택하고 - 
                  저장을 선택합니다. 
- 
                  왼쪽 레일에서 맵 및 시뮬레이션을 선택합니다. 
- 
                  지도를 POI 중 하나의 위치로 이동합니다. 
- 
                  - 
                  POI를 선택합니다. 
- 
                  팝업에서   
- 
                  왼쪽 레일에서 이벤트를 선택하면 시뮬레이션한 이벤트가 표시됩니다.   
앱의 위치 구현
이전 단원에서 설명한 대로 모바일 태그 확장을 설치하면 구성만 제공됩니다. 그런 다음 Places SDK을 설치하고 등록해야 합니다. 이 단계가 명확하지 않으면 SDK 설치 섹션을 검토하십시오.
- 
                  Xcode에서 패키지 종속 항목의 패키지 목록에 AEP Places이(가) 추가되었는지 확인하십시오. Swift 패키지 관리자를 참조하세요. 
- 
                  Xcode 프로젝트 탐색기에서 Luma > Luma > AppDelegate(으)로 이동합니다. 
- 
                  AEPPlaces이(가) 가져오기 목록의 일부인지 확인하십시오.code language-swift import AEPPlaces
- 
                  Places.self이(가) 등록 중인 확장 배열의 일부인지 확인하십시오.code language-swift let extensions = [ AEPIdentity.Identity.self, Lifecycle.self, Signal.self, Edge.self, AEPEdgeIdentity.Identity.self, Consent.self, UserProfile.self, Places.self, Messaging.self, Optimize.self, Assurance.self ]
- 
                  Xcode 프로젝트 탐색기에서 Luma > Luma > Utils > MobileSDK(으)로 이동하여 func processRegionEvent(regionEvent: PlacesRegionEvent, forRegion region: CLRegion) async함수를 찾습니다. 다음 코드를 추가합니다.code language-swift // Process geolocation event Places.processRegionEvent(regionEvent, forRegion: region)이 Places.processRegionEventAPI는 지리적 위치 정보를 Places 서비스에 전달합니다.
- 
                  Xcode의 프로젝트 탐색기에서 Luma > Luma > Views > Location > GeofenceSheet(으)로 이동합니다. - 
                      [입력] 단추에 다음 코드를 입력합니다. code language-swift // Simulate geofence entry event Task { await MobileSDK.shared.processRegionEvent(regionEvent: .entry, forRegion: region) }
- 
                      종료 단추에 다음 코드를 입력합니다. code language-swift // Simulate geofence exit event Task { await MobileSDK.shared.processRegionEvent(regionEvent: .exit, forRegion: region) }
 
- 
                      
- 
                  Android Studio에서 aepsdk-places-android이(가) Android:app V자 축소 Gradle Scripts - 
                  Android Studio 프로젝트 탐색기에서 Android - 
                  com.adobe.marketing.mobile.Messaging이(가) 가져오기 목록의 일부인지 확인하십시오.import import com.adobe.marketing.mobile.Places
- 
                  Places.EXTENSION이(가) 등록 중인 확장 배열의 일부인지 확인하십시오.code language-kotlin val extensions = listOf( Identity.EXTENSION, Lifecycle.EXTENSION, Signal.EXTENSION, Edge.EXTENSION, Consent.EXTENSION, UserProfile.EXTENSION, Places.EXTENSION, Messaging.EXTENSION, Optimize.EXTENSION, Assurance.EXTENSION )
- 
                  Android Studio 프로젝트 탐색기에서 Android suspend fun processGeofence(geofence: Geofence?, transitionType: Int)함수를 찾습니다. 다음 코드를 추가합니다.code language-kotlin // Process geolocation event Places.processGeofence(geofence, transitionType)이 Places.processRegionEventAPI는 지리적 위치 정보를 Places 서비스에 전달합니다.
- 
                  Android Studio 프로젝트 탐색기에서 Android - 
                      [입력] 단추에 다음 코드를 입력합니다. code language-kotlin // Simulate geofence entry event coroutineScope.launch { MobileSDK.shared.processGeofence( region, Geofence.GEOFENCE_TRANSITION_ENTER ) }
- 
                      종료 단추에 다음 코드를 입력합니다. code language-kotlin // Simulate geofence entry event coroutineScope.launch { MobileSDK.shared.processGeofence( region, Geofence.GEOFENCE_TRANSITION_EXIT ) }
 
- 
                      
앱을 사용하여 유효성 검사
앱의 지리적 위치 기능을 확인하려면:
- 
                  장치 또는 시뮬레이터에서 앱을 엽니다. 
- 
                  위치 탭으로 이동합니다. 
- 
                  맵을 이동하고(드래그) 파란색 가운데 원이 POI 중 하나(예: 런던) 위에 있는지 확인합니다. 
- 
                  누르기   
- 
                  POI의 레이블을 탭하여 주변 POI 시트를 엽니다.   
- 
                  시작 또는 종료 단추를 눌러 앱에서 지오펜스 시작 및 지오펜스 종료 이벤트를 시뮬레이션합니다.   
- 
                  Assurance UI에 이벤트가 표시됩니다. 이벤트 및 위치 서비스 이벤트에서 모두. 
- 
                  위치 탭으로 이동합니다. 
- 
                  지오펜스 사용 및/또는 시뮬레이션을 선택합니다. 
- 
                  나타나는 빨간색 원 안의 아무 곳이나 탭합니다.   
- 
                  시작 또는 종료 단추를 눌러 앱에서 지오펜스 시작 및 지오펜스 종료 이벤트를 시뮬레이션합니다.   
- 
                  Assurance UI에 이벤트가 표시됩니다. 
다음 단계
이제 앱에서 지리적 위치 기능에 더 많은 기능을 추가하려면 모든 도구가 있어야 합니다. 이벤트를 Edge Network으로 전달했으므로 Experience Platform에 대한 앱을 설정한 후에는 앱에 사용된 프로필에 대해 경험 이벤트가 표시되는 것을 볼 수 있습니다.
이 자습서의 Journey Optimizer 섹션에서 여정을 트리거하는 데 경험 이벤트를 사용할 수 있습니다(Journey Optimizer으로 푸시 알림 및 인앱 메시지 참조). 예를 들어 앱 사용자가 실제 스토어의 geofence에 들어오면 일부 제품 프로모션과 함께 푸시 알림을 전송하는 일반적인 사례입니다.
앱에 대한 지리적 위치 기능의 이러한 구현으로 코드가 최소화됩니다. 태그 속성에서 정의한 Places 서비스, 데이터 요소 및 규칙은 대부분의 기능을 제공합니다. 또는 채워진 Edge.sendEvent 개체가 포함된 XDM 페이로드와 함께   API(자세한 내용은 이벤트placeContext 참조)를 사용하여 앱에서 직접 동일한 기능을 구현할 수 있습니다.