Azure Notification Hub

Ieri (12 Febbraio 2015) al Mobile Camp di Roma ho parlato di Azure Notification Hub, un servizio multipiattaforma di Azure che vi permette di gestire le notifiche push verso le vostre app su qualsiasi piattaforma mobile in poche righe di codice.

Rendete vive ed interessanti le vostre app, aggiungete notifiche push con questo servizio facilissimo da implementare e da gestire e soprattutto gratuito fino ad un milione di notifiche al mese.

Trovate tutti i dettagli nella mia presentazione disponibile su SlideShare

JSON for Dummies (parte 4)

Dopo aver visto come connetterci ad un servizio REST con HttpClient (vedi la parte 3) concludiamo l’argomento illustrando come connetterci ad un servizio REST autenticato e come eseguire altre operazioni che non siano solo il semplice GET.

Tutto quello che dobbiamo fare è semplicemente usare il costruttore dell’HttpClient che prende un oggetto HttpClientHandler come parametro e impostare la proprietà Credential di quest’ultimo uguale ad un oggetto NetworkCredential che possiamo passare alla nostra funzione

 NetworkCredential credential = new NetworkCredential(username, password); 

L’ultima cosa da modificare è DefaultRequestHeaders dell’HttpClient, e a questo punto la funzione che permette di fare una chiamata Get autenticata può essere scritta in questo modo:

  
public static async Task<T> GetAsyncAuthenticated<T>Uri uri, NetworkCredential credential) 
{
     using (var http = new HttpClient(new HttpClientHandler { Credentials = credential }))     
     {         
          http.DefaultRequestHeaders.Add"Accept", "application/json");
          http.DefaultRequestHeaders.Add("user-Agent", "authentication.cs");
          var response = await http.GetAsync(uri);
          string json = await response.EnsureSuccessStatusCode().Content.ReadAsStringAsync();
          var output = JsonConvert.DeserializeObject<T>(json);
          return output;
     } 
} 

In modo assolutamente analogo possiamo scrivere una funzione che esegua un POST autenticato (o non autenticato, basta rimuovere le parti relative all’autenticazione), dove ovviamente dobbiamo passare anche un content da passare al POST

 
public static async Task<T> PostAsyncAuthenticated<T>(Uri uri, NetworkCredential credential, HttpContent content)
{ 	
     using (var http = new HttpClient(new HttpClientHandler { Credentials = credential }))
     {                 
          http.DefaultRequestHeaders.Add("Accept", "application/json");
          http.DefaultRequestHeaders.Add"user-Agent", "authentication.cs");
          var response = await http.PostAsync(uri, content);                 
          string json = await response.EnsureSuccessStatusCode().Content.ReadAsStringAsync();                 
          return JsonConvert.DeserializeObject<T>(json); 	
     } 
} 

Come vedete usando HttpClient è tutto molto semplice. Buon lavoro!

How to get the absolute position of a control in WinRT

Sooner or later you will need to find the absolute position of a control in WinRT.
Here is how you can achieve it:

// Obtain transform information based off root element
GeneralTransform gt = this.TransformToVisual(Window.Current.Content);

// Find the four corners of the element
Point topLeft = gt.TransformPoint(new Point(0, 0));
Point topRight = gt.TransformPoint(new Point(this.RenderSize.Width, 0));
Point bottomLeft = gt.TransformPoint(new Point(0, this.RenderSize.Height));
Point bottomRight = gt.TransformPoint(new Point(this.RenderSize.Width, this.RenderSize.Height));

based on how-to-get-the-position-of-a-control-in-silverlight