AppForce1: news and info for iOS app developers

Full on trip prep mode

August 21, 2022 Jeroen Leenarts Episode 88
AppForce1: news and info for iOS app developers
Full on trip prep mode
AppForce1: news and info for iOS app developers +
Help us continue making great content for listeners everywhere.
Starting at $3/month
Support
Show Notes Transcript

Two weeks since my previous episode. I had my reasons. My family and I went on a trip visiting family in Luxemburg. We slept over monday till friday and I was just not able to record an episode.

Of those two weeks the first one was quite warm in the Netherlands. We actually had the first heatwave in the Netherlands this year. year. Nothing too terrible temperature wise, but the related drought is no fun. Again not as bad as other parts of the world, but it is noticable everywhere you go. Also, upstairs, where I record my podcast episodes is not a fun place to be with these temperatures.

As mentioned, the second week was family time, which was a really fun time. I got to spend the entire week with my family with dedicated attention without having work in he back of my mind too much.

Not thinking about work is hard right now. Only a few days from now I am travelling to Denver to visit 360iDev. I still want to do a lot of checks on my slides and presentation. I am going to be representing Stream there, so… No pressure, right?

Considering my travel plans for the next week, I am unsure how/when I will be able to do episode 89. I actually might do something with my DJI Mic while I am in the US. It sounds like a great opportunity to do some fun recordings that are immediatly usable for my podcast. Who knows. Keep an eye on my feed and you will not miss a thing.

This week’s articles.

iOSConf

CocoaHeadsNL Meetups

Runway
Put your mobile releases on autopilot and keep the whole team in sync throughout. More info on runway.team

Lead Software Developer 
Learn best practices for being a great lead software developer.

Support the show

Rate me on Apple Podcasts.

Send feedback on SpeakPipe
Or contact me on Mastodon: https://hachyderm.io/@appforce1

Support my podcast with a monthly subscription, it really helps.

My book: Being a Lead Software Developer

Jeroen Leenarts:

Welcome to episode one, episode 88. My name is Leenarts. And I've been developing software for over 20 years developing iOS apps for over 10 years and I'm running touch kolkhoz for over nine years. If you're an iOS app developer, you should listen to my podcast because it will keep you updated on interesting articles, conferences, and events you might not have heard about in this episode, I'm going to talk about implementing a main thread watchdog on iOS lenses and prisms in Swift. The easiest way to manage multiple X codes shared with you implementation and testing explains mastering GridLayout the Swift UI cheat sheet or voice over gestures for iOS implementing password autofill for an iOS application, server guides now on swift.org and faster socket testing by sinking in app purchase products. Two weeks since my previous episodes, I have a reasons my family and I went on a trip visiting family in Luxembourg. We slept over Monday till Friday, and I was just not able to record an episode of those two weeks. The first one was quite warm in the Netherlands, we actually had the first heatwave in the Netherlands this year. Nothing too terrible Temperature wise, but the related drought is no fun. Again, not as bad as in other parts of the world, but it is noticeable everywhere you go. Also upstairs where a recording of podcast episodes is not a fun place to be with these temperatures. As mentioned, the second week was family time, which was a really fun time. I got to spend the entire week with my family with dedicated attention without having work in the back of my mind too much. And not thinking about work is hard right now. Only a few days from now I will be traveling to Denver to visit 360 If I still want to do a lot of checks on my slides and presentation. I'm going to be representing stream there. So no pressure right now. I'm also kind of worried about trip itself. I'm traveling with a carry on luggage only for a week, but still the reports on the queues on Schiphol Airport. On top of that I have transferred in Detroit of only 80 minutes people keep telling me I should be fine, especially since I'm going to carry on only. I fortunately, have some slack time built into my draft plans to compensate for any delays or missed connections. But I do hope I will arrive on time and be able to enjoy a hike around the boulder area. On the Saturday before the conference. My colleagues stream are looking forward to joining me and I do want to meet a few people in person for the first time. We've been working a lot together online and meeting the actual human being in real life is always great. Considering my travel plans for the next week. I'm unsure how when I will be able to do episode 89 I actually might do something with DJI make while I'm in the US it sounds like a great opportunity to do some fun recordings that are immediately usable for our podcast. Oh noes. Keep an eye on my feet and you will not miss a thing. And since my previous episode was nine weeks ago, I have nine links this week. God loves summertime right. So let's get started with the first one. Implementing a main thread watchdog on iOS by Jessie squires on iOS operating system employs a watchdog that monitors for and terminates unresponsive apps. If your app is blocking the main thread for too long the system will kill it. In crash reports you can identify what stock terminates fetal termination goat ate bad foods. This is great for determining why a termination happens your app was blocking the main thread for a significant time. However, it does not always answer what your code actually caused the termination. To work around the limitation inherent to this kind of scenario. Jessie suggests that you can write your own main thread watchdog and add custom logging to your app to help diagnose the root cause of a bad food terminations. The API's and core foundation actually makes it relatively easy. You can use CF run loop observer, the code ingested article implements a simple random observer. It's largely based on a jest written by Justice pessimists. Next up Steve about edge lenses and prisms in Swift optics is pattern borrowed from Haskell, it enables you to zoom down into objects in other words, you can set and get get a property of an object in a functional way. By functional tibial means you can set a property without causing mutation. So instead of altering the original objects, a new one will be created with the updated property. All very functional and an interesting approach. Timber explains how such an architecture could look in Swift. Alexei has a nice piece that serves as reminder about x goats do you will say Aditi not a plural form of Xcode itself. The easiest way to manage multiple X codes. If you are still installing Xcode from the App Store or downloading it from the Apple developer portal. This article is for you. Antoine has an article shared with you titled share it with you implementation and testing explains iOS 16 introduced chat with you. Allowing you to showcase content shared the messages inside your app, users can find back content they would otherwise lose in the history of a long conversation. Apps like photos, music and podcasts have already implemented support. And now it's time to add support to your apps shared with you matches content shared with URLs based on universal links. If the matching app for universal link supports this feature, the content might appear inside the app. Let's dive into the implementation. Testing and when you can expect shared URLs to appear with the help of Antoine. As always advance write up is a good read to get you up to speed with shared with you. Majeed has an article titled mastering grid layout in Swift UI. You might be familiar with the lazy V grid and lazy H grid views you have from the second iteration of Swift UI framework. They were great for the massive data race you want to display as the grid. But it is not always possible to arrange the columns and rows strictly because of the lazy nature. For these cases, Swift UI introduces another type of grid that immediately lays out all of its children. In this week's article, you will learn how to use the new grid layout in Swift UI and the benefits of the new grid over the latest version of the grid component. Majeed starts with the basic grid layout presenting the list of user data, Natasha for data has not one, but two articles this week, the first one cheat sheet on VoiceOver gestures for iOS. This article is about voice over IP and a number of justice you should know this is useful knowledge to have and I want to reiterate the importance of building an accessible app and knowing some basics is where it starts. The second article by Natasha is called implementing password autofill for an iOS application. Apple's password autofill feature allows users to login into the same account on different devices without having to remember their credentials. For example, when signing into web app, users are able to generate a password and save credentials to the iCloud Keychain. When they run a native app to access the same account at some point, the app suggests the credential stored for the website. In the password click Type bar. After user authenticates, let's say by using face ID, the system pre fills the credentials so there's no need to re enter them to activate password autofill. In iOS application, you just need to do two things. Well, okay, not that simple. You need to set up the app associated domains and set the correct autofill on relevant text fields. In our article, Natasha explains all the required steps which are still a lot fewer than you might expect. For the eighth article, I want to draw your attention to something Tim Condon wrote on Swift org no less server guides now on swift.org. The Swift surfer Workgroup has maintained a set of open source guides for swift on server development for a number of years now that swift orcas open source, they've moved the guides to this site, this site being swift to dock. The guides cover a number of useful topics, setting up your environment, building a testing, profiling and deploying including AWS, Digital Ocean Heroku and GCP. Docker Best Practices debugging in production. The guides also include a section for library authors, covering best practices for log levels and approaches for adopting swift concurrency. If you'd like to contribute to the guides, you can create an issue or post to the Swift org forums if you want to get started with Surfside Swift. This is a very nice central place to start your journey. The final and ninth article of this week is again by Antoine Vandelay fastest rocket testing by sinking in app purchase products. Antoine introduce his article with stock a testing in the simulator allows you to speed up testing in app purchase for your app. You can test in app purchase in Xcode by generating a stock configuration file containing the available products for your app, you'll be able to purchase products without connected to the app store service without an internet connection. And you'll be able to test edge cases like failing transactions. a cumbersome process for using storage configuration files has been to ensure using up to date products for your apps. Antoine has been testing stock analyzer for a while with introduction offerings that no longer exist potentially trying use case in the app that won't happen in production. It's essential to keep your configuration files up to date, and he will explain how it can do so use a new feature in Xcode 14. Well, not much else I need to add to that right. So nine articles selected over a time span of two weeks. I hope you liked the cocoa pods and now meetup I mentioned in Episode 87 They have both filled up so that went really fast. Also keep an eye out on the Twitter handle at iOS cough. Some cool stuff will happen there soon. I will be traveling to 360 if this week. Let me know if you are there as well. If you have any feedback please send me a message through Twitter. My DMS are always open and don't forget if you'd like a podcast called Meet me person. You can still buy me coffee link for that in the show notes. This week. I have one more recording session planned. I hope I can push that one out by editing it before I go on the plane to 360 I def also wants to mention if I did to make works out, talk to you again next week. Otherwise, it might take just two weeks