15. www.comscore.com/Products_Services/Product_Index/MobiLens (trend used for Dec and Mar) WM6 loses 10% share in 12 months. What will WP7 bring? RIM remains strong, but steadily eroding share Android on fire. From 2.8% to 28.7% in 12 months iOS holding steady around 25% market share
16. Many customers looking at building applications targeting iPhone, iPad, and Android devices
17. But what if you have an existing investment in Microsoft technology?
18.
19. To give you the tools and knowledge to connect iPhone, iPad, and Android devices to a Microsoft platform and infrastructure
20.
21.
22. “I’ve got an existing web site...” “How do I make it render well on the iPhone and Android handsets?”
25. UserAgent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5 HTTP Request HTTP Response Pages iPhone OS 4.2
26. Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.2.1 Mobile/7B334b Safari/531.21.10 HTTP Request HTTP Response Pages iPad OS 4.2
27. Mozilla/5.0 (Linux; U; Android 2.2; en-gb; Nexus One Build/FRF50) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 HTTP Request HTTP Response Pages Android 2.2
28. if (useragent contains ”MSIE”)… User-Agent: Mozilla/4.0 (compatible; MSIE8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; MS-RTC LM 8) Windows 7 / IE8.0 Pages if (useragentcontains ”Android”)… Mozilla/5.0 (Linux; U; Android2.2; en-gb; Nexus One Build/FRF50) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Pages Android 2.2
29. if (useragent contains ”MSIE”)… User-Agent: Mozilla/4.0 (compatible; MSIE8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; MS-RTC LM 8) Windows 7 / IE8.0 View CSS Controller if (useragentcontains ”Android”)… Mozilla/5.0 (Linux; U; Android2.2; en-gb; Nexus One Build/FRF50) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 View CSS Android 2.2
30. if (useragent contains ”MSIE”)… User-Agent: Mozilla/4.0 (compatible; MSIE8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; MS-RTC LM 8) Windows 7 / IE8.0 View CSS Controller if (useragentcontains ”Android”)… Mozilla/5.0 (Linux; U; Android2.2; en-gb; Nexus One Build/FRF50) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 View CSS Android 2.2
31. if (useragent contains ”MSIE”)… User-Agent: Mozilla/4.0 (compatible; MSIE8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; MS-RTC LM 8) Windows 7 / IE8.0 View CSS Controller ASP.NET MVC ViewEngine if (useragentcontains ”Android”)… Mozilla/5.0 (Linux; U; Android2.2; en-gb; Nexus One Build/FRF50) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 View CSS Android 2.2
68. Native Application SOAP (WS-I) iPad/iPhone OS 4.2 (ObjC) Option 3: wsdl2objc (http://code.google.com/p/wsdl2objc/) Version 0.7-pre1 recommended WSDL XSD XSD
69. Native Application SOAP (WS-I) iPad/iPhone OS 4.2 (ObjC) Step 1: Ensurethat the namespace of the XSD elementsmatches the namespace of the service [DataContract(Namespace = "http://neudesic.com")] WSDL XSD XSD Step 2: Considerflattening WSDL and XSD http://wcfextras.codeplex.com
71. wsimport Usage: wsimport [options] <WSDL_URI> where [options] include: -b <path> specify jaxws/jaxb binding files or additional schemas (Each <path> must have its own -b) -B<jaxbOption> Pass this option to JAXB schema compiler -catalog <file> specify catalog file to resolve external entity references supports TR9401, XCatalog, and OASIS XML Catalog format. -d <directory> specify where to place generated output files -extension allow vendor extensions - functionality not specified by the specification. Use of extensions may result in applications that are not portable or may not interoperate with other ... Native Application SOAP (WS-I) Android 2.2 (Java) Youwouldthinkthatwsimportshouldwork
80. Token Length Payload Length JSON formatted 0 0 32 deviceToken 0 34 message Native Application App User Acceptance TCP SSL connection Anytime when on Every 15 mins when sleep iPad/iPhone OS 4.2 (ObjC) Worker Role
88. Custom: Native Client to Services or Mobile Web Middle Tier Packaged: Use AppStore/Market Client iPad/iPhone OS 4.2 Basic: Use OOB Mobile Rendering SharePoint Server 2007/2010 Android 2.2
91. Basic: Use OOB Mobile Rendering Pros: Easy to setup, works out of the box (with SPS2010) Cons: Basic, non-native CSS. No support for browser-based NTLM from Android. No caching of username/password credentials. iPad/iPhone OS 4.2 SharePoint Server 2007/2010 Android 2.2
92. Custom: Native Client to Services or Mobile Web Middle Tier Packaged: Use AppStore/Market Client iPad/iPhone OS 4.2 Basic: Use OOB Mobile Rendering SharePoint Server 2007/2010 Android 2.2
93. iPad/iPhone OS 4.2 SharePoint Server 2007/2010 Android 2.2 http://itunes.apple.com/us/app/filamente-sharepoint-client
94. iPad/iPhone OS 4.2 SharePoint Server 2007/2010 Android 2.2 http://itunes.apple.com/us/app/shareplus-office-mobile-client
96. Packaged: Use AppStore/Market Client Pros: Cheap ($10 – $20 per client). Multiple authentication schemes. Cached credentials. Some offline/sync support. Cons: All site content for mobile users. Leaf nodes are mostly read only HTML (e.g. Announcements). Most solutions are iPhone only (limited Android) iPad/iPhone OS 4.2 SharePoint Server 2007/2010 Android 2.2
97. Custom: Native Client to Services or Mobile Web Middle Tier Packaged: Use AppStore/Market Client iPad/iPhone OS 4.2 Basic: Use OOB Mobile Rendering SharePoint Server 2007/2010 Android 2.2
98. SPWeb (2007) ODATA (2010) iPad/iPhone OS 4.2 SharePoint Server 2007/2010 Android 2.2
99. SPWeb (2007) ODATA (2010) iPad/iPhone OS 4.2 Mobile Web Rendering of information useful to Mobile clients SharePoint Server 2007/2010 ASP.NET MVC Middle Tier (jQueryMobile) Android 2.2
100. SPWeb (2007) ODATA (2010) iPad/iPhone OS 4.2 Mobile Web Rendering of information useful to Mobile clients SharePoint Server 2007/2010 ASP.NET MVC Middle Tier (jQueryMobile) Android 2.2
101. SPWeb (2007) ODATA (2010) Custom: Native Client or Middle Web Tier Pros: Complete custom solution. Can even hide fact that back end is SharePoint-based. Cons: More expensive option. Limitations with SOAP client libraries for iPhone/Android. iPad/iPhone OS 4.2 Mobile Web Rendering of information useful to Mobile clients SharePoint Server 2007/2010 ASP.NET MVC Middle Tier (jQueryMobile) Android 2.2
103. Custom: Native Client to Services or Mobile Web Middle Tier Packaged: Use AppStore/Market Client iPad/iPhone OS 4.2 Basic: Use OOB Mobile Rendering Dynamics CRM 4.0/2011 Android 2.2
108. Basic: Use OOB Mobile Rendering Pros: Easy to setup, works out of the box. Forms based authentication works with non-NTLM browsers. Cons: Basic, non-native CSS. Controls a little awkward. No user-agent detection. No caching of username/password credentials. iPad/iPhone OS 4.2 Dynamics CRM 4.0/2011 Android 2.2
109. Custom: Native Client to Services or Mobile Web Middle Tier Packaged: Use AppStore/Market Client iPad/iPhone OS 4.2 Basic: Use OOB Mobile Rendering Dynamics CRM 4.0/2011 Android 2.2
110. iPad/iPhone OS 4.2 Dynamics CRM 4.0/2011 Android 2.2 http://tendigits.com/mobileaccess.html
111. iPad/iPhone OS 4.2 Dynamics CRM 4.0/2011 Android 2.2 http://itunes.apple.com/us/app/cwr-mobile-crm-v4-2-for-microsoft
113. Packaged: Use AppStore/Market Client Pros: Offline access. Cached credentials. Cons: All site content for mobile users. Most solutions are iPhone only (limited Android) iPad/iPhone OS 4.2 Optimized rendering Dynamics CRM 4.0/2011 CWR/TenDigits Middle Tier Android 2.2
114. Custom: Native Client to Services or Mobile Web Middle Tier Packaged: Use AppStore/Market Client iPad/iPhone OS 4.2 Basic: Use OOB Mobile Rendering Dynamics CRM 4.0/2011 Android 2.2
115. SOAP Web Services (4.0) REST Endpoint (2011) Updated Web Services (2011) ODATA (2011) iPad/iPhone OS 4.2 Dynamics CRM 4.0/2011 Android 2.2
116. SOAP Web Services (4.0) REST Endpoint (2011) Updated Web Services (2011) ODATA (2011) iPad/iPhone OS 4.2 Dynamics CRM 4.0/2011 Android 2.2
117. Custom: Native Client or Middle Web Tier Pros: Complete custom solution. Can even hide fact that back end is Dynamics-based. Cons: Limitations with SOAP client libraries for iPhone/Android. On CRM 2011, REST endpoint only provides limited CRUD. Web Service (SOAP) endpoint uses WS-Security with Kerberos. SOAP Web Services (4.0) REST Endpoint (2011) Updated Web Services (2011) ODATA (2011) iPad/iPhone OS 4.2 Dynamics CRM 4.0/2011 Android 2.2
130. Native Application ODATA.svc public class ODATA : DataService<SessionModelContainer> { public static void InitializeService(DataServiceConfigurationconfig) { config.SetEntitySetAccessRule("*", EntitySetRights.AllRead); config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2; } } ODATA iPad/iPhone OS 4.2 (ObjC) WCF Data Service EDMX SQL Server
131. Native Application ODATA iPad/iPhone OS 4.2 (ObjC) WCF Data Service EDMX SQL Server http://interoperabilitybridges.com
132. Native Application odatagen ./odatagen /uri=http://sguest01/TRMobile/Services/ODATA.svc /out=. -rw-r--r-- 1 Simon staff 5738 Feb 10 13:09 SessionModelContainer.h -rw-r--r-- 1 Simon staff 14735 Feb 10 13:09 SessionModelContainer.m OData iPad/iPhone OS 4.2 (ObjC) WCF Data Service EDMX SQL Server
133. iPhoneClientViewController.m -(IBAction)callODATAService:(id)sender { SessionModelContainer *proxy = [[SessionModelContaineralloc] initWithUri:@"http://sguest01/TRMobile/Services/ODATA.svc" credential:nil]; QueryOperationResponse *response = [proxy execute:@"Sessions"]; NSMutableArray *sessions =[response getResult]; for (id session in sessions) { NSLog(@"Session Code: %@",[session getCode]); NSLog(@"Session Title: %@", [session getTitle]); } NSLog(@"Complete"); } Native Application OData iPad/iPhone OS 4.2 (ObjC) WCF Data Service EDMX SQL Server
138. Note: Must be done with the full JSE version of Restlet.jarlibraries (no generator in the Android version)! Native Application Proxy Generation lib Simon$ java -cp org.restlet.jar:org.restlet.ext.xml.jar:org.restlet.ext.atom.jar:org.restlet.ext.freemarker.jar:org.restlet.ext.odata.jar:org.freemarker.jar org.restlet.ext.odata.Generator http://sguest01/TRMobile/Services/ODATA.svc ~/Desktop/ARC310/restlet-proxy/ --------------------------- OData client code generator --------------------------- ... The source code has been generated in directory: /Users/Simon/Desktop/ARC310/restlet-proxy ODATA Android 2.2 WCF Data Service EDMX SQL Server
139. Main.java TrmobileWebModelsServiceservice = new TrmobileWebModelsService(); Query<sessionmodel.Session> query = service.createSessionQuery("/Sessions?$filter=startswith(Code,'VIR')%20eq%20true"); for (Session session : query) { // do work } Native Application OData Android 2.2 WCF Data Service EDMX SQL Server
151. Use MT for library only Interface Builder XCode MonoDevelop Uses Uses Import existing UI Kit Objective C C# Library Saved as Compiles to Mono compiler XIB MSIL AOT compiler Native mylibrary.dll.s iPad/iPhone OS 4.2
152. Eclipse optional MonoDevelop Eclipse ADT Uses Saved as Android bindings C# main.axml Mono compiler MSIL <application>.apk – includes assemblies and “runtime” Dalvik VM Android 2.2