Windows10 Dev-연결된 경험

이미 알고 있듯이 Windows 10에서는 여러 Windows 10 장치에서 실행 및 실행할 수있는 응용 프로그램을 만들 수 있습니다. 이러한 서로 다른 장치가 있고 다른 장치에서 실행 중이더라도 하나의 응용 프로그램 인 것처럼 느끼게하고 싶다고 가정 해 보겠습니다.

UWP (유니버설 Windows 플랫폼)에서는 모든 Windows 10 장치에서 단일 응용 프로그램을 실행할 수 있으며 사용자에게 하나의 응용 프로그램이라는 느낌을 줄 수 있습니다. 이것은connecting experience.

연결된 경험의 중요한 기능-

  • Windows 10은 앱, 서비스 및 콘텐츠가 여러 장치에서 원활하고 쉽게 이동할 수있는 개인 컴퓨팅 시대의 첫 번째 단계입니다.

  • 연결된 경험을 통해 해당 응용 프로그램과 관련된 데이터 및 개인 설정을 쉽게 공유 할 수 있으며 모든 장치에서 사용할 수 있습니다.

이 장에서 우리는 배울 것입니다-

  • 이러한 공유 데이터 또는 설정이 저장되어 해당 응용 프로그램에 대해 장치에서 사용할 수 있습니다.

  • 사용자 식별 방법 다른 장치에서 동일한 응용 프로그램을 사용하는 동일한 사용자입니다.

Windows 10은 과감한 발전을 이룹니다. Microsoft 계정 (MSA) 또는 기업 또는 (회사) 계정으로 Windows 10에 로그인 할 때 다음과 같이 가정합니다.

  • MSA 용 OneDrive 계정에 무료로 액세스 할 수 있으며 엔터프라이즈 계정이있는 클라우드 버전 인 AD (Active Directory) 및 AAD (Azure Active Directory)에 액세스 할 수 있습니다.

  • 다양한 애플리케이션과 리소스에 액세스 할 수 있습니다.

  • 장치 및 응용 프로그램이 로밍 상태 및 설정에 있습니다.

Windows 10에서 로밍

PC에 로그온 할 때 잠금 화면 또는 배경색과 같은 일부 기본 설정을 지정하거나 다양한 종류의 설정을 개인화합니다. Windows 10에서 실행중인 컴퓨터 또는 장치가 두 대 이상있는 경우 동일한 계정으로 다른 장치에 로그인하면 한 장치의 기본 설정과 설정이 클라우드에서 동기화됩니다.

Windows 10에서 애플리케이션 설정을 설정하거나 개인화 한 경우 이러한 설정은 UWP에서 사용 가능한 로밍 API와 함께 로밍됩니다. 다른 장치에서 동일한 응용 프로그램을 다시 실행하면 먼저 설정을 검색하고 해당 설정을 해당 장치의 응용 프로그램에 적용합니다.

로밍 데이터를 클라우드에 업로드하는 데는 100KB로 제한됩니다. 이 제한을 초과하면 동기화가 중지되고 로컬 폴더처럼 작동합니다.

그만큼 RoamingSettings API는 애플리케이션이 데이터를 저장할 수있는 사전으로 노출됩니다.

Windows.Storage.ApplicationDataContainer roamingSettings = 
   Windows.Storage.ApplicationData.Current.RoamingSettings;  
				   
// Retrivve value from RoamingSettings 
var colorName = roamingSettings.Values["PreferredBgColor"].ToString(); 
 
// Set values to RoamingSettings 
roamingSettings.Values["PreferredBgColor"] = "Green";

데이터가 변경 될 때 RoamingSettings 다음 그것은 발사 DataChanged 설정을 새로 고칠 수있는 이벤트입니다.

Windows.Storage.ApplicationData.Current.DataChanged += RoamingDataChanged;  

private void RoamingDataChanged(Windows.Storage.ApplicationData sender, object args) {
   // Something has changed in the roaming data or settings 
}

애플리케이션의 배경색을 설정하고 이러한 설정이 UWP에서 사용할 수있는 로밍 API와 함께 로밍되는 예를 살펴 보겠습니다.

다음은 다른 컨트롤이 추가 된 XAML 코드입니다.

<Page 
   x:Class = "RoamingSettingsDemo.Views.MainPage" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:local = "using:RoamingSettingsDemo.Views" 
   xmlns:d = "http://schemas.microsoft.com/expression/blend/2008" 
   xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" 
   mc:Ignorable = "d">
   
   <Grid x:Name = "MainGrid" Background = "{ThemeResource ApplicationPageBackgroundThemeBrush}">
      <Grid.RowDefinitions> 
         <RowDefinition Height = "80" /> 
         <RowDefinition /> 
      </Grid.RowDefinitions>
		
      <StackPanel Orientation = "Horizontal" VerticalAlignment = "Top" Margin = "12,12,0,0"> 
         <TextBlock Style = "{StaticResource HeaderTextBlockStyle}"  
            FontSize = "24" Text = "Connected Experience Demo" /> 
      </StackPanel>
		
      <Grid Grid.Row = "1" Margin = "0,80,0,0"> 
         <StackPanel Margin = "62,0,0,0"> 
            <TextBlock x:Name = "textBlock" HorizontalAlignment = "Left"   
               TextWrapping = "Wrap" Text = "Choose your background color:"  
               VerticalAlignment = "Top"/> 
					
            <RadioButton x:Name = "BrownRadioButton" Content = "Brown"  
               Checked = "radioButton_Checked" /> 
					
            <RadioButton x:Name = "GrayRadioButton" Content = "Gray"  
               Checked = "radioButton_Checked"/> 
         </StackPanel> 
      </Grid> 
		
   </Grid> 
	
</Page>

C # 구현 RoamingSettings 다양한 이벤트가 아래에 나와 있습니다.

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Runtime.InteropServices.WindowsRuntime; 

using Windows.Foundation; 
using Windows.Foundation.Collections; 

using Windows.UI; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls; 
using Windows.UI.Xaml.Controls.Primitives; 
using Windows.UI.Xaml.Data; 
using Windows.UI.Xaml.Input; 
using Windows.UI.Xaml.Media; 
using Windows.UI.Xaml.Navigation;  

// The RoamingSettingsDemo Page item template is documented at 
   http://go.microsoft.com/fwlink/?LinkId=234238  

namespace RoamingSettingsDemo.Views {

   /// <summary>
      /// An empty page that can be used on its own or navigated to within a Frame. 
   /// </summary> 
	
   public sealed partial class MainPage : Page {
   
      public MainPage() {
         this.InitializeComponent(); 
      }  
		
      protected override void OnNavigatedTo(NavigationEventArgs e) {
         SetBackgroundFromSettings();  
         Windows.Storage.ApplicationData.Current.DataChanged += RoamingDataChanged; 
      }  
		
      protected override void OnNavigatedFrom(NavigationEventArgs e) {
         Windows.Storage.ApplicationData.Current.DataChanged -= RoamingDataChanged; 
      }  
		
      private void RoamingDataChanged(Windows.Storage.ApplicationData sender, object args) {
	  
         // Something has changed in the roaming data or settings 
         var ignore = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,  
            () ⇒ SetBackgroundFromSettings()); 
      } 
		
      private void SetBackgroundFromSettings() {
	  
         // Get the roaming settings 
         Windows.Storage.ApplicationDataContainer roamingSettings = 
            Windows.Storage.ApplicationData.Current.RoamingSettings;  
				   
         if (roamingSettings.Values.ContainsKey("PreferBrownBgColor")) {
            var colorName = roamingSettings.Values["PreferBrownBgColor"].ToString();
				
            if (colorName == "Gray") {
               MainGrid.Background = new SolidColorBrush(Colors.Gray); 
               GrayRadioButton.IsChecked = true; 
            } else if (colorName == "Brown") {
               MainGrid.Background = new SolidColorBrush(Colors.Brown); 
               BrownRadioButton.IsChecked = true; 
            } 
         } 
			
      } 
		
      private void radioButton_Checked(object sender, RoutedEventArgs e){ 
         if (GrayRadioButton.IsChecked.HasValue && 
            (GrayRadioButton.IsChecked.Value == true)) {
               Windows.Storage.ApplicationData.Current.RoamingSettings.
                  Values["PreferBrownBgCo lor"] = "Gray"; 
         } else {
            Windows.Storage.ApplicationData.Current.RoamingSettings.
               Values["PreferBrownBgCo lor"] = "Brown"; 
         }  
			
         SetBackgroundFromSettings(); 
      } 
		
   } 
}

위의 코드를 컴파일하고 실행하면 다음과 같은 창이 나타납니다.

배경색으로 회색을 선택하고이 앱을 닫습니다.

이제이 장치 또는 다른 장치에서이 앱을 실행하면 배경색이 회색으로 변경된 것을 볼 수 있습니다. 이것은 앱이 배경색 변경 정보를 성공적으로 검색했음을 나타냅니다.RoamingSettings.