Windows10 Dev - Expérience connectée

Comme nous le savons déjà, dans Windows 10, nous pouvons créer une application qui peut être exécutée et exécutée sur plusieurs appareils Windows 10. Supposons que nous ayons ces différents appareils et que nous voulions donner l'impression que c'est une application même si elle s'exécute sur différents appareils.

Dans la plateforme Windows universelle (UWP), vous pouvez exécuter une seule application sur tous les appareils Windows 10, et vous pouvez donner à l'utilisateur le sentiment qu'il s'agit d'une seule application. Ceci est connu commeconnecting experience.

Caractéristiques importantes de l'expérience connectée -

  • Windows 10 est la première étape vers une ère d'informatique plus personnelle où vos applications, services et contenu peuvent se déplacer avec vous sur tous les appareils, de manière transparente et facile.

  • Avec l'expérience connectée, vous pouvez facilement partager vos données et paramètres personnels liés à cette application et elle sera disponible sur tous les appareils.

Dans ce chapitre, nous allons apprendre -

  • où ces données ou paramètres partagés seront stockés afin qu'ils puissent être disponibles sur vos appareils pour cette application.

  • comment l'utilisateur est identifié; que c'est le même utilisateur qui utilise la même application sur différents appareils.

Windows 10 fait un pas en avant audacieux. Lorsque vous vous connectez à Windows 10 avec un compte Microsoft (MSA) ou avec votre compte d'entreprise ou (travail), on suppose que -

  • Vous avez un accès gratuit à OneDrive pour le compte MSA et vous avez accès à Active Directory (AD) et Azure Active Directory (AAD), qui est une version cloud avec votre compte d'entreprise.

  • Vous avez accès à différentes applications et ressources.

  • Les appareils et les applications sont en état et paramètres itinérants.

Itinérance dans Windows 10

Lorsque vous vous connectez à un PC, vous définissez certaines préférences comme l'écran de verrouillage ou la couleur d'arrière-plan ou personnalisez vos différents types de paramètres. Si vous disposez de plusieurs ordinateurs ou appareils exécutés sous Windows 10, vos préférences et paramètres sur un appareil seront synchronisés à partir du cloud lorsque vous vous connectez à d'autres appareils avec le même compte.

Dans Windows 10, lorsque vous avez défini ou personnalisé les paramètres de votre application, ces paramètres seront itinérants avec les API itinérantes disponibles dans UWP. Lorsque vous exécutez à nouveau la même application sur un autre appareil, elle récupère d'abord les paramètres et applique ces paramètres à l'application sur cet appareil.

Il y a une limite de 100 Ko pour le téléchargement de données itinérantes sur le cloud. Si cette limite dépasse, la synchronisation s'arrêtera et se comportera simplement comme un dossier local.

le RoamingSettings Les API sont exposées sous forme de dictionnaire dans lequel une application peut enregistrer des données.

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";

Lorsque les données changent RoamingSettings puis il déclenche le DataChanged événement, où vous pouvez actualiser vos paramètres.

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

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

Prenons un exemple, dans lequel nous définirons la couleur d'arrière-plan de l'application et ces paramètres seront itinérants avec les API Roaming disponibles dans UWP.

Vous trouverez ci-dessous le code XAML dans lequel différents contrôles sont ajoutés.

<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>

Implémentation C # pour RoamingSettings et différents événements sont donnés ci-dessous.

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(); 
      } 
		
   } 
}

Lorsque le code ci-dessus est compilé et exécuté, vous verrez la fenêtre suivante.

Choisissons la couleur grise comme couleur de fond et fermons cette application.

Maintenant, lorsque vous exécutez cette application sur cet appareil ou tout autre appareil, vous verrez que la couleur d'arrière-plan est passée au gris. Cela montre que l'application a récupéré avec succès les informations de changement de couleur d'arrière-plan dansRoamingSettings.