What’s New in iOS 15 — For Developers

Focus and notifications, App Store discovery, SharePlay, and more

Nino Vitale
Geek Culture
10 min readOct 9, 2021

--

Image source: Apple

Last year, Apple finally brought one of the most requested features to their ecosystem: widgets. Along with their incredible popularity at launch, the ability to create custom icons (i.e., shortcuts that each launch a specific app) ushered a new wave of customization. This trend went viral, and it didn’t take long for users to share their works of art all over the Internet.

Thanks to that runaway success, in April 2021, iOS 14 was running on over 90% of all eligible devices. Following iOS 13, 2020 was another year that Apple didn’t need tech enthusiasts to convince others to install the latest version of iOS. Dark mode and widgets – the flagship features – did all the talking.

On the developer side, things weren’t so rosy. iOS 14’s release was marred by Apple not giving developers enough time to submit their apps before its public release. Fortunately, this year there were no surprises: Apple respected the usual one-week timeframe by releasing the RC version (Release Candidate, previously denominated “Golden Master” or GM) immediately following its mid-September event.

While iOS 15 doesn’t come with significant visual changes, it bundles a substantial amount of refinements paving the way forward for new experiences and interactions:

  • FaceTime has received major sharing upgrades with the introduction of SharePlay.
  • Notifications have been redesigned to make them easier to identify.
  • Focus helps reduce distractions by filtering out notifications based on what the user is currently doing.
  • Maps has new ways to explore major cities and leverages augmented reality (AR) for walking directions.
  • Live Text uses on-device intelligence to recognize text in photos across iOS and on the web.
  • Safari has been redesigned for accessibility and supports extensions.

All this and hundreds of other changes are primarily user-facing and widely publicized. Developers should go through a combination of Apple’s documentation and WWDC videos to catch up on this new version, as this is the most comprehensive set of resources available.

However, it can be challenging for those just wanting to know what might impact their upcoming or existing app(s) to find a condensed source of information. Thus, this article lists what you should consider while preparing the next update of your apps for iOS 15 (if you haven’t already).

Changes are organized by section, starting with those you should consider today to ensure your apps respect new system controls followed by other features you should take advantage of to make your apps stand out.

Focus and notifications

Priority: High (optional, but strongly recommended)

Notifications are a vital component of the application experience. Apart from user interface changes, iOS 15 provides new ways to elevate specific categories of notifications. Let’s look at what’s new, how to augment them, and take advantage of their current capabilities.

Visual changes

Notifications now have a fresh look, focusing on larger app icons, contact images, and any relevant media. For example, communication apps now prominently display the picture of the person contacting you on the left, while media apps (e.g., Podcasts) show an icon of the appropriate media to the right of the notification text.

Notifications in iOS 15. Image source: Apple

You can associate notification actions with icons, so it’s easier for your users to discern them visually. Check the UNNotificationAction and UNNotificationCategory APIs for more information on how to implement this in your apps.

Notification actions with icons. Image source: Apple

Notification Management

Two new features impact the delivery and interruption of app notifications: notification summary and Focus.

The notification summary collects notifications and presents them at a scheduled time. By default and if turned on, the notification summary appears twice a day: in the morning (8 AM) and the evening (6 PM). Users can customize the frequency and choose to have notifications from a particular app delivered immediately, only in the notification summary, or disable them entirely.

An example of notification management in iOS 15 (with notification summary enabled)

As a developer, you can increase your chances of appearing at the top of the notification summary by following these best practices:

Focus

With iOS 15, the device can be set in a specific Focus mode, impacting which apps and people can send notifications. (For example, during the “Work” focus, only productivity apps and co-workers can send interruptive messages.)

This feature can be customized in-depth, although iOS will smartly identify the types of apps/people it thinks correspond to a specific Focus when setting one up. Users can also choose only to show certain home screen pages, reducing visual clutter and distractions.

Within the UserNotificationsframework, there is a new enum that defines four distinct interruption levels. These are as follows:

Interruption levels and their capabilities in iOS 15 (* allows notification summary and Focus)
  • Passive (new): Use this for notifications that do not require immediate attention, e.g., media recommendations, non-breaking news.
  • Active: The default interruption level. Use this for notifications that do not require immediate attention should a user have Do Not Disturb on, e.g., sports updates, live video, new media posted by content creators.
  • Time Sensitive (new): Only use this when necessary to interrupt, i.e., when you require immediate attention, e.g., package updates, account security, breaking news.
  • Critical: This already existed in iOS 14 and requires an approved entitlement. Examples: severe weather alerts, local safety alerts.

If you don’t set an interruption level, the system assigns the default level (active). Therefore, take advantage of this to tell the system which priority level to give to each notification.

For an in-depth look at notifications and the new APIs, check out the WWDC talk: Send communication and Time Sensitive notifications.

App Store discovery

Priority: Medium (optional, but strongly recommended)

The App Store is the cornerstone of app discovery and management. This year, some new features will help developers boost their audience and tailor experiences for specific subsets of users.

In-app events*

The App Store now allows you to showcase events (e.g., game competitions, live streams, leaderboard challenges) happening in your apps. Users can quickly discover events without having your app installed, which boosts engagement and downloads. With the help of machine learning, iOS will smartly tailor recommendations for each user.

Each app’s Store page can feature in-app events. Image source: Apple

Custom product pages*

You’ll be able to augment your promotional material with up to 35 pages that can contain different text, imagery, and app previews. These must be submitted for review, but they are independent of app updates.

The URL for each custom page has a new PPID (product page ID) parameter that is appended to the end of each unique URL. For example: https://apps.apple.com/[region]/app/[app_name]/[app_id]?ppid=[ppid].

The same app using different custom pages depending on the audience. Image source: Apple

This feature is ideal for developers who have a varied audience. (A sports app can redirect users to a custom page for their favorite team or competition instead of a generic page for everyone.)

For more information on App Store discovery updates, check out Apple’s developer page and the WWDC talk: Get ready to optimize your App Store product page.

*App Store in-app events and custom product pages will be available later this year.

SharePlay*

Priority: Varies depending on the app type

SharePlay* works across multiple devices and apps. Image source: Apple

SharePlay — one of the most touted features of iOS 15 — enables new media sharing experiences by leveraging the new capabilities of FaceTime. When a user plays media, playback synchronizes across devices. Playback controls are shared; if someone pauses the media, it stops for everyone in the call.

However, with so many new things to keep in sync, call quality is a significant concern. Apple states:

[…] since your app runs natively on each device with no retransmission, the quality of your app experience is never compromised.

It is a pretty confident statement, but it still raises some doubts. On the one hand, Apple is trusting its capability to deliver a seamless experience. On the other, this feature has not been battle-tested in the wild. I hope the delay of SharePlay ensures that this feature works as intended, along with adequate developer support across third-party apps.

If you work on a communication app and are interested in integrating your apps with FaceTime and SharePlay, check out the GroupActivitiesAPI and these four WWDC sessions.

Also, in case you missed it, FaceTime now works with non-Apple platforms!**

*SharePlay will be available later this year with a software update. In the meantime, you can implement and test this feature in a 15.0 development environment. If you’re on 15.1, Apple has re-enabled SharePlay without the need for the SharePlay Development Profile.

**FaceTime calls use the browser on non-Apple platforms and do not support SharePlay (except Safari on macOS Monterey). According to Apple, SharePlay is only supported on iOS 15, iPadOS 15, macOS Monterey, and tvOS 15.

ProMotion support

Priority: Medium (recommended for users with newer models)

Along with the iPad Pro, the new iPhone 13 Pro and Pro Max models have an LTPO (low-temperature Polycrystalline oxide) display capable of refreshing between 10 and 120 Hz.

This technology allows the system to dynamically control the panel’s refresh rate according to the on-screen content and user actions (e.g., tapping, swiping, scrolling rapidly). The result is a significantly* smoother experience without compromising on battery life.

On the software side, iOS 15 already includes support for ProMotion out of the box if you use these frameworks:

  • UIKit
  • SwiftUI
  • SpriteKit
  • CAAnimation

Apple warns developers that custom animations are not automatically managed:

Custom animations in your app need to be able to adapt to changes in refresh rates. Display refresh rates can change for many reasons and your app must not presume any specific refresh rate, at any time. For example, the system disables faster refresh rates in low power mode or if a device gets hot. Also, while UIKit and Core Animation are managing various GUI elements, Core Animation might elect to vary the refresh rate to provide an enhanced user experience.

Core Animation does the heavy lifting of determining which animations must be presented on-screen and computes the adequate refresh rate. Note that you cannot explicitly set the display’s refresh rate, but you can provide hints about the ideal refresh rate for your animations (more on this below).

Unlock ProMotion on iPhone 13 Pro

To unlock the full range of refresh rates for CADisplayLink callbacks and CAAnimation animations in your app, add the following key to your Info.plist:

<key>CADisableMinimumFrameDurationOnPhone</key><true/>

As implied in the key name, the iPad Pro models do not require this key.

Timing Hints

Before iOS 14, you could set the preferred refresh rate for your app with the preferredFramesPerSecondproperty. In iOS 15, you should use preferredFrameRateRangewhich is aCAFrameRateRange. This struct has minimum,maximum, and preferredframe rate properties. If you’re wondering which ranges to set, consider Apple’s table as a reference.

In-depth coverage of optimizing content for ProMotion is covered in the WWDC talk: Optimize for variable refresh rate displays.

*Sensitivity to refresh rates varies (especially on smaller displays like a smartphone). To test your degree of sensitivity and simulate scenarios where the system disables high refresh rates, you can perform A/B testing by limiting the frame rate to a maximum of 60 Hz in Settings > Accessibility > Motion > Limit Frame Rate.

Stack View changes

If you are using Xcode 13 to create layouts with stack views, there is a subtle but significant change to how they lay out their content. The fill distribution behavior is different between iOS 14 (and earlier) and iOS 15, as shown below:

Differences in stack view fill distribution between versions. Image credit: Keith Harrison

This behavior occurs because iOS 14 (and earlier versions) automatically add a disambiguation constraint with a higher compression resistance priority (759) than the UI elements in the screenshot (750 as default).

According to Keith Harrison, a workaround for earlier versions is to set the compression resistance priority of the stretched view to a value higher than the disambiguation constraint. In this case, the value of 760 would be set on the switch as it’s being constrained to the left of its frame.

A bug report exists for this issue, but it received no response from Apple. Regardless, the behavior has been silently changed in iOS 15, and now stack views work as you would expect. Just make sure you test layouts on both versions.

Deprecations

Although there aren’t major deprecations in the iOS 15 SDK this year, it’s always helpful to know what has changed. This article lists all of the publicized deprecations this year.

Conclusion

This article covered the most impactful changes in iOS 15, with a significant focus (no pun intended!) on notification management and interruptions. Correctly defining your notifications’ interruption level is crucial to ensure your app respects the new system controls and the perception of different levels of urgency by your users.

Also, early adoption of new features puts you in a prime position — users value continued support and commitment to the apps they rely on every day. I hope this article points you in the right direction.

Thanks for reading!

--

--