Occasionally I see this question pop up in various forms; usually an app developer has written some fairly clever code that relies on the
dynamic keyword in C#. Their code runs swimmingly on every other platform—and it also compiles just fine for iOS. But when they run the app on a physical iPhone or iPad they see runtime exceptions… often in strange and unexpected places. Finally, the problem gets tracked back to usage of
dynamic, but the question remains: “Why didn’t that work?”
Buried down in the Xamarin.iOS documentation, we can find a page that discusses the limitations of MonoTouch / Xamarin.iOS (https://developer.xamarin.com/guides/ios/advanced_topics/limitations/). On this page there exists some guidance regarding “Dynamic Code Generation” in which (among other things) it says that the Dynamic Language Runtime (DLR) is not allowed. OK, this seems related to the
dynamic keyword, but you might be wondering how, exactly. The topic mentions that this is somehow due to the
System.Reflection.Emit API not being available in iOS—but you clearly aren’t using that .NET feature, so what’s the deal?
It boils down to a security restriction in iOS. Apple does not allow apps to generate executable code at runtime, because this would be a potentially major security vulnerability.… Read more
Apple held its ‘Loop You In’ town hall in Cupertino today, and amid the often-inane product announcements (Apple Watch now comes with nylon bands!) was a tidbit developers may find interesting.
The company is launching a new platform for building healthcare apps, called CareKit. The open-source platform, available in April, will allow developers to take advantage of iOS devices’ cameras and sensors to create apps that monitor patients’ symptoms, suggest treatment, and more.
The first app developed on the platform, aimed at improving treatment for Parkinson’s disease, was released today and will be used by leading healthcare institutions like UCSF and Johns Hopkins. Other applications could include hastening recovery after surgery by having patients use their phones to check off steps in a care plan, measure their vital signs, then send that information off to a doctor who can adjust treatment on the fly.
CareKit is an extension of Apple’s existing ResearchKit project, which uses iOS devices in large-scale studies of conditions like diabetes and epilepsy.
Other takeaways from the event:
Xamarin Forms is a really great platform for mobile app development – we have used it on several apps now and had much better results than when trying to use the native SDK’s directly. Every now and then though you run up against a roadblock with the default renderer implementations where some feature (perhaps a key feature of your app) simply does not work the way it should. Secondary toolbars on iOS are one of those. I recently spent a couple of days trying to coax this feature into working properly before finally finding a solution (many other folks seemed to have simply given up on it).
Xamarin Forms supports the notion of Page-level toolbars. These are represented by the Page.ToolbarItems collection, and each ToolbarItem represents a clickable button that is hosted within the toolbar. In fact, there are two toolbars – the main “primary” toolbar that fills the right end of the navigation bar at the top of your screen, and also a “secondary” toolbar. You can only fit a few (two or three at most) toolbar items on the primary toolbar, and the rest are generally expected to go into the secondary toolbar. On Android this is done by adding an expansion button to the far right end of the primary toolbar which drops down a vertical menu containing the secondary toolbar items.… Read more
Wintellect Co-Founder Jeff Prosise was recently a guest on the latest episode of Coding 101 on Twit.tv. Father Robert Ballecer who calls himself the “Digital Jesuit” interviewed Jeff with Lou Maresca from Microsoft and they covered many topics starting with how Jeff got started with computer science having come from an engineering background before getting caught up in PC programming on the Commodore 64. They also discussed some of the challenges faced by developers in Jeff’s experience including how process or more precisely the lack of appropriate process is often the biggest impedence to success.
The discussion turned to building cross platform applications and Jeff discussed how he moved to Xamarin and Xamarin Forms development. While taking questions from the audience, he give this excellent advice for developers who are wondering whether they should follow the money to iOS or Android.
Go where your passion is, because at the end of the day you’re going to have the greatest chance of success if you are doing something you’re passionate about.
The rather lackluster Day 2 keynote from Build 2015 was short on big announcements as they looked to drive home the message of the power of the Windows Universal Platform including a few more details on the bridges they are building for Web, Android, and iOS developers to move their apps to Windows.
Day 2 started out with Steve Guggenheimer and John Shewchuck on stage highlighting apps built for Windows 10 including accelerometer equipped air drum sticks being built by Muzik with help from Questlove. After several video testimonials that crossed the “meaningless hype” barrier about halfway through, the audience was eager to “change gears”. David Treadwell came on stage for a more in-depth look at building Windows Universal apps and started by getting the audience rolling by letting them in on a bit of an inside joke about how Windows 10 is bringing back overlapping windowed apps all the way from 1986.
The last release should have been called Window 8.1 — David Treadwell
Kevin Gallo then proceeded to walk through building a single app which supported the features of every Windows 10 device including the 84″ Surface Hub, desktop PC, Surface Tablet, Windows Phone, Raspberry Pi, XBox 360, and HoloLens. … Read more
Microsoft’s CEO Satya Nadella took the stage at Build 2015 today and with a little help from his Microsoft colleagues made the strongest pitch yet for why all developers should build apps for Windows 10.
Build 2015 kicked off with a bang today as the three hour long keynote showcased Microsoft’s continued emphasis on empowering developers to build apps for any OS or device as well as how Windows 10 will fulfill the promise of a unified experience across devices.
Satya Nadella started the keynote with a description of his vision for Microsoft and the three areas of focus for the Build 2015 keynote which were Azure, Office, and Windows.
First up was Azure, Microsoft’s cloud platform. Scott Guthrie provided some updated statistic for the adoption of Azure including the fact that Microsoft has Azure data centers in 19 regions around the globe, more than AWS and Google combined. Azure has 90 thousand new subscribers each month and hosts 50 Trillion objects in their cloud storage, and have passed 425 million tenants in their Azure Active Directory service. They’re also up to 3 million developers using the Visual Studio Online service to host their code and manage their development projects.… Read more
With recent revelations from the RSA Security Conference highlighting gaping security holes in iOS8 as well as pointing out that many Android apps don’t perform proper SSL validation, one has to wonder is their mobile data safe anywhere?
Amit Yoran, President of the RSA kicked off their company’s annual conference with a scathing commentary on the current state of security in the software industry calling our current mindset “Living in the Dark Ages”.
We are living in the Dark Ages of security. We cling to outmoded world views and rely on tools and tactics from the past, and yet we are surprised to find ourselves living in an era of chaos and violence. We must cast off the past and enter an Age of Enlightenment by pursuing greater visibility into and understanding of our digital world. — RSA Conference Keynote
According to the Computer Emergency Response Team, 22,000 Apps on Google’s Play Store including Kaspersky and Webroot don’t validate the authenticity of certificates that they use to secure communications to back-end servers. This means that millions of users are vulnerable to certificate spoofing or using certificates that have been revoked by trusted certificate issuers. To make matters worse, the checking of validation for SSL certificates is turned ON by default by Google and has to be turned off by developers. … Read more
Last week, I published the first in a series of articles on building cross-platform mobile apps with Visual Studio 2015 and Xamarin Forms. In it, I presented an RPN calculator app that works on Windows Phone, Android, and iOS.
One subject I didn’t address in that article was how to respond to orientation changes in a Xamarin Forms app – that is, when the device goes from portrait mode to landscape or vice versa. By default, the screen rotates so that the content remains right-side-up. You can “lock” the orientation to prevent the screen from rotating (more on that in a moment), but the more common case is that you want to change what’s on the screen to adapt to the new dimensions.
I built a second version of my calculator app that does just that. When the device rotates to landscape mode, two additional columns of buttons appear on the left side of the screen – buttons for sin, cos, tan, and so on:
Most mobile operating systems fire some type of event when the device orientation changes. Xamarin Forms does not, at least not yet. (Xamarin Forms is a work in progress and it’s evolving rapidly. It hasn’t escaped the notice of the engineers in charge that the platform lacks a device-orientation event, so don’t be surprised if one is added soon.) In the meantime, the recommended way to respond to orientation changes is to override the page’s virtual OnSizeAllocated method and make any changes you wish to make inside the override.… Read more
You may have heard that Microsoft has released mobile versions of their Office apps for Android and iOS, but that’s only scratching the surface of what they’ve published. What’s more some of their apps are more popular on Android and iOS than Windows Phone.
Microsoft’s recent move to open up the Office platform to Android and iOS has received quite a bit of press and many of the apps are garnering good reviews including recent praise from the Wall Street Journal for the Outlook for iOS and Android app. No longer running under the “First-and-best on Windows” flag, Microsoft has continued to release or upgrade apps for Android and iOS that promote their online and cloud services. Recent news of Microsoft investing $70M in Cyanogen, the makers of the popular CyanogenMod version of Android is even more proof of their determination to ingrain themselves into other mobile OS ecosystems. But will they be successful in helping Cyanogen “take Android away from Google”?
Microsoft currently has 61 apps available on the Google Play Store and 48 available for iPhone on iTunes. These include the names you would normally think of like the Office apps, Bing Search, and OneDrive. But here are a few that you might not expect.… Read more
Get a tour of the basics of Apple Watch development!
Apple released their much awaited Apple Watch SDK called WatchKit this week. Through the WatchKit we start to get an idea of just what the Apple Watch is capable of and also what it’s not. Here are some of the things to know to help get you started building Apple Watch Apps.
Perhaps the most important thing to understand is that every Apple Watch app is an extension of an iPhone app. The Apple Watch app consists of the bundle of storyboard and static resources required to display the app UI on the watch, but the real power for any app comes from its parent iPhone app. UI elements cannot be dynamically added or removed on the watch by the Watch App. Communications between the iPhone app and the Watch App is performed via a WatchKit Extension as shown in this diagram. This extension allows actions taken on the Watch to be communicated to the iPhone app and the iPhone app then drives the UI on the watch.
There are three types of screens available for developers on a watch app. These are: