Sponsored Link
Swift 5 for Android is here
Build powerful native apps for Android and iOS using Swift 5. In our July release, we added Swift 5 support to our Android compiler. Get started with cross platform development in Swift by downloading our latest release.
Tools
SFSymbols Export
This little tool by Dave DeLong is cool. It exports all of the SFSymbols glyphs as SVGs, or code! Before you get too excited, it's worth thinking about the licensing here. I've done a bit of research on this and I can't actually figure out the licensing situation for assets derived from this font. Be cautious.
Project generation
This post from Pedro Piñera has to be the ultimate guide to dynamically generating Xcode projects with Tuist. The bigger question is whether you should dynamically generate your Xcode project. As with any non-trivial deicison the answer is "it depends", but it certainly makes sense in some situations, and you'll learn what they are in this post!
Catch SwiftUI model updates from bad threads
UI frameworks that are thread safe are few and far between, and while SwiftUI may be exceptional in many ways, thread safety is not one of them. Couple that with Combine meaning that UI updates may be triggered from a multitude of places and you have a potential problem. Luckily, Xcode is here to help, and Evan Deaubl shows us how.
Code
Deriving Reactive from Imperative: An Introduction to Duals
Such a great post from Jasdev Singh. He starts out with a bit of reactive programming history and how it came to Apple platform development, but quickly moves into a fascinating look at Duals.
SwiftUI Generic Image Loading
The thing about a new UI framework is that we have to solve all the old problems again, but in potentially new ways... Fun! Here's Sebastian Osiński to take us through one of the old favourites, loading images from remote sources. 👍
Our Swift Best Practices
Here's Jillian Meehan introducing the Lickability Swift Best Practices Guide. As with style guides and code formatting guides, there's opinions in here rather than rules that will apply for everyone. That said, this is a solid guide to best practices.
Swift Quiz in Review
If you've been regularly participating in the objc.io quizzes over the last few months then you'll enjoy this round up from Morgan Evetts. Actually, you'll also enjoy it if you have only occasionally participated, or if you haven't even heard of them! 😀
Design
iOS 13 Contextual Menus
I loved this piece by Louie Abreu. Peek and Pop is/was a very interesting concept which makes me think of my point about design playgrounds from last week but ultimately it didn't quite click with users. There's way more in the piece than just this comparison though, you should read it.
Introducing Drama
Prototype apps and design animations with this incredible new tool from the makers of PaintCode. I resisted linking to this last week when they previewed it with a landing page, but I didn't have to wait too long for something that could be downloaded and played with as this week brought us an open beta! Go try it.
The Alert Hammer
Yes, this article is about the rapidly increasing number of security prompts in Catatina, but there's a really important lesson that Apple have been trying to teach us for years, that they are violating here:
Most users simply skim (or don’t read at all) the alerts that are shown to them. Their focus will shift straight to whatever action allows them to get back to what they were doing. Prompting for everything will further banalize the alert to the point of nuisance… making them, in effect, useless.
Thanks to Paulo Andrade for putting this into words so well. I also love what Michael Tsai had to say about letting users audit what apps did with the access we grant them. This is an area of system, and app design that I hope to see Apple, and us tackle better in the future.
Business and Marketing
On Lauching Your Indie App
I really love that Jordan Morgan's side project started with him thinking about a business model, and how that affected every decision from design, through to launch. With that knowledge you might expect a detailed, and comprehensive guide to how he launched his app SpendStack straight into a featured spot in the App Store, and you'd be right!
Jobs
iOS Developer Trainee Program @ The App Academy – Boost Your Career In Mobile Tech. Apply For The iOS Developer Trainee Program At The App Academy Now! – Amsterdam, NL
iOS Swift Engineer @ Redzone Production Systems – Looking for a development role where you can have an impact and play a key role in a social/mobile enterprise application? We are looking for a proven iOS/tvOS Swift developer to work alongside our Scala, iOS/tvOS, and DevOps engineers as part of a highly collaborative team. – Remote, or Miami FL, Orlando FL, Birmingham UK
Looking for a new position? There's more listings on iOS Dev Jobs, so head over there now!
And finally...
An Illustrated History of Easter Eggs
If you didn't spot this in and amongst the videos from Hacking with Swift Live a couple of weeks ago, it felt like such a great fit for a link by itself right here. 👍
Comment
This post from Markos Charatzas about the permanent rejection of his app, Windmill (which I linked to in Issue 351) has been generating quite a bit of discussion this week.
First and foremost, it's always heartbreaking to hear that someone has put their heart and soul into an app, only to have it rejected during review and my sympathy is definitely with Markos after reading his story.
The bigger issue he is raising is what I want to talk about today though. I wasn't surprised at all to when I read that Windmill was rejected. No matter whether the app bides by the letter of the App Store Guidelines or not, I think the deal breaker is as simple as it getting close to appearing to be an alternative method of distribution outside of TestFlight and the App Store.
From day one, the App Store being the only choice for app distribution has been a critical part of Apple's strategy. They have also never conceded any ground on this, unless you count acquiring and integrating TestFlight as a slight concession. Which I don't.
I don't think Apple have anything against Windmill specifically, and they are not trying to stop it from existing. They’re just saying they won’t distribute it through the App Stores. It's fine to disagree with that decision, but I think it's wrong to be surprised by it. I also hope Markos continues with development of it outside the App Store, as I like the idea.
I also wouldn't read much, if anything into the sub-issue here of Apple taking a stance that apps that use the Xcode Command Line Tools are only meant to be used by developers in-house. I think that's probably something an individual reviewer wrote, rather than any official policy. I'd separate that out from the wider issue until there's more evidence to back it up.
Dave Verwer