온라인 서비스에 로그인하면 사용자는 자신의 친구나 온라인에서 만난 다른 사용자에 대한 (온라인인지, 지금 무얼 하는지, 게임에 참가할 수 있는지 등의) 정보를 볼 수 있습니다. Presense Interface (현재상태 인터페이스)는 온라인 서브 시스템에 이러한 기능을 제공합니다.
현재상태
대부분의 온라인 서비스는 각 사용자의 "온라인", "오프라인", "자리 비움"과 같은 여러가지 기본 상태뿐 아니라 "로비에 있음" 또는 "(맵에서) 매치 중"과 같은 게임 특정 상태를 인식합니다. 그러나 서비스 별 개인 정보 보호 정책 및 계정 설정으로 인해 이러한 설정이 항상 표시되지 않을 수도, 사용자에 따라 볼 수 있거나 없을 수도 있습니다. 온라인 서브 시스템은 이러한 정책이나 설정과 상호 작용하지 않지만 검색하는 정보는 영향을 받습니다.
현재상태 정의
FOnlineUserPresence
클래스에는 사용자의 현재상태와 관련된 모든 정보가 들어있습니다.
사용자의 현재 온라인 상태인지 게임을 하고 있는지와 같은 기본 정보 외에도 (FOnlineUserPresenceStatus
클래스를 사용하면) 사용자의 현재상태 관련 보다 자세한 정보를 저장합니다.
여기에는 보통 현지화 표시명, (EOnlinePresenceState
유형의) 열거형 값으로 표시되는 사용자의 기본 상태, 게임 전용 데이터를 저장하는 키-값 세트가 포함되며, 이를 통해 현재상태 표시 메시지를 만들 수 있습니다.
다른 사용자에 대한 정보 검색
특정 사용자 관련 현재상태 정보를 수집하는 기본적인 흐름은 온라인 서비스에 QueryPresence
에다 FUniqueNetId
로 사용자를 지정하여 요청하는 것으로 시작합니다.
작업이 끝나면 제공된 'FOnPresenceTaskCompleteDelegate`가 호출되어 사용자와 요청의 성공 또는 실패 여부를 나타냅니다.
성공하면 로컬 현재상태 정보 캐시에 최신 상태 정보가 포함되며 이는 'GetCachedPresence' 함수를 통해 사용할 수 있습니다.
사용자의 현재상태를 온라인 서브시스템에 적극적으로 알리는 온라인 서비스도 있습니다.
그 서비스에서 QueryPresence
를 실제로 호출하거나 그 델리게이트를 기다릴 필요는 없지만, 여러 서비스에 두루 작동하도록 하기 위해 일반적인 코드 흐름은 유지해야 합니다.
사용자의 현재상태 설정
SetPresence
함수는 온라인 서비스를 통해 로컬 사용자의 현재상태를 설정합니다.
온라인 서비스와 새로운 상태를 확인해야 하기에 비동기 호출이며, 완료 시 FOnPresenceTaskCompleteDelegate
유형 델리게이트를 호출합니다.
현재상태 자체는 FOnlineUserPresenceStatus 클래스에서 설명합니다.