230 likes | 316 Views
Windows Phone Geek Night. Mads Jensen Software Pilot, Trifork mjn@trifork.com twitter: ArbitraryJensen. Niels Ladegaard Beck Software Pilot, Trifork nlb@trifork.com twitter: nielslbeck. 12/6-2012. Agenda. Præsentation af Danske Banks app Udviklingsmiljø Pakker/toolkits
E N D
Windows Phone Geek Night Mads Jensen Software Pilot, Trifork mjn@trifork.com twitter: ArbitraryJensen Niels Ladegaard Beck Software Pilot, Trifork nlb@trifork.com twitter: nielslbeck 12/6-2012
Agenda • Præsentation af Danske Banks app • Udviklingsmiljø • Pakker/toolkits • Metro/stærkt brand • Navigation • Styling • Test • Deployment • Bugs/aha-oplevelser/husk
Præsentation af Danske Banks app • Lavet i samarbejde med Danske Bank og in2media • 4 seperate apps • Danske Bank • Fokus Bank • Sampo Pankki • Danske Bank SE
Udviklingsmiljø • Visual Studio 2010 • ReSharper • TeamCity • Windows Server 2008 • Virtualiseret Windows 7 • Agent på Windows 7 bærbar • Testmobiler • Samsung Omnia 7 • HTC Radar • Nokia Lumia 800
Byggemiljø • Udfordring • Release af apps til forskellige lande.
Løsning • Opret Debug/Release til de forskellige lande. ReleaseDK DebugDK, ... <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'ReleaseDK|AnyCPU'"> … <ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugDK|AnyCPU' OR '$(Configuration)|$(Platform)' == 'DebugSE|AnyCPU' OR '$(Configuration)|$(Platform)' == 'DebugFI|AnyCPU' OR '$(Configuration)|$(Platform)' == 'DebugNO|AnyCPU'"> …
Løsning part 2 • Conditional compilation symbols #if DK // some code #elif NO // come code Norway ... #endif
Sproghåndtering • Google spreadsheet • Custom tool using (var resx = new ResXResourceWriter(ResourcesLabels + localeValue + ".resx")) { foreach (var key in keys) resx.AddResource(key, bundle[key]); }
Pakker/toolkits • MetroGridHelper • MVVM Light Toolkit • Code snippets, base classes, ViewModelLocator, RelayCommand og Messaging • BindableApplicationBar • Json.NET • Kommunikation med backenden • Persistering i isolated storage • Silverlight for Windows Phone Toolkit • Date/time pickers, ListPicker, LockablePivot, PhoneTextBox, TiltEffect samt transitions • Async CTP
Metro/stærkt brand • Metro designsproget • Ingen gradients • Ingen streger • Ingen skygger • Ingen odd/even-rows i lister • Animationer • Win as one • Brandet sikret gennem • Skrifttype i overskrifter • Genbrug af ikoner • Ikonerne på valutalisten er runde og med lys – men uden skygger • Svage gradients på samtlige sider
Navigation • NavigationService • URI-baseret • Parametre via querystring • Ikke typestærk navigation • Ingen returværdi • Navigation til view – ikke viewmodel
Styling • Don’t! • Styling er en smal sag – men... • ListPicker • DatePicker • Tray’en
Test • Unittests • NUnit • Mocking • Integration i udviklingsmiljøet • NCrunch
Integrationstest • Cucumber Feature: Search courses In order to ensure better utilization of courses Potential students should be able to search for courses Scenario: Search by topic Given there are 240 courses which do not have the topic "biology" And there are 2 courses A001, B205 that each have "biology" as one of the topics When I search for "biology" Then I should see the following courses: | Course code | | A001 | | B205 |
Test Automation Frameworks • Cucumber, Calabash, Robotium, Apple UIAutomation, Capybara, Selenium and Watir • WindowsPhoneTestFramework
Feature: App Test In order to test my app As a WP7 Developer I want to see it start and take a picture of it Scenario: Start the app Given my app is uninstalled And my app is installed And my app is running Then I wait 5 seconds Then take a picture
Controls • Customs controls • Behaviors <TextBox InputScope="Search" Text="{Binding SearchText, Mode=TwoWay}" Name="searchTextBox"> <i:Interaction.Behaviors> <util:UpdateOnSearchBehavior/> </i:Interaction.Behaviors> </TextBox>
Deployment - udviklingsfasen • 2 muligheder • Deployment via Marketplace – beta apps • LiveID til mobiler skal benyttes • Ikoner, screenshots, tekster osv. • Unik URL sendes manuelt rundt • App’en downloades direkte via telefonen • Ingen opdateringer • Test-telefoner låses op som udviklertelefoner • Som standard 3 devices – henvendelse til supporten for flere • XAP-fil distribueres • App’en deployes via Application Deployment Tool
Deployment - Marketplace • Læs reglerne for publicering på Marketplace • Læg i god tid en prøveversion på Marketplace (den kan skjules) for at se, hvor Microsoft finder ”fejl” • Undgå storstilet reklamekampagne umiddelbart i forbindelse med lanceringen af appen • Godkendelseprocessen kan trække ud – evt. med afvisning • Efter godkendelse kan det ta’ op til 48 timer før app’en kan hentes • En statusændring (f.eks. skjult til synlig) kan ligeledes ta’ 48 timer
Bugs/aha-oplevelser/husk • Silverlight Toolkit for Windows Phone • PhoneTextBox Hint ses stadig ved databinding af Text • Hvid tekst i tray’en • Sprog på views • Komma i stedet for punktum på numerisk tastatur • Ordbogen i TextBox med InputScope=Search • TextChanged på TextBox • GUI-tråden
Links • Application Certification Requirements for Windows Phonehttp://msdn.microsoft.com/en-us/library/hh184843(v=VS.92).aspx • WindowsPhoneTestFrameworkhttps://github.com/Expensify/WindowsPhoneTestFramework