ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 150
Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 44
Abonament PDF

Crearea unui Microsoft Band Tile pentru a direcționa notificările de stare a construcției

Radu Vunvulea
Solution Architect
@iQuest



PROGRAMARE

Anul trecut, Microsoft a lansat Microsoft Band 2. Este foarte puternic cu mulți senzori și o autonomie a bateriei care îmi oferă două zile de energie.

Privire generală

Dar ceea ce mă impresionează este partea de software și ușurința cu care poți dezvolta un tile (o aplicație custom) pentru acesta. Nu trebuie să înveți C# pentru că poți crea ușor un tile direct din browser.

Acesta îți va permite să obții conținut din web și să îl direcționezi spre tile-ul tău. În acest fel poți ușor integra aplicația ta în band! Rapid și ușor.

Un alt aspect grozav este modul cum pui în folosință și partajezi tile-urile. Nu este nevoie să le direcționezi în magazin, să le validezi și așa mai departe. Nu. Ești liber să partajezi tile cu oricine. Doar încarcă-l într-o locație specifică și partajează URL-ul cu prietenii tăi prin mail sau web. Telefonul poate detecta tile în mod automat și îl poate deschide utilizând aplicația Microsoft Band.

Informația este puterea

Pentru clienți, lucrul cel mai important este conținutul pe care îl afișezi în tile. Încearcă să te concentrezi pe conținutul pe care dorești să îl afișezi. Trebuie să identifici conținutul care poate îmbunătăți viața proprietarului de bandă.

Deoarece numărul de tile-uri pe care le poți instala pe bandă este limitat, ar trebui să ai în vedere faptul că acel client va păstra numai tile-urile cele mai importante, care îi aduc informațiile despre dispozitivul său de care are nevoie cu adevărat. Altfel, tile-ul tău va fi doar un alt tile, pe care nimeni nu îl utilizează sau nu îl păstrează mai mult de 5 minute.

Orice dezvoltator poate crea un tile și poate direcționa conținut spre Microsoft Band, în doar 2 sau 3 minute. Dar numai ideile bune și conținutul util vor ajunge pe dispozitivele clienților.

Echipa noastră

Fiecare dezvoltator din echipa din care fac parte a primit anul trecut un Microsoft Band 2. Am început să facem glume pe tema asta, cum că am multiplicat numărul de Microsoft Bands în Cluj-Napoca de aproape zece ori mai mult. Echipa nu este atât de numeroasă, dar la acel moment în Cluj-Napoca știam doar o singură persoană cu band.

Ideea

Am început să mă gândesc la ceea ce am putea face cu band-ul. În cele din urmă am ajuns la o soluție simplă, pe care o voi descrie de la un capăt la altul în partea care urmează în articolul meu.

Direcționarea notificărilor de modificare a statusului dezvoltării spre band

Ideea este simplă. Noi ne păstrăm codul sursă pe TFS Online (Visual Studio Online) și TFS 2015 la locație. Avem diferiți agenți de dezvoltare pe Azure și în rețeaua privată a companiei noastre (la locație) care construiesc soluția noastră, rulează teste pe unități, extrag diferiți parametri și pun în folosință aplicația în mod automat pe medii diferite. Scopul principal este să înștiințeze cât mai curând posibil echipa de dezvoltare de faptul că a picat construcția.

Privire de ansamblu asupra blocajelor și arhitecturii

Scopul principal este acela de a direcționa o notificare înspre band în momentul în care construcția eșuează. Ideea este simplă, dar avem nevoie să găsim o soluție pentru a putea să trimitem o notificare către band fără a trebui să înmagazinăm TFS User Credentials (Datele de identificare ale utilizatorului).

Nu există nicio modalitate de a depozita datele de identificare pe band și a cerceta serverul de control sursă. O soluție posibilă este să dezvoltăm o aplicație pentru telefon care să direcționeze aceste notificări. Dar, așteptați… noi nu suntem dezvoltatori de mobile și fiecare dintre noi avem tipuri diferite de telefoane - iPhone, Windows Phone și Android. S-ar putea să meargă, dar efortul de dezvoltare este prea costisitor. Am putea să scriem o aplicație mobile cross platform, dar până să o lansăm în magazin, se va pierde interesul și oportunitatea de moment.

RSS Feed (Intrare RSS)

O soluție mai simplă este să expunem un RSS feed / o intrare RSS cu notificările de modificare a statusului construcției. De fiecare dată, când se modifică starea construcției, un conținut nou va fi disponibil pe Serverul RSS. Tile-ul care rulează pe band va detecta noul conținut și va înștiința utilizatorul.

În acest moment am rezolvat numai o parte din problemă. Avem un punct terminal web care poate fi utilizat de către tile pentru a accesa o intrare RSS. Canalul de alimentare RSS poate fi folosit de către band pentru a obține notificările de modificare a statusului construcției.

Direcționarea notificărilor

Acum, noi trebuie să găsim o cale de a direcționa modificarea stării construcției de la serverul CI către aplicația noastră web. Acest lucru este puțin mai înșelător și vă rog să ignorați orice tip de probleme de securitate care vor fi doar menționate, nu și acoperite.

Pentru Visual Studio Team Services, problema poate fi rezolvată cu ușurință. Deoarece CI este disponibil publicului, noi trebuie să înregistrăm în aplicația noastră web un nume de utilizator și o parolă care să poată fi utilizată pentru a interoga starea construcției în legătură cu modificările.

Dar pentru serverul nostru CI de la locație, s-ar putea să avem o problemă. Serverul CI de la locație nu este disponibil publicului. Aceasta înseamnă că nu putem interoga serverul nostru pentru a verifica starea construcției de pe internet. Haideți să ne folosim imaginația.

Care este acțiunea implicită făcută de un server CI atunci când o construcție eșuează, cu excepția schimbării de culoare? Acțiunea cea mai obișnuită este să trimită un email unuia sau mai multor utilizatori. Aceasta este cheia noastră pentru a putea accesa o notificare de schimbare de status.

Aparatul CI va trimite o notificare către serverul nostru de mail. În mod normal, un Mail server este accesibil publicului de pe internet. Aplicația noastră web RSS va trebui să înregistreze datele de identificare pentru email.

Chiar dacă soluția va funcționa și ar putea fi utilizată cu succes, noi trebuie să avem în minte că:

Datele de identificare vor fi înregistrate de către Web App.

Informațiile confidențiale (Build Status) vor fi disponibile publicului pe un terminal web care poate fi utilizat de oricine.

Orice persoană care are tile-ul vostru va putea să vadă notificările de schimbare de status ale construcției (construcțiilor).

Toate aceste puncte trebuie să fie discutate cu grupul de securitate al companiei voastre. Nu ar trebui niciodată să implementați o astfel de soluție fără a avea acordul lor.

Implementarea

Notificarea prin email TFS

Soluția este aplicabilă pentru versiunea mai veche a TFS, de asemenea. Pașii și mostrele de mai jos sunt pentru Visual Studio Online și TFS 2015.

Va trebui să definiți o alertă care să trimită o notificare prin email în momentul în care calitatea construcției se modifică. În funcție de nevoile voastre, puteți utiliza același cont pentru a trimite notificări pentru construcții diferite.

Verificarea emailurilor noi

Există diferite biblioteci care te pot ajuta să îți accesezi serverul email. Tu ar trebui să decizi ce tip de bibliotecă vrei să folosești în funcție de tipul serverului email. Dacă utilizezi Outlook sau Exchange Server, atunci poate ai vrea să folosești biblioteca EWS. Pentru un cont Gmail, s-ar putea să ai nevoie de un client POP3 și un purser MIME precum OpenPOP.NET. În exemplul de mai jos, puteți vedea cum se poate primi un mesaj, folosind biblioteca OpenPOP.NET.

POPClient client = new POPClient();
client.Connect("pop.gmail.com", 995, true);
client.Authenticate("radu.vunvulea.sample\@gmail.com", "Hahaha");
var count = client.GetMessageCount();
Message message = client.GetMessage(count);

Subiectul poate fi accesat în felul următor: 'message.Headers.Subject'.

Expunerea notificărilor drept intrare RSS

Următorul pas este să expunem noile notificări drept intrări RSS. Acest lucru poate fi făcut în 10 minute, dacă utilizăm APIController. Nu avem nevoie să implementăm o intrare RSS și să dispunem în serie conținutul.

Acest lucru este sprijinit de ASP.NET MVC. Există chiar și un ActionResult special care este creat pentru acest scop - RssActionResult. La RssActionResult, noi trebuie să stabilim proprietatea "Feed" care este de tipul "SyndicationFeed".

public ActionResult BuildStatusRSS()

{
IEnumerable\ buildStatus = BuildStatusManager.GetAllByDate(8);

SyndicationFeed buildFeed = new SyndicationFeed("Build Status",
new Uri("http://www.raduvunvulea.com/buildStatus/RSS"),
Guid.NewGuid().ToString(),
DateTime.Now);

List\ buildStatusList = new List\();
foreach (BuildStatus bs in posts)
{
  string postUrl = string.Format("build\\\\build-entry-{0}", bs.Id);
  SyndicationItem buildStatus =
    new SyndicationItem(bs.Title,
    bs.Description,
    new Uri(postUrl),
    bs.Id,
    bs.Date);

  buildStatusList.Add(buildStatus);
}

buildFeed.Items = buildStatusList;
return new RssActionResult {Feed = buildFeed};

}

În exemplul de mai sus, am generat un RSS cu status al construcției. Clasa BuildStatus este o clasă custom în care se depozitează informațiile legate de o construcție specifică. Această clasă este populată pe baza emailurilor care sunt trimise de TFS atunci când statusul unei construcții se modifică.

Găzduirea aplicației noastre web

Putem găzdui aplicația noastră web drept o Web App în Azure. Nivelul gratuit va fi suficient pentru a ne juca puțin.

Url-ul aplicației mele web va fi asta. Statusul construcției va fi găsit pe hartă aici.

Crearea de Tile

Acesta este ultimul pas pe care trebuie să îl facem. Noi trebuie să creăm Microsoft Band Tile. Acest lucru va fi făcut direct din browser.

Următorii pași sunt destul de simpli; trebuie să specificați culori, icon-uri și alte astfel de lucruri. Odată ce am făcut asta, putem descărca tile pe computerul nostru local.

Publicarea tile

Cea mai simplă soluție pentru a publica tile este să îl încarci pe un sistem de partajare fișiere, precum OneDrive și să creezi un link de partajare.

Finalul

Și am sfârșit. Odată ce accesezi linkul la tile de pe telefonul tău, aplicația Microsoft Band se va deschide și vei putea direcționa tile-ul.

Concluzie

În acest articol am expus o soluție de la un capăt la altul legată de cum putem direcționa notificări pe Microsoft Band-ul nostru, fără a dezvolta o aplicație pentru telefon. Din perspectiva tile, crearea și publicarea unui tile este ușoară.

Lucrul cel mai complex este crearea intrării (feed) cu informațiile corecte. Nu din cauza problemelor tehnice, ci este vorba de ce conținut să afișăm. Ar trebui să ne amintim că "informația este puterea".

NUMĂRUL 149 - Development with AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects