• Save
10 tips for porting to Windows Phone 8
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

10 tips for porting to Windows Phone 8

on

  • 1,506 views

Presentation I gave at #MobDevCon providing tips for porting mobile apps to Windows Phone 8

Presentation I gave at #MobDevCon providing tips for porting mobile apps to Windows Phone 8

Statistics

Views

Total Views
1,506
Views on SlideShare
721
Embed Views
785

Actions

Likes
0
Downloads
0
Comments
0

8 Embeds 785

http://blog.mrlacey.co.uk 596
http://www.developer.nokia.com 126
http://developer.nokia.com 48
http://feeds.feedburner.com 9
http://33176002_a6640aa80b3511b7eb587ba85053ad36dc0c374f.blogspot.com 2
http://ranksit.com 2
http://www.newsblur.com 1
http://translate.googleusercontent.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Ask questions, butAround all day
  • How much will be relevant
  • Pride in craftsmanshipAttention to detailEngineer the experience to feel polished at every stageBe fast and fluidImmersive and responsiveUse motion to bring life and continuityAuthentically digitalTake advantage of the digital mediumInfographic not iconographicRealism, skeuoporphs and verisimilitudeDo more with lessPurposeful experienceContent, not chromeFierce reduction of UI elementsWin as oneNative integrationAcross form factors and experiencesStructure to aid creativity, not inhibit it
  • Because we can do principles without language
  • You can be visually stunning
  • Can adjust to the conventions of the platform
  • Can still reflect brand identity
  • iOS – Pure Android – iOS7Your app on Windows Phone won’t be compared visually with how it look on other platforms
  • Reviews last
  • Summary overview, encourage exploration, like a magazine cover
  • Not exactly like a tab control.Intended to show related items or differing views of the same data – e.g. emailNot for wizard type interface
  • Lots of optionsDefinitely value for money to be hadToolkit & Telerik
  • RadControls essentially freeLarge range of other Open Source controls available too: GeekChamp, GitHub, Codeplex
  • State machine3 lines of code is actually 60
  • ReSharper – CodeRush - JustCode
  • Aids testability
  • Is code behind bad
  • Suspend and resumeFAS & FAR
  • http://www.fanpop.com/clubs/nintendo/images/26503062/Agents – periodic & intensiveDownloading
  • Pride in craftsmanshipAttention to detailEngineer the experience to feel polished at every stageBe fast and fluidImmersive and responsiveUse motion to bring life and continuityAuthentically digitalTake advantage of the digital mediumInfographic not iconographicRealism, skeuoporphs and verisimilitudeDo more with lessPurposeful experienceContent, not chromeFierce reduction of UI elementsWin as oneNative integrationAcross form factors and experiencesStructure to aid creativity, not inhibit it
  • don't break the back stack - be predictable
  • don't break the back stack - be predictable
  • exceptions- end of flow- long navigation- poss. deep link. Toast, not tile?
  • exceptions- end of flow- long navigation- poss. deep link. Toast, not tile?
  • 190+ countries & 50 languagesLocalization can be an easier way to reach more users than porting to another platform
  • Still 10 million devices out there. Only just moved to less than 50% of WP devicesVery easy to support both, especially if not using functionality specific to 87 apps run unmodified + some functionality available via reflection
  • IDC estimates 30M WP devices by Christmas, but 200M Windows8 installsCan share code, even the same libraries as there are commonalities to the APIs of bothDon’t share the same UI though.

10 tips for porting to Windows Phone 8 Presentation Transcript

  • 1. Matt Lacey @mrlacey http://mrlacey.com/
  • 2. me Freelance developer Doing “mobile” development over 10 years Organise the Windows Phone User Group Wants to help you build awesome apps YOU Developer Experienced on other mobile platforms Some Windows Phone awareness Want to build awesome apps
  • 3. native x-platform games
  • 4. 1. Metro 2. Visuals 3. Controls 4. .net 5. MVVM 6. Lifecycle 7. Navigation 8. Memory 9. Localization 10. Beyond 8.0
  • 5. 1. Metro 2. Visuals 3. Controls 4. .net 5. MVVM 6. Lifecycle 7. Navigation 8. Memory 9. Localization 10. Beyond 8.0
  • 6. principles language&
  • 7. 1. Pride in craftsmanship 2. Be fast and fluid 3. Authentically digital 4. Do more with less 5. Win as one
  • 8. The OS implementation of the principles
  • 9. Can follow the principles without implementing the language
  • 10. 1. Metro 2. Visuals 3. Controls 4. .net 5. MVVM 6. Lifecycle 7. Navigation 8. Memory 9. Localization 10. Beyond 8.0
  • 11. Apps can be more than just white text on a black background
  • 12. Are drop shadows, gradients, rounded corners and gloss really a part of your brand?
  • 13. 1. Metro 2. Visuals 3. Controls 4. .net 5. MVVM 6. Lifecycle 7. Navigation 8. Memory 9. Localization 10. Beyond 8.0
  • 14. 1. Metro 2. Visuals 3. Controls 4. .net 5. MVVM 6. Lifecycle 7. Navigation 8. Memory 9. Localization 10. Beyond 8.0
  • 15. http://www.flickr.com/photos/winterofdiscontent/3231416496/ .net
  • 16. async C# 5
  • 17. var client = new WebClient(); client.DownloadStringCompleted += (sender, args) => MessageBox.Show(args.Result.Length.ToString(), "Response length", MessageBoxButton.OK); client.DownloadStringAsync( new Uri("http://www.mobdevcon.com/"));
  • 18. private async Task ShowPageLength() { var client = new HttpClient(); var response = await client.GetStringAsync( "http://www.mobdevcon.com/"); MessageBox.Show(response.Length.ToString(), "Response length", MessageBoxButton.OK); }
  • 19. [CompilerGenerated] private struct <MakeAwaitableRequest>d__0 : IAsyncStateMachine { public int <>1__state; public MainPage <>4__this; public AsyncVoidMethodBuilder <>t__builder; private object <>t__stack; private TaskAwaiter<string> <>u__$awaiter3; public HttpClient <client>5__1; public string <response>5__2; private void MoveNext() { try { TaskAwaiter<string> awaiter; bool flag = true; switch (this.<>1__state) { case -3: goto Label_00DD; case 0: break; default: this.<client>5__1 = new HttpClient(); awaiter = this.<client>5__1.GetStringAsync("http://www.mobdevcon.com/").GetAwaiter(); if (awaiter.IsCompleted) { goto Label_008A; } this.<>1__state = 0; this.<>u__$awaiter3 = awaiter; this.<>t__builder.AwaitUnsafeOnCompleted<TaskAwaiter<string>, MainPage.<MakeAwaitableRequest>d__0>(ref awaiter, ref this); flag = false; return; } awaiter = this.<>u__$awaiter3; this.<>u__$awaiter3 = new TaskAwaiter<string>(); this.<>1__state = -1; Label_008A: string introduced7 = awaiter.GetResult(); awaiter = new TaskAwaiter<string>(); string str = introduced7; this.<response>5__2 = str; MessageBox.Show(this.<response>5__2.Length.ToString(), "Response length", MessageBoxButton.OK); } catch (Exception exception) { this.<>1__state = -2; this.<>t__builder.SetException(exception); return; } Label_00DD: this.<>1__state = -2; this.<>t__builder.SetResult(); }
  • 20. public IList<BlogPost> FindPopularPosts(IList<BlogPost> allPosts) { var popularPosts = new List<BlogPost>(); foreach (var post in allPosts) { if (post.Views >= 10000) { popularPosts.Add(post); } } return popularPosts; }
  • 21. public IList<BlogPost> FindPopularPosts(IList<BlogPost> allPosts) { return allPosts.Where(p => p.Views >= 10000).ToList(); }
  • 22. 1. Metro 2. Visuals 3. Controls 4. .net 5. MVVM 6. Lifecycle 7. Navigation 8. Memory 9. Localization 10. Beyond 8.0
  • 23. MVP data binding+
  • 24. <TextBlock Text="{Binding SomeString}" /> <Button Command="{Binding DoSomething}" Content="do something" />
  • 25. http://flic.kr/p/9ny7B6
  • 26. MVVMLight Caliburn.Micro MVVMCros s
  • 27. 1. Metro 2. Visuals 3. Controls 4. .net 5. MVVM 6. Lifecycle 7. Navigation 8. Memory 9. Localization 10. Beyond 8.0
  • 28. http://flic.kr/p/9vjqMk
  • 29. http://flic.kr/p/aNbQui
  • 30. toast, tile & raw no interception no notification center
  • 31. 1. Metro 2. Visuals 3. Controls 4. .net 5. MVVM 6. Lifecycle 7. Navigation 8. Memory 9. Localization 10. Beyond 8.0
  • 32. 1. Metro 2. Visuals 3. Controls 4. .net 5. MVVM 6. Lifecycle 7. Navigation 8. Memory 9. Localization 10. Beyond 8.0
  • 33. Good news Better than WP7 Great tools Bad news Low spec devices Large/complex apps Images Background agents
  • 34. frame rate counters redraw visualizations cache visualizations memory counters application analysis execution profiling memory profiling
  • 35. 1. Metro 2. Visuals 3. Controls 4. .net 5. MVVM 6. Lifecycle 7. Navigation 8. Memory 9. Localization 10. Beyond 8.0
  • 36. .resx .xlf bindings custom
  • 37. 1. Metro 2. Visuals 3. Controls 4. .net 5. MVVM 6. Lifecycle 7. Navigation 8. Memory 9. Localization 10. Beyond 8.0
  • 38. 1. Metro 2. Visuals 3. Controls 4. .net 5. MVVM 6. Lifecycle 7. Navigation 8. Memory 9. Localization 10. Beyond 8.0
  • 39. http://dev.windowsphone.com/ http://www.developer.nokia.com/ http://mrlacey.com/