Your SlideShare is downloading. ×
0
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

10 tips for porting to Windows Phone 8

1,409

Published on

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

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,409
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • 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.
  • 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/

    ×