Windows Phone 8 Succinct localizare, magazin de Windows Phone și achiziții în aplicație

Când vorbim despre aplicații mobile, dezvoltarea nu este singurul aspect pe care trebuie să-l luăm în considerare. Dacă vrem să fim de succes, trebuie să distribuim și să promovăm cererea noastră. În acest tutorial, vom discuta localizarea, magazinul Windows Phone și achizițiile în aplicație.

Aplicații procesate

Una dintre caracteristicile distinctive ale aplicațiilor Windows Phone este că suportă un mod de încercare, care le permite să fie descărcate de pe Windows Phone Store ca un proces cu caracteristici limitate. Odată ce utilizatorii decid să cumpere aplicația completă, nu trebuie să o descarce de la zero; Magazinul va descărca pur și simplu un certificat actualizat, care va debloca toate funcțiile blocate anterior.

Din punct de vedere al dezvoltatorului, gestionarea unui proces este simplu. Windows.ApplicationModel.Store spațiul de nume conține o clasă numită LicenseInformation, care oferă o proprietate numită IsTrial. Dacă valoarea lui este Adevărat, înseamnă că aplicația a fost instalată în modul de încercare, așa că trebuie să blocăm funcțiile pe care nu le dorim activate; altfel, utilizatorul la achiziționat, astfel încât toate funcțiile pot fi puse la dispoziție.

Depinde de dvs. să alegeți cea mai bună experiență de testare pentru aplicația dvs. De exemplu, puteți dezactiva anumite funcții, puteți limita numărul de aplicații care pot fi executate sau, într-un joc, puteți alege nivelurile pentru deblocare.

Informații despre licență = noua licență InformationInformation (); if (info.IsTrial) MessageBox.Show ("Aplicația rulează în modul de încercare");  altceva MessageBox.Show ("Aplicația rulează în modul complet!"); 

Localizare

Una dintre cele mai bune modalități de a crește vânzările și numărul de descărcări ale unei aplicații este de a accepta mai multe limbi. Șablonul implicit Windows Phone 8 din Visual Studio acceptă deja localizarea prin includerea unui dosar numit Resurse. Acesta conține toate fișierele de resurse, care sunt fișiere XML simple cu o caracteristică specială .resx extensie.

Fișierele de resurse sunt pur și simplu o colecție de valori (textul tradus) asociat unei anumite chei care este utilizată în aplicație pentru a se referi la textul respectiv. În funcție de limbajul utilizatorului, aplicația va folosi automat fișierul cu resurse adecvate.

Șablonul standard creează un fișier numit AppResources.resx în interiorul Resurse , care se referă la limba standard (de obicei engleză). 

Sprijinirea unei noi limbi este ușoară. Doar Click dreapta proiectul dvs. în Soluție Explorer și alegeți Proprietăți. Caseta Culturi acceptate va afișa toate limbile disponibile. Când adăugați limbi noi selectându-le în listă, Visual Studio va crea automat un nou AppResources fișier numit AppResources.xx-yy.resx în directorul Resurse, unde xx-yy este codul culturii limbii selectate (de exemplu, dacă ați adăugat limba italiană, va crea un fișier numit AppResources.it-IT.resx).

Visual Studio oferă un editor vizual util pentru lucrul cu fișierele de resurse. Afișează toate valorile dintr-o tabelă, unde puteți defini cu ușurință o cheie, valoarea acesteia și un comentariu opțional. Pentru a avea acces, pur și simplu dublu click pe un fișier de resurse din Resurse pliant.

Pe lângă oferirea unui fișier de resurse standard, șablonul Windows Phone include, de asemenea, o clasă numită LocalizedStrings, care acționează ca un înveliș între fișierul de localizare și XAML. Puteți găsi că este definită ca o resursă globală în App.xaml fişier:

  

Datorită acestui pachet, veți putea accesa resursele direct în XAML. Nu trebuie să îl adăugați direct în XAML de fiecare dată când aveți nevoie să afișați text în interfața cu utilizatorul; în schimb, veți adăuga fișierele de resurse și apoi le veți conecta la XAML cu următoarea sintaxă:

Mulțumită LocalizedStrings , putem accesa fiecare valoare din fișierul de resurse pur și simplu folosind LocalizedResources.MyKey sintaxa, unde Cheia mea este cheia care identifică textul pe care doriți să îl afișați.

Dacă doriți să accesați șirul de resurse direct din cod, va trebui să utilizați AppResources singleton, așa cum se arată în următorul exemplu:

private void OnShowMessageClicked (expeditor obiect, RoutedEventArgs e) MessageBox.Show (AppResources.SampleText); 

Setul de instrumente pentru aplicații multilingve

Microsoft a creat o extensie utilă Visual Studio numită Multilingual App Toolkit, care poate fi descărcată de la Windows Dev Center. Instrumentul nu schimbă modul în care funcționează localizarea; acesta va fi întotdeauna bazat pe fișiere de resurse, care sunt accesate de aplicație folosind LocalizedString clasă.

Următoarea listă prezintă câteva dintre principalele beneficii ale Setului de instrumente pentru aplicații multilingve:

  • Unul dintre cele mai consumatoare de timp aspecte de lucru cu localizare este copierea manuală a tuturor noilor valori pe care le-ați adăugat în limba de bază pentru toate celelalte fișiere de resurse. Setul de instrumente pentru aplicații multilingve va face acest lucru pentru dvs. În timpul procesului de construire, acesta va copia toate noile chei adăugate la AppResources.resx fișier pentru toate celelalte fișiere de resurse.
  • Acesta oferă o interfață vizuală mai bună pentru gestionarea traducerilor. Veți putea identifica imediat cheile noi pentru a traduce și seta o altă stare de traducere.
  • Acesta susține serviciile Bing pentru a traduce automat propozițiile. Evident, nu vă puteți baza complet pe traducerile automate, dar ele pot fi un bun început pentru procesul dvs. de localizare.
  • Este capabil să genereze în mod automat pseudo-limbă, care este o modalitate de a identifica imediat resursele netranslate și de a avea o idee mai bună despre cât spațiu ocupă textul în UI.

După ce ați instalat setul de instrumente, va trebui să îl activați pentru proiectul dvs. în Unelte meniul Visual Studio selectând Activați setul de instrumente pentru aplicații multilingve opțiune. După activarea acestuia, Visual Studio va colabora .XLF fișiere în loc de .resx fișiere (cu excepția limbii principale). În timpul procesului de compilare, setul de instrumente va genera toate cerințele necesare .resx dosare pentru tine.

Pentru a accesa interfața vizuală a setului de instrumente, faceți dublu-clic pe a .XLF fișier și veți vedea lista completă a resurselor. O pictogramă vă va notifica despre starea fiecărei resurse. Dacă resursa nu a fost încă tradusă, este afișat un cerc roșu. Dacă resursa a fost tradusă, dar necesită revizuire, este afișat un cerc galben. Dacă traducerea a fost aprobată, este afișat un cerc verde.

Forțarea unei limbi

Windows Phone va selecta automat fișierul de resurse care să corespundă limbii telefonului. Dacă lipsește un fișier de resurse corespunzător (deoarece limba aplicației dvs. nu acceptă limba telefonului), se va utiliza implicit.

Puteți schimba acest comportament, de exemplu, dacă doriți să oferiți utilizatorilor opțiunea de a alege limba pe care o preferă, indiferent de limba telefonului. Pentru a face acest lucru, va trebui să setați un alt cod de cultură atunci când App clasa (declarată în App.xaml.cs fișier) este creat:

aplicație publică () CultureInfo culture = new CultureInfo ("it-IT"); Thread.CurrentThread.CurrentCulture = cultura; Thread.CurrentThread.CurrentUICulture = cultura; 

După ce ați definit a CultureInfo obiect prin transmiterea codului culturii ca parametru, îl puteți atribui la două proprietăți diferite ale lui Thread.CurrentThread obiect:

  • CurrentCulture este cultura aplicației, care este utilizată pentru a defini caracteristici cum ar fi formatele de dată și oră, moneda etc..
  • CurrentUICulture este cultura interfeței utilizator, care este utilizată pentru a înțelege ce fișier de resurse să alegeți.

Această abordare este, de asemenea, necesară dacă doriți să utilizați pseudo-limbajul generat de Setul de instrumente pentru aplicații multilingve în timpul procesului de testare. Deoarece limba pseudo nu este o limbă oficială susținută de platformă, va trebui să o forțezi folosind QPS-Ploc cod de cultura, după cum se arată în următorul exemplu:

aplicație publică () CultureInfo culture = new CultureInfo ("qps-ploc"); Thread.CurrentThread.CurrentCulture = cultura; Thread.CurrentThread.CurrentUICulture = cultura; 

Folosirea limbajului pseudo este o modalitate foarte bună de a identifica textul care nu a fost încă tradus și de a verifica dacă aspectul aplicației dvs. este capabil să gestioneze textul lung. Ce se întâmplă de obicei atunci când dezvoltați o aplicație este că îl testați cu doar câteva limbi, uitând că un cuvânt care arată foarte scurt în limba engleză, de exemplu, poate fi foarte lung când este tradus în limba germană.

Experiența în magazin

După cum sa menționat în primul articol, Windows Phone Store este singura modalitate de a distribui aplicații utilizatorilor dvs., cu excepția cazului în care desfășurați o distribuție de întreprindere. Veți avea nevoie de un cont de dezvoltator plătit, care poate fi achiziționat de la Centrul Windows Dev. Taxa este de 19 USD pe an, dacă nu sunteți student înscris la programul DreamSpark, caz în care accesul este gratuit. Un beneficiu similar este acordat abonaților MSDN: în pagina de beneficii, puteți obține un jeton care vă permite să vă înregistrați gratuit.

Altele decât taxa anuală, Microsoft aplică o abordare a împărțirii veniturilor: 30% din prețul aplicației este păstrat de Microsoft, în timp ce restul de 70% este dat dezvoltatorului. Desigur, această partajare nu se aplică dacă aplicația este gratuită.

După ce contul dvs. de dezvoltator a fost activat și aplicația dvs. este gata, puteți să o trimiteți la portalul dev.windowsphone.com. În timpul procesului, va trebui să definiți caracteristicile de marketing ale aplicațiilor, cum ar fi prețul, metadatele și tipul de distribuție. După aceasta, depunerea este finalizată, iar procesul de certificare începe. Aplicațiile nu sunt publicate automat în Magazin; mai întâi trebuie să treacă un proces de certificare care validează aplicația atât din punct de vedere tehnic, cât și din punct de vedere al conținutului.

Testele tehnice vă asigură că aplicația oferă o experiență bună utilizatorilor: nu se blochează, este rapidă și receptivă, iar interfața cu utilizatorul nu este confuză.

Testele manuale verifică conținutul aplicației. Unele tipuri de conținut, cum ar fi pornografia, violența excesivă etc., nu sunt permise și vor duce la o eșec de certificare.

Când începeți procesul de trimitere, veți vedea o listă cu pașii pe care urmează să îi urmați pentru a finaliza procesul. Să examinăm pe scurt fiecare pas.

Pasul 1: Informații despre aplicație

Primul pas al procesului de publicare este folosit pentru a stabili câteva informații de bază, cum ar fi categoria aplicației, nivelul de preț și distribuția pieței. Aplicația dvs. va fi distribuită automat în toate țările acceptate la prețul pe care l-ați ales. Prețul va fi convertit automat în moneda fiecărei țări. 

În acest pas, puteți alege să excludeți automat țări precum China, unde politicile de conținut sunt mai stricte. Procesul de certificare oferă, de asemenea, o opțiune Selecția pieței și prețurile personalizate , care oferă o personalizare mai profundă: puteți alege să distribuiți aplicațiile numai în anumite țări și să personalizați prețul pentru fiecare țară.

Cealaltă opțiune importantă de setat în timpul acestui pas este canalul de distribuție. Există trei moduri de a distribui o aplicație Windows Phone:

  • Magazinul public: Aplicația poate fi descoperită și descărcată de orice utilizator.
  • Ascuns: Aplicația este încă disponibilă în magazinul public, dar nu poate fi descoperită de utilizatori. Singura modalitate de a găsi acest lucru este prin utilizarea link-ului direct care este generat când aplicația este publicată.
  • beta: Aplicația nu poate fi descoperită de utilizatori și, în plus, numai utilizatorii autorizați vor avea voie să o descarce. Utilizatorii sunt autorizați cu contul Microsoft la care au înregistrat telefonul. Veți putea include până la 10.000 de utilizatori în timpul procesului de trimitere. Acest canal de distribuție a fost creat pentru a sprijini testarea beta; în acest scenariu, cu toate acestea, aplicația nu va fi testată, dar va fi disponibilă utilizatorilor selectați în termen de două ore de la trimiterea aplicației. O aplicație beta expiră automat după 90 de zile după ce a fost trimisă pentru prima dată, indiferent de actualizările ulterioare.

Pasul 2: Încărcați și descrieți-vă XAP

A doua etapă necesită mai mult timp pentru a finaliza, deoarece va trebui să furnizați toate informațiile despre aplicație care vor fi afișate în Windows Phone Store.

Primul pas este să încărcați fișierul XAP. XAP este pachetul produs de Visual Studio când vă compilați proiectul și conține toate fișierele necesare pentru ca aplicația să ruleze. Veți găsi în interiorul lui cos din proiectul Visual Studio. Nu uitați să compilați întotdeauna aplicația în modul de eliberare; altfel nu va fi acceptată.

Odată ce ați încărcat XAP, portalul va afișa automat o recapitulare a caracteristicilor aplicației, cum ar fi rezoluțiile acceptate, capabilitățile necesare și așa mai departe. De asemenea, va trebui să setați numărul versiunii aplicației pe care o încărcați.

De asemenea, portalul va detecta în mod automat limbile pe care le susțineți, care vor fi afișate într-un meniu derulant numit Detalii despre limbă. Va trebui să setați metadatele aplicației (titlu, descriere și cuvinte cheie) pentru fiecare limbă acceptată. Aceste informații vor fi afișate în Magazin atunci când utilizatorul deschide pagina aplicației.

De asemenea, va trebui să încărcați cel puțin o captură de ecran (opt sunt permise) pentru fiecare limbă și rezoluție acceptată, plus pictograma aplicației. Acestea vor fi afișate în secțiunea de imagini din magazin. Pentru a realiza capturi de ecran, puteți utiliza unul dintre instrumentele disponibile în emulator.

După ce ați finalizat toți pașii necesari, portalul vă va afișa o recapitulare a trimiterii pentru confirmarea dvs..

Gestionarea ciclului de viață al aplicației

Odată ce cererea dvs. a fost certificată, veți avea acces la mai multe rapoarte care vă vor ajuta să înțelegeți cât de bine funcționează aplicația dvs. Există rapoarte de descărcare, rapoarte de vânzări și rapoarte de accidente.

Dacă aplicația nu trece procesul de certificare, veți găsi în tabloul de bord un fișier PDF care conține raportul complet. Acesta vă va spune în detaliu ce sa întâmplat și ce ar trebui să faceți pentru a rezolva problemele identificate.

În final, desigur, puteți actualiza și aplicația. În acest caz, va trebui pur și simplu să repetați toate etapele de depunere, deși toate câmpurile vor fi deja completate cu vechea informație și metadate. Procesul este, de asemenea, același, dacă doriți doar să schimbați informații precum prețul, descrierea și capturile de ecran. Trimiterea numai trebuie să fie certificată dacă ați schimbat orice informație care trebuie validată. Dacă modificați numai prețul, actualizarea este imediat publicată.

Achiziții în aplicație

O modalitate diferită de a face bani cu aplicațiile Windows Phone este de a sprijini achizițiile în aplicații. Pe lângă cumpărarea aplicației din Magazin, utilizatorii pot face cumpărături și în cadrul aplicației.

Achizițiile în aplicație au fost întotdeauna permise, însă Windows Phone 8 a introdus API-uri specifice și suport Microsoft Backend. Anterior, dezvoltatorul a fost responsabil pentru crearea infrastructurii de servere, gestionarea plăților și conectarea clientului.

Acum, puteți să vă bazați pur și simplu pe infrastructura magazinului. Utilizatorii vor plăti utilizând același card de credit pe care l-au folosit pentru achiziționarea de aplicații sau muzică din Magazin, iar portalul vă va permite să creați unul sau mai multe produse pe care să le cumpărați în cadrul aplicației. De asemenea, în acest caz, se va aplica abordarea privind partajarea veniturilor. Dacă doriți să o evitați, sunteți liber să implementați propria infrastructură de achiziție în aplicație; Microsoft nu obligă dezvoltatorii să utilizeze serviciile sale.

Este important să subliniem că achiziționarea în aplicații prin intermediul serviciilor Microsoft este permisă numai pentru produsele virtuale (cum ar fi caracteristici noi, nivele de joc etc.); nu poate fi folosit pentru a cumpăra bunuri fizice.

Două tipuri de produse sunt acceptate de Windows Phone:

  • Durables sunt produse care pot fi achiziționate o singură dată, cum ar fi caracteristicile aplicațiilor, pachetele de nivel etc..
  • Consumabile sunt produse care pot fi achiziționate din nou după ce au fost consumate, cum ar fi monedele virtuale.

Definirea unui produs

Produsele sunt definite în portal. În pagina aplicației, Produse oferă o opțiune pentru adăugarea de noi produse în aplicație. Definirea unui produs este similară cu trimiterea unei aplicații: trebuie să setați câteva proprietăți de bază cum ar fi numele, prețul și metadatele și apoi să o trimiteți.

Există două proprietăți cheie:

  • identificatorul produsului, care este un ID unic pe care îl utilizați în aplicația dvs. pentru a vă referi la produs
  • tipul de produs, care poate fi consumabil sau durabil

Interacționează cu produsele

Odată ce ați definit toate proprietățile, puteți începe să lucrați cu produsele din aplicația dvs. Probabil, prima cerință este să afișați lista produselor disponibile pe care utilizatorii le pot cumpăra. Acest obiectiv este realizat folosind CurrentApp clasa care aparține Windows.ApplicationModel.Store Spațiu de nume.

privat async void OnListStuffClicked (expeditor obiect, RoutedEventArgs e) ListingInformation listing = await CurrentApp.LoadListingInformationAsync (); Listă productListings = listing.ProductListings.Values.ToList (); Achiziții.ItemsSource = produseListuri; 

CurrentApp clasa expune LoadListingInformationAsync () , care returnează a ListingInformation obiect care stochează toate informațiile despre produsele disponibile. 

Produsele sunt stocate în interiorul productlistings Colectie. În eșantionul anterior, le afișăm utilizatorilor utilizând a LongListSelector control, care are următoarea definiție:

         

Fiecare ProductListing obiect conține aceeași proprietate pe care am atribuit-o produsului în Magazin. În proba anterioară, indicăm numele (Nume) și preț (FormattedPrice) a produsului.

După ce aveți lista de produse, trebuie să gestionați procesul de achiziție. Din nou, trebuie să folosim CurrentApp clasa, care oferă RequestProductPurchaseAsync () metodă. Ca parametru, vom trece ProductListing obiect selectat de utilizator.

privat async void OnSelectedPurchaseChanged (expeditor obiect, SelectionChangedEventArgs e) ProductListing selectedPurchase = Purchases.SelectedItem as ProductListing; așteptați CurrentApp.RequestProductPurchaseAsync (selectPurchase.ProductId, true); 

Odată ce ați cumpărat un produs, puteți verifica starea acestuia utilizând CurrentApp.LicenseInformation.ProductLicenses Colectie. Conține toate produsele compatibile cu statutul de licență asociat. Fiecare produs este identificat printr-o cheie, care este identificatorul unic atribuit atunci când l-am creat în portal.

privat void MainPage_Loaded (expeditor obiect, RoutedEventArgs e) if (CurrentApp.LicenseInformation.ProductLicenses.ContainsKey ("CoolProduct")) ProductLicense license = CurrentApp.LicenseInformation.ProductLicenses ["CoolProduct"]; dacă (license.IsActive) // Deblocați caracteristica.  altfel // Blocați caracteristica. 

În proba anterioară, putem determina dacă produsul cu CoolProduct identificatorul a fost achiziționat prin verificarea valorii Este activ proprietate. Operația se efectuează când pagina este încărcată: dacă produsul a fost cumpărat, deblocăm caracteristica respectivă, altfel vom aștepta ca utilizatorul să-l cumpere.

Pentru un produs consumabil, procesul de cumpărare este același. Singura diferență este că, după ce a fost consumată, trebuie să o raportăm astfel încât să poată fi "deblocată" pentru a fi achiziționată din nou.

Putem raporta apelând ReportProductFullfillment () metodă a CurrentApp clasa, care necesită ca parametru ProductLicense obiect care identifică produsul.

privat void OnConsumeButtonClicked (expeditor obiect, RoutedEventArgs e) var licenses = CurrentApp.LicenseInformation.ProductLicenses; dacă (license.ContainsKey ("CoolProductConsumable")) ProductLicense productLicense = licențe ["CoolProductConsumable"]; CurrentApp.ReportProductFulfillment (productLicense.ProductId); 

Testarea achizițiilor în aplicație

Din păcate, testarea unei achiziții în aplicație nu este foarte ușoară. Întrucât produsele trebuie să fie definite în portal, va trebui să trimiteți cererea înainte de a putea testa procesul de achiziție.

Un lucru în jurul este de a publica aplicația ca beta; deoarece aplicația nu trebuie să fie certificată, va fi disponibilă imediat pentru testare. Dezavantajul este că este greu să-l testați în mod corespunzător dacă ceva nu merge bine, deoarece nu îl puteți depana folosind Visual Studio ca în mod normal cu orice altă aplicație.

Din acest motiv, Microsoft a furnizat o bibliotecă de testare numită MockIAP. Scopul său este de a "derula" API-urile real de achiziție în aplicație, astfel încât operațiunile să nu fie executate împotriva serviciului Microsoft real, ci să utilizeze produse false care sunt definite în cadrul aplicației.

MockIAP poate fi descărcat de la MSDN și adăugat la soluția dvs. API-urile pe care le oferă sunt aceleași cu cele expuse de SDK-ul nativ; singura diferență este că aparțin MockIAPLib spațiu de nume în loc de Windows.ApplicationModel.Store Spațiu de nume.

Există două lucruri de făcut pentru a începe să utilizați biblioteca MockIAP. Primul este de a adăuga câteva directive compilaționale condiționate, astfel încât atunci când aplicația este compilată în modul de depanare (de obicei în timpul testelor), va folosi biblioteca mock. Când este compilat în modul de eliberare, va folosi serviciile Microsoft reale.

Următorul exemplu de cod arată cum va arăta declarația spațiului de nume în pagina dvs.:

#if DEBUG folosind MockIAPLib; folosind Store = MockIAPLib; # nu utilizați Windows.ApplicationModel.Store; # endif

Al doilea pas este definirea produselor pe care trebuie să le folosim. Întrucât aplicația nu va fi conectată la serviciile reale, trebuie să replicăm în cod produsele pe care le-am definit în portal.

Următorul cod arată o inițializare a eșantionului:

void privat SetupMockIAP () MockIAP.Init (); MockIAP.RunInMockMode (true); MockIAP.SetListingInformation (1, "en-US", "Aceasta este o aplicație probă", "1", "SampleApp"); ProductListing p = Produs de produs nou Name = "Produs răcoros", ProductId = "CoolProduct", ProductType = Windows.ApplicationModel.Store.ProductType.Durable, Descriere = "Un produs răcoros", FormattedPrice = "10.00 €", Tag = string. Goliți; MockIAP.AddProductListing ("CoolProduct", p); ProductListing p2 = noul produs de produs Name = "Cool consumable product", ProductId = "CoolProductConsumable", ProductType = Windows.ApplicationModel.Store.ProductType.Consumable, Description = "Un produs consumabil cool", FormattedPrice = "5.00 €" string.Empty; MockIAP.AddProductListing ("CoolProductConsumable", p2); 

Creăm două produse: una durabilă identificată de cheie CoolProduct, și una consumabilă identificată de cheie CoolProductConsumable. Fiecare produs este identificat de către ProductListing (aceeași clasă pe care am folosit-o cu serviciile reale) și o putem folosi pentru a defini toate proprietățile produsului care sunt de obicei recuperate de la serviciile Microsoft cum ar fi numele, tipul, prețul și așa mai departe.

Adăugăm fiecare produs utilizând AddProductListing () metodă a MockIAP clasă. După adăugarea produselor, putem utiliza API-urile standard pentru achizițiile în aplicații. Operațiile vor fi efectuate local cu produsele false în loc de serviciile reale, dar comportamentul va fi exact același lucru. Vom putea lista, cumpăra și consuma produsele disponibile.

Concluzie

Când vorbim despre aplicații mobile, dezvoltarea nu este singurul aspect pe care trebuie să-l luăm în considerare. Dacă vrem să fim de succes, trebuie să distribuim și să promovăm cererea noastră. În acest tutorial am discutat:

Acest tutorial reprezintă ultimul capitol din Windows Phone 8 Succinct, o carte electronică gratuită de la echipa de la Syncfusion. Sperăm că v-ați bucurat de această serie despre dezvoltarea de aplicații pentru Windows Phone 8!