Update your code to migrate from Analytics SDK version 4.x to version 5.0.0.
읽는 시간 1분최근 업데이트: 한 달 전
Analytics SDK의 새 버전인 5.0.0에는 SDK 초기화와 동의 플로에 다양한 변경 사항이 적용되었습니다. 이 가이드에서는 해당 변경 사항을 살펴봅니다.
참고
마이그레이션 시 이전 버전과의 호환성을 위해 버전 5.0.0에서도 레거시 초기화 및 동의 로직을 사용할 수 있지만, SDK가 의도한 대로 작동할 수 있도록 가능한 한 빨리 새로운 로직으로 전환해야 합니다. 레거시 플로 작업은
Obsolete
속성으로 표시되며 향후 SDK 버전에서 제거될 예정입니다.
레거시 초기화 플로에는 GeoIP로 플레이어의 위치를 조회하여 데이터 수집에 동의가 필요한지, 그리고 명시적으로 철회될 때까지 데이터 수집이 허용되는지 파악하는 여러 자동 단계가 포함되어 있었는데, 이 부분이 변경됩니다.새로운 초기화 플로에서 SDK는 플레이어의 위치를 조회하지 않으며 어떠한 작업도 자동으로 수행하지 않습니다. 새로운 초기화 플로에서는
StartDataCollection()
메서드를 호출하여 SDK를 명시적으로 활성화해야 합니다. 이 메서드는 다음 중 하나에 해당하는 경우에만 호출되어야 합니다.
플레이어에게 영향을 미치는 데이터 개인정보 보호법에 따라 플레이어에게 데이터 수집을 요청하고 동의를 받았습니다.
플레이어가 명시적인 동의가 필요하지 않은 데이터 개인정보 보호법의 영향을 받으며, 명시적으로 거부하지 않았습니다.
플레이어가 데이터 개인정보 보호법의 영향을 받지 않습니다.
UnityServices.InitializeAsync()
를 호출하면 이전처럼 Analytics SDK가 초기화됩니다. 하지만 이 초기화는 SDK를 메모리로 가져올 뿐이며,
StartDataCollection()
에 대한 호출로 SDK를 명시적으로 활성화할 때까지 ‘휴면’ 상태로 유지됩니다. 마찬가지로
StopDataCollecton()
메서드를 사용하여 SDK를 비활성화해도 SDK는 메모리에 남아 있으므로, 초기화 후 시간이 지나 플레이어가 동의를 제공하거나 재동의하면 나중에 다시 활성화할 수 있습니다.
참고
새로운 플로 또는 이전 플로에서 메서드를 호출하면 해당 플로와 관련된 추가 호출만 수락하도록 SDK가 잠깁니다. 두 플로에서 함께 메서드를 호출하려고 하면 예외가 발생합니다.
초기화 플로
이전에는 초기화 플로가 다음 예시와 유사했습니다.
await UnityServices.InitializeAsync();List<string> requiredConsents = await AnalyticsService.Instance.CheckForRequiredConsents();if (consents.Count > 0){ // Show UI element asking the user for their consent // bool userGaveConsent = ... foreach (string legislationIdentifier in requiredConsents) { AnalyticsService.Instance.ProvideOptInConsent(identifier, userGaveConsent); }}
5.0.0 이전 버전의 SDK에서는 플레이어의 위치를 조회하고 플레이어가 특정 개인정보 보호법의 적용을 받는 지역에 있는지 확인하기 위해 서비스 초기화 시 웹 요청이 이루어졌습니다. 이 요청이 실패하면
CheckForRequiredConsents()
호출 내부에서 재시도되었으며, 이 두 번째 시도마저 실패하면 SDK에서 데이터를 수집하지 못했습니다. 이러한 상황에서 데이터를 수집하려면 이전에 동의를 받았는지 여부, 그리고 연결이 복원되었을 때 업로드하기 위해 이벤트를 배칭하고 저장할 수 있는지 여부와는 관계없이 인터넷 연결을 통해 애플리케이션을 초기화해야 했습니다.새로운 초기화 플로에서는 웹 요청을 수행하지 않습니다. 그 대신에 특정 데이터 개인정보 보호법에 따라 개인정보 수집 동의가 필요한 지역에 플레이어가 있는지 확인하기 위한 로직을 개발자가 직접 구축해야 합니다. 플레이어의 동의를 받으면
StartDataCollection()
메서드를 호출하여 SDK를 활성화하고 개인 데이터 수집을 시작하십시오. 플레이어가 동의하지 않으면 SDK에서는
await UnityServices.InitializeAsync();// Show UI element asking the user for their consent OR retrieve prior consent from storage //bool userGaveConsent = ...if (userGaveConsent){ AnalyticsService.Instance.StartDataCollection();}
서비스 초기화 후 언제든지
StartDataCollection()
메서드를 호출하여 데이터 수집을 시작할 수 있습니다. 앱 시작 시 바로 이 메서드를 호출할 필요는 없습니다.
참고
SDK가 휴면 상태에 있는 동안 기록된 이벤트는 폐기되며, 나중에
StartDataCollection()
이 호출되더라도 전송을 위해 버퍼에 추가되지 않습니다. 이벤트는
StartDataCollection()
을 호출한 경우에만 기록됩니다.
참고
gameStarted, clientDevice 등의 시작 이벤트는 이제
StartDataCollection()
메서드 호출 시 기록되며, 그전에는 기록되지 않습니다. 단일 세션 내에서 데이터 수집을 시작한 다음 중지했다가 다시 시작하면 이벤트는 첫 번째
StartDataCollection()
호출 시 한 번만 기록됩니다.
거부
이전에
OptOut()
메서드는 SDK를 비활성화하고 메모리에서 제거한 다음 플레이어에 대한 데이터 삭제 요청을 트리거했습니다. 이로 인해 플레이어가 나중에 마음을 바꾸더라도 데이터 수집에 다시 동의하기가 어려웠습니다. SDK에서 ‘동의 철회’ 상태에 대한 정보가 계속 유지되어 이후의 초기화를 막았기 때문입니다. 플레이어가 추가적인 개인 데이터 수집을 거부한다고 해서 이들이 이전에 수집된 데이터도 삭제하기를 바란다는 것을 의미하지는 않으므로 당시에는 데이터 삭제를 요청하는 기능도 필요하지 않았습니다.새로운
StopDataCollection()
메서드를 호출하면 이제 SDK가 비활성화 상태로 메모리에는 남아 있으므로 나중에 필요한 경우 다시 활성화할 수 있습니다. SDK는 해당 시점까지 기록된 모든 이벤트의 최종 업로드를 시도한 다음 그 이후의 이벤트는 폐기합니다.플레이어가 백엔드의 데이터도 삭제하길 요청한다면
RequestDataDeletion()
메서드를 별도로 호출해야 합니다.
참고
데이터 삭제 메커니즘은 필요한 경우 여러 세션에 걸쳐서 요청이 성공할 때까지 요청을 전송하려고 계속 시도합니다. Analytics SDK는
PlayerPrefs
API를 사용하여 이 상태를 기억하므로
PlayerPrefs.DeleteAll()
을 호출하면 프로세스가 중단될 수 있습니다.
플레이어가 데이터 삭제를 요청하지 않고 동의 거부만 하는 경우에도 나중에
RequestDataDeletion()
메서드를 사용하여 해당 데이터 삭제를 요청할 수 있습니다. SDK가 활성 상태이든 휴면 상태이든 상관없이 언제든지 이 메서드를 호출할 수 있습니다.