Sponsored Link
It's time to try Wanted
It's simple. You enter the salary at which you'd consider offers and only companies who are prepared to meet it get to recruit you. It's free, and your details aren't passed to the company until it's time to interview. If that sounds good, give it a try.
News
Swift on Mac OS 9
Yes, this is an April fool, which would usually mean you'd expect to see it down at the end of the newsletter, but it's so much more than that. It's part April fool, part history lesson, and part technical explanation of how Jordan Rose really did manage to get an app written in Swift running with Classic Mac OS. 👏
New Financial Report Coming to App Store Connect
More finely granular purchase location statistics for the US and Canada, and finally being able to differentiate between the transaction date and settlement date. A small but significant update.
Tools
X-SwiftFormat
Will Xcode ever support native integration with swift-format? If I had to guess, I'd say it will but that it's unlikely to happen soon. Until then, here's Rui Aureliano with an Xcode plugin to make configuring it and running it on your current source file trivial.
Configuring the Main Thread Checker
The Main Thread Checker was a fantastic step forward for not letting silly bugs slip through into release versions, but I bet you didn't know about all of the options you can use to configure it (mainly because they seem to be undocumented 🙊). Luckily, we have this article from Bryce Pauken to take us through them.
Code
Playbook
Inspired by Storybook, this SwiftUI library from Ryo Aoyama lets you develop, and test UI components in isolation from your main app. I really like the look of this for large, complex projects.
Keyboard Avoidance for SwiftUI Views
I said last week that we have to solve the issue of image caching and downloading with every new iOS UI framework. Well, the same is certainly true of keyboard avoidance! Here's Vadim Bulavin on how do do it for SwiftUI as a ViewModifier
using Combine.
SecurePropertyStorage
Alex Rupérez with a library of property wrappers that will allow secure storage of property data through CryptoKit simply by tagging a property with @UserDefault
, @Keychain
, @Singleton
, or @Store
. 👍
Localisation using Apple glossaries
Is there a middle ground between fully custom, professional translation and pasting text into Google Translate and hoping for the best? Douglas Hill explores using Apple's localised glossaries to localise KeyboardKit.
macOS Development
Bringing Adaptivity to Mac Catalyst
Universal iOS/macOS purchases arrived last week, and the first app I saw take advantage of them was Geoff Hackworth's wonderful Adaptivity. He also wrote up a fantastic article about the transition from iOS to Catalyst.
Oh and don't worry too much about what Geoff says at the bottom of the post about issues with universal purchases not working, I think it was just teething troubles. When I opened the Mac App Store, it instantly showed a download button as I had already purchased the iOS version.
UPDATE: Looks like it might not have just been a teething issue, thanks for the clarification Geoff!
Business and Marketing
Passive vs Active
Curtis Herbert with some great advice on getting over the fear of in-app marketing of your premium features.
What's obvious to you is never to them, and there's good odds they didn't even look at all your App Store screenshots where you highlight these features.
I think he strikes just the right balance with the approach he's taking here. Certainly, some apps go way too far with full-screen roadblocks, but many more aren't doing nearly enough to upsell customers.
Videos
Advanced Scene Understanding in AR
Apple released a new video this week covering some of the new features in ARKit 3.5. It's obviously worth a watch if you're doing AR development, but also if you're just curious about what benefits the LIDAR scanner has. The demo of the Scene Geometry API is especially impressive.
Jobs
Senior iOS Developer @ Bosch eBike / COBI.Bike – With us you can ride bikes and write code! Have the safety of a large organization and the dynamic of a start-up! With the partnership of Bosch eBike and COBI.Bike you get the best of both worlds. Plus a highly creative and driven team of a hundred people in multiple locations. – Frankfurt Germany
Mobile Full Stack Engineer @ Expensify – Join our passionate team of top-notch engineers to solve a real-world problem, and help people spend less time managing expenses and more time pursuing their real goals. As we revolutionize the way people manage their expenses, being part of the Expensify team means building the easiest, fastest, and most efficient platform to automate everything expense-related. – Remote, London UK, New York City NY, Portland OR, or San Francisco CA
Senior iOS Engineer @ onX – Are you an iOS developer who loves the outdoors? Bring your iOS skills to onX, where we bring our devotion to the outdoors to work daily with a singular, powerful goal; to inspire others to find their own adventures off the pavement. – Remote, or Montana
Is your company hiring? Could you do me a favour and let your hiring managers know that they can post free iOS development job listings on iOS Dev Jobs. Thank you. ❤️
Comment
In the perennial battle between Apple and companies trying to re-sell digital products in the App Store (Netflix, Amazon Video, Spotify, Audible, etc…) the 30% cut makes their business virtually impossible, and it's the customers who end up with a bad experience.
If you’ve not yet read this article from John Gruber, give it a quick read. The short version is that Amazon Video now allows customers to pay money for additional digital content, without using Apple’s IAP mechanism, but only if you’re an existing Prime subscriber.
From the official statement that Apple supplied to John:
That may be true, but it also might be misleading. It's certainly the case that it’s only available to a very exclusive club right now.
The Verge has a somewhat sceptical view on whether this will ever roll out to other developers, and they certainly might be right. However, the fact that there is movement, no matter how small, on this issue has two benefits for the rest of us: