SlideShare a Scribd company logo
1 of 31
© Sequence 2013
www.sequence.co.uk
Helping the Lions Roar
with Microsoft Win8 & WP8
February 2013
Jon Stoneman
jon.stoneman@sequence.co.uk
Steve Dunford
stephen.dunford@sequence.co.uk
Intro
For the next 17mins- ish we want to discuss the mobile market today and how the mobile
user is changing. We will also touch upon the opportunity that Windows 8 & Windows
Phone 8 brings to this key channel and your brands. However our main focus will be to
showcase the upcoming release of the Official application for the British & Irish Lions.
so lets begin…. First up
05 The Application
The brief
Create a multi-platform application that works on desktop,
tablet and mobile.
Excite fans with a slick application experience and
exclusive
content centered around this year’s tour.
Integrate with 3rd party APIs to provide real time
information.
TV goes social
Second screen
SolutionArchitecture
SolutionArchitecture
SolutionArchitecture
• App content & structure
controlled via CMS
• Apps fully functional offline
• Cache pre-populated with
content/images fromAzure
when building apps
Lions app core
Lions app core
Lions app core
• Uses the IoC built in to Mvx to implement a SOA
(Service OrientatedArchitecture) approach
• Allows for components to be swapped in / out easily
– Fake data source
– Different caching strategies
– Unit Testing / Mocking
Customizing MvvmCross
• Overriding Mvx components to do non “out-of-the-
box” stuff
• Adding custom cross-platform services
Customizing MvvmCross – Overriding Components
Customizing MvvmCross – Overriding Components
• App.cs (our MvxApplication in our PCL)
• This approach gets really messy really quickly…
//Inject our own image caching into Mvx
Cirrious.MvvmCross.Plugins.File.PluginLoader.Instance.EnsureLoaded();
var imageFileCache = new LionsImageCacheService(………);
this.RegisterServiceInstance<IMvxFileDownloadCache>(imageFileCache);
Customizing MvvmCross – Overriding Components
• Plugin Manager
public class DroidPluginManager : MvxFileBasedPluginManager
{
public DroidPluginManager()
: base("Droid")
{
}
protected override Cirrious.MvvmCross.Interfaces.Plugins.IMvxPlugin LoadPlugin(Type toLoad)
{
if (toLoad == typeof (Cirrious.MvvmCross.Plugins.DownloadCache.PluginLoader)) {
return new LionsCachePlugin();
}
return base.LoadPlugin(toLoad);
}
public class LionsImagePlugin : IMvxPlugin
{
public void Load()
{
//Do exactly what the Mvx plugin does, except load our custom service instead
}
}
}
Customizing MvvmCross – Cross-platform services
• Providing images from the app package – a platform
specific task
• In the core:
var packageProv = this.GetService<IPackagedImageProvider>();
var fileName = packageProv.GetPackagedImageFileName(httpSource);
if (!String.IsNullOrEmpty(fileName))
{
packageProv.CopyPackagedImage(fileName, (succeeded) =>
{
…
});
}
Customizing MvvmCross – Cross-platform services
• In Windows 8 Setup:
protected override void InitializeFirstChance()
{
this.RegisterServiceInstance<IPackagedImageProvider>(
new Win8PackagedImageProvider());
base.InitializeFirstChance();
}
Customizing MvvmCross – Manual Navigation
• Using some Mvx services to navigate when we’re not
in a view model
var myParams = new { nodeId }.ToSimplePropertyDictionary();
var req = new MvxShowViewModelRequest(
viewModelType, myParams, true, MvxRequestedBy.Bookmark);
this.GetService<IMvxViewDispatcherProvider>().Dispatcher.RequestNavigate(req);
Challenges
Multi-platform challenges
• Cross training
• Design / UX consistency
• Content
• ViewModel design
• PCLs
• MvvmCross
Windows Phone
• Emulator requires specific hardware
• Android emulator animosity
• Supporting WP7 and WP8
Windows 8
• ObservableCollections
iOS challenges
• Interface Builder
• PCL support
• Slow store publishing
Android
• Fragmentation
• Windows Phone emulator animosity
• Slow/unreliable emulator
• Memory leaks (InPurgeable)
Android (continued)
• Xamarin.Android
– Slow debug cycle
– Crashes & hangs
– Debugging PCLs
– Layout IntelliSense
– No layout validation on PC
– VS unhelpful error reporting for layouts/resources
Kindle
• It’s just Android!
Thank you.
Owen Davies/ Paul Thomas
+44 (0) 7976 095 519 / +44 (0) 7970 283 466
owen.davies@sequence.co.uk /
paul.thomas@sequence.co.uk
Fitzalan House, Fitzalan Road, Cardiff, CF24 0EL
Clerkenwell Workshops, 27-31 Clerkenwell Close, London, EC1R 0AT
enquiries@sequence.co.uk
www.sequence.co.uk
© Sequence 2012

More Related Content

What's hot

Building hybrid apps with Xamarin, Ryan Paul
Building hybrid apps with Xamarin, Ryan PaulBuilding hybrid apps with Xamarin, Ryan Paul
Building hybrid apps with Xamarin, Ryan Paul
Xamarin
 
Flex presentation1
Flex presentation1Flex presentation1
Flex presentation1
Nguyen Tran
 

What's hot (20)

Cross Platform Development with Xamarin
Cross Platform Development with XamarinCross Platform Development with Xamarin
Cross Platform Development with Xamarin
 
Xamarin: The Future of App Development
Xamarin: The Future of App DevelopmentXamarin: The Future of App Development
Xamarin: The Future of App Development
 
Introduction to xamarin
Introduction to xamarinIntroduction to xamarin
Introduction to xamarin
 
Xamarin Cross-Platform with Xamarin.Form, MvvmCross
Xamarin Cross-Platform with Xamarin.Form, MvvmCrossXamarin Cross-Platform with Xamarin.Form, MvvmCross
Xamarin Cross-Platform with Xamarin.Form, MvvmCross
 
Xamarin Overview by Houssem Dellai
Xamarin Overview by Houssem DellaiXamarin Overview by Houssem Dellai
Xamarin Overview by Houssem Dellai
 
Building hybrid apps with Xamarin, Ryan Paul
Building hybrid apps with Xamarin, Ryan PaulBuilding hybrid apps with Xamarin, Ryan Paul
Building hybrid apps with Xamarin, Ryan Paul
 
Animating Xamarin.Forms
Animating Xamarin.FormsAnimating Xamarin.Forms
Animating Xamarin.Forms
 
Hitchhicker's Guide to Using Xamarin Forms with RESTful Services
Hitchhicker's Guide to Using Xamarin Forms with RESTful ServicesHitchhicker's Guide to Using Xamarin Forms with RESTful Services
Hitchhicker's Guide to Using Xamarin Forms with RESTful Services
 
Intro to Building Mobile Apps with Xamarin
Intro to Building Mobile Apps with XamarinIntro to Building Mobile Apps with Xamarin
Intro to Building Mobile Apps with Xamarin
 
Adobe Flex
Adobe FlexAdobe Flex
Adobe Flex
 
MS Experiences 17 - Xamarin: Future of Mobile Development
MS Experiences 17 - Xamarin: Future of Mobile DevelopmentMS Experiences 17 - Xamarin: Future of Mobile Development
MS Experiences 17 - Xamarin: Future of Mobile Development
 
Smaller Not Taller: Defeating the mobile application architecture giant
Smaller Not Taller: Defeating the mobile application architecture giantSmaller Not Taller: Defeating the mobile application architecture giant
Smaller Not Taller: Defeating the mobile application architecture giant
 
Flex presentation1
Flex presentation1Flex presentation1
Flex presentation1
 
It's Time for Silverlight @iRajLal
It's Time for Silverlight @iRajLalIt's Time for Silverlight @iRajLal
It's Time for Silverlight @iRajLal
 
Code on the Beach 2018: Build an E-Commerce Chatbot on Azure Bot Framework v4
Code on the Beach 2018: Build an E-Commerce Chatbot on Azure Bot Framework v4Code on the Beach 2018: Build an E-Commerce Chatbot on Azure Bot Framework v4
Code on the Beach 2018: Build an E-Commerce Chatbot on Azure Bot Framework v4
 
Seattle Mobile .NET User Group - Nov. 13th 2019
Seattle Mobile .NET User Group - Nov. 13th 2019Seattle Mobile .NET User Group - Nov. 13th 2019
Seattle Mobile .NET User Group - Nov. 13th 2019
 
Xamarin.Forms
Xamarin.FormsXamarin.Forms
Xamarin.Forms
 
Xamarin 4 - the future of apps
Xamarin 4  - the future of appsXamarin 4  - the future of apps
Xamarin 4 - the future of apps
 
Dia 4.1 shared asset projects and portable class library (pcl) projects
Dia 4.1   shared asset projects and portable class library (pcl) projectsDia 4.1   shared asset projects and portable class library (pcl) projects
Dia 4.1 shared asset projects and portable class library (pcl) projects
 
Xamarin 0
Xamarin 0Xamarin 0
Xamarin 0
 

Similar to Helping the Lions Roar

IBM Impact session 1654-how to move an existing cics application to a smartphone
IBM Impact session 1654-how to move an existing cics application to a smartphoneIBM Impact session 1654-how to move an existing cics application to a smartphone
IBM Impact session 1654-how to move an existing cics application to a smartphone
nick_garrod
 

Similar to Helping the Lions Roar (20)

Real world apps with Xamarin and MVVM
Real world apps with Xamarin and MVVMReal world apps with Xamarin and MVVM
Real world apps with Xamarin and MVVM
 
Overview of React.JS - Internship Presentation - Week 5
Overview of React.JS - Internship Presentation - Week 5Overview of React.JS - Internship Presentation - Week 5
Overview of React.JS - Internship Presentation - Week 5
 
GDG Oslo: Hidden Android features
GDG Oslo: Hidden Android featuresGDG Oslo: Hidden Android features
GDG Oslo: Hidden Android features
 
Sunil Kumar Sarvepalli
Sunil Kumar SarvepalliSunil Kumar Sarvepalli
Sunil Kumar Sarvepalli
 
AD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
AD503: XPages Mobile Development in IBM Domino 9.0.1 and BeyondAD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
AD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
 
Rhomobile 5.5 Release Notes
Rhomobile 5.5 Release NotesRhomobile 5.5 Release Notes
Rhomobile 5.5 Release Notes
 
IBM MobileFirst Platform v7.0 Pot Intro v0.1
IBM MobileFirst Platform v7.0 Pot Intro v0.1IBM MobileFirst Platform v7.0 Pot Intro v0.1
IBM MobileFirst Platform v7.0 Pot Intro v0.1
 
IBM MobileFirst Platform v7.0 pot intro v0.1
IBM MobileFirst Platform v7.0 pot intro v0.1IBM MobileFirst Platform v7.0 pot intro v0.1
IBM MobileFirst Platform v7.0 pot intro v0.1
 
RICOH THETA x IoT Developers Contest : Cloud API Seminar
 RICOH THETA x IoT Developers Contest : Cloud API Seminar RICOH THETA x IoT Developers Contest : Cloud API Seminar
RICOH THETA x IoT Developers Contest : Cloud API Seminar
 
Synergy 2015 Session Slides: SYN320 Never Let Me Down Again - The Future of X...
Synergy 2015 Session Slides: SYN320 Never Let Me Down Again - The Future of X...Synergy 2015 Session Slides: SYN320 Never Let Me Down Again - The Future of X...
Synergy 2015 Session Slides: SYN320 Never Let Me Down Again - The Future of X...
 
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
 
The ultimate guide to optimize your react native app performance in 2022
The ultimate guide to optimize your react native app performance in 2022The ultimate guide to optimize your react native app performance in 2022
The ultimate guide to optimize your react native app performance in 2022
 
Mobilefirst - Build Enterprise Class Apps for Mobile First
Mobilefirst - Build Enterprise Class Apps for Mobile First Mobilefirst - Build Enterprise Class Apps for Mobile First
Mobilefirst - Build Enterprise Class Apps for Mobile First
 
IBM Impact session 1654-how to move an existing cics application to a smartphone
IBM Impact session 1654-how to move an existing cics application to a smartphoneIBM Impact session 1654-how to move an existing cics application to a smartphone
IBM Impact session 1654-how to move an existing cics application to a smartphone
 
UPSA.pdf
UPSA.pdfUPSA.pdf
UPSA.pdf
 
OSGi Mobile eclipsecon 09
OSGi Mobile eclipsecon 09OSGi Mobile eclipsecon 09
OSGi Mobile eclipsecon 09
 
Technology and Android.pptx
Technology and Android.pptxTechnology and Android.pptx
Technology and Android.pptx
 
What’s new for Developers in IBM Domino & Domino Designer 9.0.1
What’s new for Developers in IBM Domino & Domino Designer 9.0.1What’s new for Developers in IBM Domino & Domino Designer 9.0.1
What’s new for Developers in IBM Domino & Domino Designer 9.0.1
 
How React Native has changed Web and Mobile Application Development, Engineer...
How React Native has changed Web and Mobile Application Development, Engineer...How React Native has changed Web and Mobile Application Development, Engineer...
How React Native has changed Web and Mobile Application Development, Engineer...
 
Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)
 

More from Stuart Lodge

Hot tuna - from Sean Cross
Hot tuna - from Sean CrossHot tuna - from Sean Cross
Hot tuna - from Sean Cross
Stuart Lodge
 
MvvmCross Introduction
MvvmCross IntroductionMvvmCross Introduction
MvvmCross Introduction
Stuart Lodge
 
Ui testing for Windows Phone
Ui testing for Windows PhoneUi testing for Windows Phone
Ui testing for Windows Phone
Stuart Lodge
 
Ui Testing on Windows Phone
Ui Testing on Windows PhoneUi Testing on Windows Phone
Ui Testing on Windows Phone
Stuart Lodge
 
Uk Nuke Facebook Connect Authentication For Dot Net Nuke
Uk Nuke Facebook Connect Authentication For Dot Net NukeUk Nuke Facebook Connect Authentication For Dot Net Nuke
Uk Nuke Facebook Connect Authentication For Dot Net Nuke
Stuart Lodge
 

More from Stuart Lodge (18)

Hot tuna - from Sean Cross
Hot tuna - from Sean CrossHot tuna - from Sean Cross
Hot tuna - from Sean Cross
 
MvvmCross Introduction
MvvmCross IntroductionMvvmCross Introduction
MvvmCross Introduction
 
Wpug meeting - wp to win8 experiences
Wpug meeting - wp to win8 experiencesWpug meeting - wp to win8 experiences
Wpug meeting - wp to win8 experiences
 
AlphaLabs - Node Garden with Speech
AlphaLabs - Node Garden with Speech AlphaLabs - Node Garden with Speech
AlphaLabs - Node Garden with Speech
 
About Cirrious ltd
About Cirrious ltdAbout Cirrious ltd
About Cirrious ltd
 
C# Client to Cloud
C# Client to CloudC# Client to Cloud
C# Client to Cloud
 
How to make a pig udf
How to make a pig udfHow to make a pig udf
How to make a pig udf
 
C# - Azure, WP7, MonoTouch and Mono for Android (MonoDroid)
C# - Azure, WP7, MonoTouch and Mono for Android (MonoDroid)C# - Azure, WP7, MonoTouch and Mono for Android (MonoDroid)
C# - Azure, WP7, MonoTouch and Mono for Android (MonoDroid)
 
Mvvm cross – going portable
Mvvm cross – going portableMvvm cross – going portable
Mvvm cross – going portable
 
Dev evening - MonoTouch, MonoDroid, Mvvm MvvmCross and databinding
Dev evening - MonoTouch, MonoDroid, Mvvm MvvmCross and databindingDev evening - MonoTouch, MonoDroid, Mvvm MvvmCross and databinding
Dev evening - MonoTouch, MonoDroid, Mvvm MvvmCross and databinding
 
Wpug mvvm and data binding
Wpug   mvvm and data bindingWpug   mvvm and data binding
Wpug mvvm and data binding
 
Ui testing for Windows Phone
Ui testing for Windows PhoneUi testing for Windows Phone
Ui testing for Windows Phone
 
Ui Testing on Windows Phone
Ui Testing on Windows PhoneUi Testing on Windows Phone
Ui Testing on Windows Phone
 
How To use Map Blogs
How To use Map BlogsHow To use Map Blogs
How To use Map Blogs
 
Uk Nuke Rpx Authentication For Dot Net Nuke
Uk Nuke Rpx Authentication For Dot Net NukeUk Nuke Rpx Authentication For Dot Net Nuke
Uk Nuke Rpx Authentication For Dot Net Nuke
 
Uk Nuke Facebook Connect Authentication For Dot Net Nuke
Uk Nuke Facebook Connect Authentication For Dot Net NukeUk Nuke Facebook Connect Authentication For Dot Net Nuke
Uk Nuke Facebook Connect Authentication For Dot Net Nuke
 
UkNuke Facebook Connect Authentication For DotNetNuke 5
UkNuke Facebook Connect Authentication For DotNetNuke 5UkNuke Facebook Connect Authentication For DotNetNuke 5
UkNuke Facebook Connect Authentication For DotNetNuke 5
 
10 things I’ve learnt In the clouds
10 things I’ve learnt In the clouds10 things I’ve learnt In the clouds
10 things I’ve learnt In the clouds
 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Recently uploaded (20)

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 

Helping the Lions Roar

  • 1. © Sequence 2013 www.sequence.co.uk Helping the Lions Roar with Microsoft Win8 & WP8 February 2013 Jon Stoneman jon.stoneman@sequence.co.uk Steve Dunford stephen.dunford@sequence.co.uk
  • 2. Intro For the next 17mins- ish we want to discuss the mobile market today and how the mobile user is changing. We will also touch upon the opportunity that Windows 8 & Windows Phone 8 brings to this key channel and your brands. However our main focus will be to showcase the upcoming release of the Official application for the British & Irish Lions. so lets begin…. First up
  • 3.
  • 4.
  • 5.
  • 7. The brief Create a multi-platform application that works on desktop, tablet and mobile. Excite fans with a slick application experience and exclusive content centered around this year’s tour. Integrate with 3rd party APIs to provide real time information.
  • 12. SolutionArchitecture • App content & structure controlled via CMS • Apps fully functional offline • Cache pre-populated with content/images fromAzure when building apps
  • 15. Lions app core • Uses the IoC built in to Mvx to implement a SOA (Service OrientatedArchitecture) approach • Allows for components to be swapped in / out easily – Fake data source – Different caching strategies – Unit Testing / Mocking
  • 16. Customizing MvvmCross • Overriding Mvx components to do non “out-of-the- box” stuff • Adding custom cross-platform services
  • 17. Customizing MvvmCross – Overriding Components
  • 18. Customizing MvvmCross – Overriding Components • App.cs (our MvxApplication in our PCL) • This approach gets really messy really quickly… //Inject our own image caching into Mvx Cirrious.MvvmCross.Plugins.File.PluginLoader.Instance.EnsureLoaded(); var imageFileCache = new LionsImageCacheService(………); this.RegisterServiceInstance<IMvxFileDownloadCache>(imageFileCache);
  • 19. Customizing MvvmCross – Overriding Components • Plugin Manager public class DroidPluginManager : MvxFileBasedPluginManager { public DroidPluginManager() : base("Droid") { } protected override Cirrious.MvvmCross.Interfaces.Plugins.IMvxPlugin LoadPlugin(Type toLoad) { if (toLoad == typeof (Cirrious.MvvmCross.Plugins.DownloadCache.PluginLoader)) { return new LionsCachePlugin(); } return base.LoadPlugin(toLoad); } public class LionsImagePlugin : IMvxPlugin { public void Load() { //Do exactly what the Mvx plugin does, except load our custom service instead } } }
  • 20. Customizing MvvmCross – Cross-platform services • Providing images from the app package – a platform specific task • In the core: var packageProv = this.GetService<IPackagedImageProvider>(); var fileName = packageProv.GetPackagedImageFileName(httpSource); if (!String.IsNullOrEmpty(fileName)) { packageProv.CopyPackagedImage(fileName, (succeeded) => { … }); }
  • 21. Customizing MvvmCross – Cross-platform services • In Windows 8 Setup: protected override void InitializeFirstChance() { this.RegisterServiceInstance<IPackagedImageProvider>( new Win8PackagedImageProvider()); base.InitializeFirstChance(); }
  • 22. Customizing MvvmCross – Manual Navigation • Using some Mvx services to navigate when we’re not in a view model var myParams = new { nodeId }.ToSimplePropertyDictionary(); var req = new MvxShowViewModelRequest( viewModelType, myParams, true, MvxRequestedBy.Bookmark); this.GetService<IMvxViewDispatcherProvider>().Dispatcher.RequestNavigate(req);
  • 24. Multi-platform challenges • Cross training • Design / UX consistency • Content • ViewModel design • PCLs • MvvmCross
  • 25. Windows Phone • Emulator requires specific hardware • Android emulator animosity • Supporting WP7 and WP8
  • 27. iOS challenges • Interface Builder • PCL support • Slow store publishing
  • 28. Android • Fragmentation • Windows Phone emulator animosity • Slow/unreliable emulator • Memory leaks (InPurgeable)
  • 29. Android (continued) • Xamarin.Android – Slow debug cycle – Crashes & hangs – Debugging PCLs – Layout IntelliSense – No layout validation on PC – VS unhelpful error reporting for layouts/resources
  • 31. Thank you. Owen Davies/ Paul Thomas +44 (0) 7976 095 519 / +44 (0) 7970 283 466 owen.davies@sequence.co.uk / paul.thomas@sequence.co.uk Fitzalan House, Fitzalan Road, Cardiff, CF24 0EL Clerkenwell Workshops, 27-31 Clerkenwell Close, London, EC1R 0AT enquiries@sequence.co.uk www.sequence.co.uk © Sequence 2012