Comment

4.5.4 Push Notifications must not be required for the app to function, and should not be used for advertising, promotions, or direct marketing purposes or to send sensitive personal or confidential information. Abuse of these services may result in revocation of your privileges.

By it's very nature this guideline is impossible to enforce during app review. But apps that break the guideline once they are in the App Store are also seemingly never punished for it, at least I've never heard of it happening. Worse, Apple also break this rule themselves and this week saw more notifications go out from the company promoting Carpool Karaoke and Apple Music.

It's ridiculous that this part of rule 4.5.4 still remains in the guidelines. Apple should either get rid of it and accept that push notifications will be used for promotion, or my preference would be to really enforce the rule and implement punitive measures for apps that are reported as breaking this rule. Step one of that is for Apple to stop doing this themselves.

As this year draws to a close it's time for my regular week off next week! However, I have had an idea for something which you may enjoy and so I'm not going to take my break this year. Don't expect a normal issue though, it's not going to be that.

I hope you all enjoy seeing family and friends over the next week and I wish you all happy holidays! 🍾🎄

Dave Verwer

News

Not directly related to iOS development, but since we carry around a device in our pockets which is more than capable of recognising faces I think we should all have an interest in this. It's a proposal from Microsoft for government level action and legislation around facial recognition and it's something I can completely get behind.

This is a change to the guidelines, and not to the App Store itself so it's still not possible for end users to gift someone else a subscription or an In-App Purchase (yet? 🤞) but this is a good step in the right direction.

Sponsored Link

For the second year running, Paul Ardeleanu and Daniel Steinberg have teamed up to bring you first-class Swift and iOS Training in London. Sign up for the next sessions in March: a two-day course on Swift best practices in your iOS apps (March 18 & 19) and a one-day Functional Swift workshop (March 20). Private on-site Swift or iOS training courses can also be booked, in London or around the world.

It's early days for this new IDE from Marcin Krzyżanowski but I can see it being a success if the focus is on building server side Swift. It's not yet available in beta, but I signed up to take a look when it comes out.

How does your app behave when it's connected to a captive WiFi network that hasn't authenticated yet? This proof of concept code from Felix Krause shows you how to cope with the situation so you can at least let your users know that they're currently captive.

Soroush Khanlou on the process of figuring out where an optimisation was needed, and then picking the best solution for it when trying to get the twenty smallest numbers from a large array. The result is this function, but as always it's the journey that's really interesting.

More open source from Airbnb, this time the collection view layout that powers their main content view. I still love that UICollectionView was architected in a way where the layout is totally independent of the content. We get to take advantage of all of the benefits of a standard collection view without being tied to any single look and feel.

Displaying HTML is easy enough on iOS, but Markdown and LaTeX both require pre-processing to get to HTML. This control from Ahmed Elkady, Orla Mitchell, and Jake Bolam renders any of those formats natively. The inclusion of YouTube/Vimeo support is curious, I'd have been tempted to make that a separate component but Markdown support is certainly useful.

Design

Raluca Budiu with a great article on how we can create usable, logical user interfaces when machine learning powers a feature. One example of where I feel iOS gets this kind of UI right is the notification that appears when your phone connects to your car's bluetooth and traffic information for where you're likely to be going is displayed. It's smart (which is good for a ML powered feature), it's clear why it is there, and it's useful without needing to touch the phone. 🚘