22. REST request for listing all containers REST Endpoint: http://[account].blob.core.windows.net GET http://iostest.blob.core.windows.net/?comp=list&include=metadata x-ms-date: Thu, 14 Apr 2011 20:30:00 GMT x-ms-version: 2009-09-19 x-ms-blob-type: BlockBlob Authorization: SharedKeyiostest:[ComputedHash] Blob Storage
23. …but how do I get that computed hash? REST Endpoint: http://[account].blob.core.windows.net To calculate the computed hash: AccountKey: /9seXadQ9HwOpXUO1jKxFN8q… Request: GETx-ms-blob-type:BlockBlobx-ms-date:Thu, 14 Apr 2011 20:30:00 GMTx-ms-version:2009-09-19/iostest/comp:listinclude:metadata Hash = HMACSHA256(UTF8Encode(Request), Base64Decode(AccountKey)) Blob Storage Account Key: /9seXadQ9HwOpXUO1jKxFN8q…
46. Pages Web Role Ability to host ASP.NET (MVC) application in Windows Azure
47. User-Agent: Mozilla/4.0 (compatible; MSIE 8.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) HTTP Request HTTP Response Pages Windows 7 / IE8.0 Web Role
48. UserAgent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_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 Web Role iPhone OS 4.3.1
49. Mozilla/5.0 (iPad; U; CPU OS 4_3_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.3.1 Mobile/7B334b Safari/531.21.10 HTTP Request HTTP Response Pages Web Role iPad OS 4.3.1
50. if (useragent contains ”MSIE”) User-Agent: Mozilla/4.0 (compatible; MSIE 8.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 ”iPhone”) Web Role UserAgent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5 Pages iPhone OS 4.3.1
51. if (useragent contains ”MSIE”) User-Agent: Mozilla/4.0 (compatible; MSIE 8.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) if (Response.Headers[“User-Agent”].Contains(“iPhone”)) { return View(“iPhone”); } if (Response.Headers[“User-Agent”].Contains(“iPad”)) { return View(“iPad”); } if (Response.Headers[“User-Agent].Contains... Windows 7 / IE8.0 View CSS Controller if (useragentcontains”iPhone”) Web Role ASP.NETMVC ViewEngine UserAgent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5 View CSS iPhone OS 4.3.1
53. “Great! …but it still looks like my original webpage”
54. if (useragent contains ”MSIE”) User-Agent: Mozilla/4.0 (compatible; MSIE 8.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”iPhone”) Web Role ASP.NETMVC ViewEngine UserAgent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5 View CSS iPhone OS 4.3.1
55. Mobile Web Frameworks iUI http://iui-js.org jQTouch http://jqtouch.com jQueryMobile http://jquerymobile.com
56. if (useragent contains ”MSIE”) User-Agent: Mozilla/4.0 (compatible; MSIE 8.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”iPhone”) Web Role ASP.NETMVC ViewEngine UserAgent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5 View CSS iPhone OS 4.3.1
58. Accessing the Camera? Local storage? “Looking good! But this is still a mobile web app. How about…” Getting location via GPS? Uploading to the AppStore?
59. Device-Integrated Web Frameworks Appcelerator http://appcelerator.com Unify http://unify.github.com/unify PhoneGap http://phonegap.com
60. WebViewController Native shell upload to AppStore if (useragent contains ”MSIE”) JavaScript bridge View CSS Controller iPhone OS 4.3.1 Native Libraries (ObjC) if (useragentcontains”iPhone”) Web Role ASP.NETMVC ViewEngine View CSS Web Storage Local HTML
66. AppRegistration Apple Push Notification Service gateway.sandbox.push.apple.com Native Application iPad/iPhone OS 4.3.1 User Acceptance
67.
68. AppRegistration Send Message Payload Apple Push Notification Service gateway.sandbox.push.apple.com Native Application Worker Role Windows Azure Queue iPad/iPhone OS 4.3.1 User Acceptance
69. AppRegistration Send Message Payload Apple Push Notification Service gateway.sandbox.push.apple.com Native Application Worker Role RequestChangedSession Details Windows Azure Queue iPad/iPhone OS 4.3.1 Web Role SessionUpdatedthrough Web User Acceptance Update Queue Receive Message, LaunchApp
72. Worker Role, Azure Queue, and Web Role can be used in conjunction with APN
73.
74. Conclusion Historically not much interaction between iOS and Windows Azure 3 2 1 Use Cloud for Storage Receive Notifications Access Applications Possibilities for building iPhone/iPad apps that leverage Windows Azure