Showing posts with label iOS. Show all posts
Showing posts with label iOS. Show all posts

Thursday, June 14, 2018

Revisiting the takeaways from WWDC 2018

I was reviewing the announcements from WWDC and thought that as my takeaways are likely to be different from those of other developers (and that I've seen them share) I'd thought I'd call out what I think is important.


  • Support the devices that the people using your apps have. What people use is more important than supporting the latest devices.
  • Shared experiences are important for people (group facetime) and the adoption of new technologies. (AR games)
  • Integration with the platform/OS (such as SIRI Shortcuts) helps people integrate the services and functionalities your app provides with the how people use their devices.
  • Platforms change, evolve and may not be around as long as your app. (end of OpenGL)  While using no 3rd party tools isn't an option, it's important to be aware of the wider ecosystems and changes around the tools and utilities you use so that if they go away or become deprecated in favor of a new alternative you won't be caught by surprise.
  • People are mobile, not just devices. People even move more than some (phone) devices. Your app experiences may be more useful if they exist on more than a single device type. That may mean using the same app (or an emulated version) or a customized version of it. 
  • Watch what is new and popular in competing apps/platforms and, if appropriate, replicate that functionality. (In Windows Dark Mode has been VERY popular with some people. It only makes sense for that to come to MacOS too.)






Thursday, May 28, 2015

What's the point of (where is the value in) Project Astoria and Project Islandwood?

Projects "Astoria" and "Islandwood" are "Universal Windows Platform Bridges" that allow you to reuse the code used to build Android and iOS apps to make apps for Windows 10.
They each work a bit differently but are typically talked about together as their very existence shows that the "new Microsoft" and Windows 10 are very different from the Microsoft and Windows of the past.

There are a couple of key differences.
Astoria allows you to take an existing APK and submit it to the Windows Store and comes with the ability to replace the use of Google specific services with their Microsoft/Windows equivalents. It also only works on "Windows 10 Mobile" - what used to be known as "Windows Phone" but now also includes small tablets (phablets).
Islandwood allows the creation of Universal Windows app, that runs on more than just the mobile SKU of Windows 10, but using Objective-C. It also includes shims and mappings for the use of the more common iOS functionality and services.


Who would use them and why would they care?
Consider someone who already has a mobile app or game. They want to reach as many potential customers as possible and so their app/game is almost certainly available on Android or iOS. It's possible that they have created both versions with a cross platform tool* but it's more common that they will have created the iOS version in objective-C and the Android version in Java.
When they now come to consider supporting Windows 10 there are considerations to make:
1. Will there be enough potential users to make the effort worth while?
2. How much effort will be involved in creating the new version?
3. Do they really want to write the app/game for a third time?

Let's look at each in turn.

1. At the moment Windows/Windows Phone has a very small market share but Windows 10 has the opportunity to help increase the number of devices running a single version of Windows dramatically. Microsoft have even said they're aiming to get Windows 10 on a billion devices in two to three years. A billion potential users could be very appealing but until it shows some traction both the market share percentage and absolute numbers remain low.

2. Ideally any business would like the amount of effort required to build an app to be as low as possible. It takes a special kind of person to want things to be harder, take longer and cost more than is necessary.

3. You should need a very good reason to have to do the same thing three times in three different ways. It doesn't just duplicate the initial effort and costs but the ongoing ones too.


So, considering the above, if there was a way to take the assets, resources and investment in existing code bases and use that to create an app that runs on Windows 10 then it should be very appealing. Enter projects Astoria and Islandwood.

But which should a company use?
As ever with technology, it depends. Obviously if someone only has an Android/Java code base then they should look at project Astoria. Or if only on iOS/Obj-C they should go with Islandwood.
But what if both? I'd suggest the following. If only interested in running on phones then look to use Astoria. Otherwise look to Islandwood.

----

The use of either (or both?) of these projects should be seen as a stepping stone if it gets a business to a position where they still have more than one code base for their app/game.
Surely, as far as possible, it's in the interest of the company behind an app/game to only need one version of their code. I therefore expect the popularity of cross platform solutions* to grow in the next few years. There are various options for this but, personally, I'd look at either PhoneGap or Xamarin based solutions depending on the specific project.

----

I assume that Microsoft hope that those people who use the above tools will be exposed to how powerful the tools and languages Microsoft have created are and then consider switching to them in future. Either in addition to building natively for Android & iOS or exclusively by use of a solution such as Xamarin.

----

Yes, they both allow you to reuse resources across platforms but are they cross platform solutions?

*Related question: How do you define a "Cross platform" tool/solution?
Does it have to produce the output for different platforms?
Does it need to support a specific number of platforms? (Presumably more than two.)
Does it count if it is based on conversion from one native format?

I don't know if there is a clear definition. Do you have one?




Wednesday, July 10, 2013

What iOS7 could mean for Windows Phone

Sorry to the Microsoft fan boys out there but this isn't going to be a post about how iOS7 has "copied" Windows Phone.

iOS7 has followed a trend that has been popular across many platforms.

The important point I want to focus on is that iOS7 looks dramatically different from all the versions of iOS that have gone before.  Head over to http://www.apple.com/ios/ios7/ if you've not had a good look yet.



The difference matters because many apps, brands and companies have taken all their branding cues from earlier versions of iOS.

If you're a Windows Phone or Android user (or developer) you'll have no doubt noticed the number of apps that were first created on iPhone and then ported to other platforms but kept the original, iOS appropriate visuals and styling.

I predominantly work on creating Windows Phone apps that already exist on other platforms. (It's typically only apps that are successful on other platforms that can afford to pay to get their app ported.) One thing I hear a lot as part of my work is that the company behind the app sees the way the app looks on iOS as part of their branding. They don't necessarily says this directly but that's the underlying idea when they say that they want it to look like it does on iOS.

Some time ago, when they created their app they, rightly, wanted it to look like it belonged on the device and OS it was running on. No doubt, for most companies this was a new experience and probably not straight forward as they adjusted to how their traditional branding and visual identity was represented on this new small screen.
After such a complex and time consuming process I suspect one of two things happened.

1. They got so used to seeing their iOS app they lost sight of what really composed their original brand identity and what they regularly saw took over.
or
2. They didn't want to go through the hassle of adjusting their visuals to each new platform. They've done that already. After all, aren't all mobile platforms the same.

This is where iOS7 raises an interesting scenario. If there are lots of apps/companies/brands who take their app design influence from iOS, what are they going to do with this update?
If they leave everything looking like it did on iOS6, then when run on an iOS7 device it's likely going to stick out like a sore thumb.
Similarly, if they update their app(s) to solely adopt the new iOS7 styling then it will stick out, for the wrong reasons, when run on devices still running iOS6.

As not all devices will (or can) be updated to run iOS7 the only option for companies wanting to continue to support all iOS users, regardless of which version of the OS they have, the only option is to have an app that adopts its display based on the OS it's running on or to have different versions of the app(s) for each platform.

The important point here isn't that they have to deal with further fragmentation; it's that people are going to be forced to think about making their visuals and styling appropriate to the platform they're running on as part of wanting to make a great user experience.
My hope is that, once companies are forced to look at providing a platform specific visual experiences across the different versions of iOS, they will also make appropriate considerations for other platforms too. The ultimate result of this should be a better experience for users. And, if users are getting a better, tailored experience then we all win.