Windows 11에서는 사용자가 방해를 최소화할 수 있도록 방해 금지 모드를 켜고 작업 표시줄의 앱에서 아이콘 깜박임과 배지 알림을 표시하지 않도록 하는 포커스 기능을 도입했습니다. 이 문서에서는 FocusSessionManager API를 사용하여 포커스 세션 상태가 변경될 때 포커스 세션이 현재 활성 상태인지 또는 업데이트를 수신하는지 감지하는 방법을 보여 줍니다. 이를 통해 포커스 세션이 활성 상태일 때 방해를 최소화하도록 앱의 동작을 사용자 지정할 수 있습니다. 포커스 기능에 대한 자세한 내용은 Windows 11에서 포커스를 사용하는 방법을 참조하세요.
현재 포커스 세션 상태 가져오기
FocusSessionManager의 속성에 액세스하기 전에 IsSupported 속성을 확인하여 현재 디바이스에서 지원되는지 확인합니다. 기능이 지원되는지 확인한 후 IsFocusActive 속성을 확인하여 포커스 세션이 현재 활성 상태인지 확인할 수 있습니다.
private void UpdateStatusBar(string message)
{
var focusActive = false;
if (Windows.UI.Shell.FocusSessionManager.IsSupported)
{
var manager = Windows.UI.Shell.FocusSessionManager.GetDefault();
focusActive = manager.IsFocusActive;
}
if (!focusActive)
{
statusTextBlock.Text = message;
}
}
포커스 상태를 지속적으로 모니터링
IsFocusActiveChanged 이벤트에 등록하여 디바이스의 포커스 세션 상태가 변경될 때 알림을 구독할 수 있습니다. 다음 예제에서 SetAnimatedGifAutoPlay는 현재 포커스 세션 상태에 따라 앱이 애니메이션 GIF를 자동 재생할지를 변경하는 앱 구현 도우미 메서드입니다.
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (Windows.UI.Shell.FocusSessionManager.IsSupported)
{
var manager = Windows.UI.Shell.FocusSessionManager.GetDefault();
manager.IsFocusActiveChanged += Manager_IsFocusActiveChanged;
SetAnimatedGifAutoPlay(true);
}
}
private void Manager_IsFocusActiveChanged(Windows.UI.Shell.FocusSessionManager sender, object args)
{
if(sender.IsFocusActive)
{
SetAnimatedGifAutoPlay(true);
}
else
{
SetAnimatedGifAutoPlay(false);
}
}
Windows developer