Sponsored Link
Leveraging Info.plist based certificate pinning on iOS and making up for its shortcomings
Apple recently introduced a way to configure certificate pinning through the Info.plist file, making it easier to tighten your app’s TLS communication security. However, it is not sufficient on its own. Read Guardsquare’s blog post to find out how it can be bypassed and how to increase your app’s security.
News
Software updates designed for people with disabilities
It was Global Accessibility Awareness Day yesterday, and Apple chose the occasion to highlight some upcoming features designed to make life easier for people with disabilities. They're all impressive features, but the one that blew me away was the AssistiveTouch for Apple Watch. Just incredible. 😍
Recreating the App Gallery
I'm going to do a full round-up of WWDC related links next week, but this one needs a bit of prep work, so you need to act now! Michie, the organiser of the WWDC Community events, had the idea to re-create the "wall of apps" from various WWDC events over the years. If you write a small or independent app, make sure you submit it!
My favourite "wall of apps" they ever did at WWDC was the one where they lined up a hundred or so iPad 1 devices so that apps scrolled from one end of this huge table to the other. Touching them caused a ripple effect to spread outwards, even onto other iPads. It was great! 🚀
Tools
Permanent and Temporary Tabs in Xcode
There was much grumbling about the double-decker tabs introduced with Xcode 12. While some people got on with them, a larger (or more vocal?) group found options to disable them. I always found Xcode's original tabs a little awkward to use as they also changed the inspector panels, so the new tabs fit my workflow well, and I ignore the "old" tabs. However, if you're still struggling to get to grips with them, this post from Leonardo Maia Pugliese is here to help.
Code
SwiftUI Introspect
I hadn't come across Loïs Di Qual's Introspect library before reading this post from Federico Zanetello, but colour me impressed by it! This might save you from needing to fall back to UIKit controls quite so often from SwiftUI.
I also love when people use their blogs to write about things other people did. Federico should give himself some self-promotion credits to spend for doing this, and does it mean I get double for linking to someone that links to someone else? 😂
Gradient Meshes in SceneKit
Drawing a gradient on iOS is easy, right? There are several built-in ways to do it, no matter which of Apple's UI frameworks you're using. Well, yes, if you want a boring old linear or maybe a radial gradient. What about a mesh gradient, though? Read on with this incredibly well put together article from Robb Böhnke.
Dealing with view modifier values in SwiftUI
Like Daniel Tavares, I've also been frustrated by the slightly messy code that comes from conditional SwiftUI view configuration. Check out his gist and this post, where he introduces a cleaner way of working.
Connecting to Wi-Fi programmatically in iOS
Who knew you could do this?! Filip Němeček showed me something I didn't know apps could do!
Design
Screen Sizes
Do you remember when you only had to design your app for 320px by 480px screens? 😵💫 Check out this great one-page app from Christopher Muller and Trevor Kay.
Books
Advanced Swift
If you've run out of things to learn, this new book from Marin Bencevic, Ray Fix, Shai Mishali and Ehab Amer might be what you're looking for. It gives all the aspects of Swift that you know and love a much deeper look.
Oh, and if you're about to move on thinking you already read this book, it's important to note that this book is not the original Advanced Swift book despite the titles being identical. Did we run out of book titles already? 😂
For full disclosure, I was provided with a review copy of this book.
Jobs
iOS Software Engineer @ Slumber Group – Join the Slumber Group team and help us achieve our mission of "Improving the health of every single person worldwide through sleep". Our audio-focused sleep apps and podcasts help millions suffering from insomnia, tinnitus, anxiety, PTSD, bereavement, or colic. Our products have been featured by Apple, Google, The Washington Post, NYT, WSJ and more. – Remote
Senior iOS Developer @ Sunshine Health Studios Inc. – We make a direct impact on people's health for the better. Our product works long-term, and our large active community shows. Join us in a stable job, alongside Y Combinator founders and top-notch engineers. Paid holidays/vacation, benefits, stock options are available for all employees, even international employees. – Remote
Senior iOS Engineer @ ClassPass – Want to work on an app that helps people lead healthier, more fulfilling lives? Join the team at ClassPass, the world's leading fitness and wellness aggregator. You'll be defining our mobile strategy, collaborating with an incredible product team, and guiding us through a really exciting period of growth. – Missoula MO, Houston TX, or New York City NY
iOS Developer @ Marks & Spencer – We’re looking for enthusiastic, product-focused iOS developers to join our growing mobile engineering team at M&S and contribute to our App Store chart topping iOS application that’s used by millions of our loyal customers every month. Our app is a universal app, written completely in Swift, and we are always looking for ways to improve, enhance and extend its functionality. – London UK
iOS Developer @ Doximity – Doximity, the medical network used by over 70% of US clinicians, is hiring passionate iOS engineers (full-time remote!). You'll get to be part of an amazing product team and work on an app that is constantly evolving. Use your skills (Swift, MVVM, FRP) to be an integral part of our newly launched telemedicine feature. Apply today! – Remote within the US
Senior macOS Engineer @ Paw – Become the Lead macOS Engineer for one of the most popular Developer Tools! Paw is an application that lets developers test REST and GraphQL APIs. We count Apple, Airbnb, GitHub, Mailchimp among our customers. – Remote within Europe
Senior iOS Software Engineer @ TeamSnap – If you find sharing party parrot emojis in Slack amusing, TeamSnap is the place for you. We’ve been remote since before remote was cool. You’ll work on a team with big ideas and tiny egos to develop a product that has been featured by Apple at WWDC and has 25+ million users. – Remote within the US
Flutter Developer @ MealPrepPro – At Nibble Apps our mission is to make healthy eating easy. Our team is behind one of the most well-loved health apps worldwide, MealPrepPro. The app is regularly featured by Apple and serves a passionate community of thousands of users. We’re bringing MealPrepPro to Android for the first time and we’re looking for a Flutter developer to join our close-knit team of 6. – Remote
Insiders
Thanks so much to this week’s iOS Dev Weekly Insiders! Greg Spiers, Cameron Cooke, Jelena Djurkovic, David Brittain, and Matthew Flint. Thank you so much for your generosity. 😍
This issue’s insider call is on Monday next week, so if the Friday dates haven’t been working for you, now’s the perfect time to join us!
And finally...
I opened with a link to Apple's new accessibility announcements, so let's close on the same subject!
Presenting the delightfully baroque VoiceOver descriptions provided for the built-in wallpaper images. 😍
Comment
A couple of weeks ago, I apologised for talking about the Swift Package Index too much. After the newsletter went out, someone replied via email saying:
It’s a great reminder that if you’re trying to promote something, you almost certainly need to talk about it more than you think you do. I had got to the point where in my mind, I needed to apologise for mentioning it so often but still had not persuaded someone who was engaged enough to reply to my email to check it out. It blew my mind a bit! 🤯
So, the lesson is that you need to talk more about what you’re doing, right? Promote, promote, promote! There are always chances to reach someone new, right? Well, yes, and also no. When I manage to reach someone new, it’ll likely be the final straw for someone else, and they’ll stop listening forever. It’s a balancing act.
I used to think about this in quite a transactional way. For every tweet or link about someone else, I gave myself a partial credit for some self-promotion. I never went as far as writing it down or making it formal, but I’d keep a rough track in my head and try not to go into debt. I now think about it in a slightly less structured way, though, as I’ve got better at it.
Part of why I permit myself to talk about my projects is that this newsletter has always highlighted other people’s work. That’s one way I try and balance it, but even with that, over saturating the message is something I think about all the time.
Another part of it is that the index is an open-source project. I’m not talking about something that will cost you any money. I’d deduct much more from my credit balance if I were selling something.
Do you think about this in the same way? Even if you’re not promoting an app or a service, you’re probably promoting something! Maybe a side project, or perhaps just yourself!
Oh, and would you look at that. I accidentally talked about the Swift Package Index again. Deduct the credit from my balance, please! 😂
Dave Verwer