Read the transcript
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