
Byens Puls til WP og W8
For snart længe siden (27-12-2010) publicerede jeg Byens Puls til Windows Phone, kan hentes her: http://www.windowsphone.com/da-DK/apps/a3e7d8ec-c70b-e011-9264-00237de2db9e
Det var et weekend projekt og det tog ca. 9 timer at ”finde frem til live data” og udvikle appen i sin første version. Sjovt nok blev den ret populær, så efter nogle måneder sendte jeg en opdateret version ind, med et lidt lækre UI og bedre netværksperformance.
Så en dag poppede en mail ind fra DSB, de havde opdaget min lille ”plagiat app” til Windows Phone og ville gerne købe den… så det fik de lov til… nej jeg er ikke blevet rig af salget ;)
Samtidig med Windows Phone appen tilbød jeg dem at købe min HTML 5 version af selv samme app, http://byenspuls.martinesmann.dk, men det afslog de desværre. HTML 5 versionen er lavet som Web App til WebKit (iOS, Android) og IE (Windows) og fungere samtidig fint på Windows Phone.
I morges besluttede jeg så at lave min Byens Puls Web App om til en native Windows 8 Metro app samt en Metro Web App (pined site).
I Windows 8 er det muligt at lave native apps direkte i HTML/JS, så jeg kopierede bare min html + javascript + jQuery + alt muligt andet JS halløj direkte ind i projektet … sådan noget virker aldrig i første forsøg! Og ganske rigtigt jeg fik en fejl for denne kodelinje:
return "external" in window && "Notify" in window.external;
Fejlen lyder noget i retning af ”forkert brug af ’in’ i statement”, det virker nu fint alle andre steder end i en native Windows 8 app… så jeg har bare ændret koden til følgende:
if ("Windows" in window) // Windows 8 specific
return false;
else
return "external" in window && "Notify" in window.external;Sjovt nok er det præcis samme ”brug” af ’in’ som tidligere gav fejlen, så der er måske noget specielt ved ”window” i en W8 html app?!
Herefter loader appen uden fejl men den henter ikke data fra byens puls serveren. Ikke overraskende da jeg bruger en relativ Uri (serverside cross domain get):
$.get(uri, null, endGetData, "text");
Naivt retter jeg blot til den komplette server Uri … og så hentes der sørme data! Og herefter virker alt!
Imponerende nok virker jQuery.get også uden at der skal ændres andet end url’en! Forrygende! Så det tog ca. 3-4 min. at konvertere min web app til en Windows 8 native app. En app som vel og mærke ikke var forberedt til Windows 8!
Når det er sagt og gjort er den jo ikke blevet mere Metro UI lækker af konverteringen, så næste skridt må være at lege lidt med CSS!
Windows Phone kræver en native app (silverlight eller XNA) så her er ”konverteringen” ikke helt så enkel. Det er dog muligt, rimelig elegant, at bygge en native app op omkring et html view (WebBrowser control i WP terminologi) … det tar’ jeg i en senere blogpost!
Så er der kun tilbage, igen, at spørge DSB om de ikke skulle skifte deres java applet ud med det nye og smarte HTML5/JS og samtidig få en native Windows 8 app + en opdateret Windows Phone app med i købet :)
Martin arbejder i Microsoft med udvikling af apps til Windows Phone og Windows 8, samt har ansvaret for den tekniske relation til universiteterne i Danmark. Han blogger fortrinsvis om apps udvikling til Windows platformen.
Follow @martinesmannKommentarer (2)
Hej Martin.
Spændende med din byens puls.
Jeg har igennem længere tid rodet en smule med et forsøg på at portere Landets puls til noget nyt og smart, som kan køre på nyere systemer (og andre end windows).
Jeg ligger inde med nogle links og et par algorithmer.
Hvis du har lyst til at tage over (Jeg er kun hobbyprogrammør/slamkoder) eller se hvad jeg har fundet frem til, så sig endelig til.
min mail er baehat snabel-a baehat.dk
Med venlig hilsen
Rasmus
Det lyder da meget spændende! jeg sender dig en mail og så kan vi se om vi kan bygge lidt videre på det sammen :)

