Apple has released the first beta of iOS 15.4 for developers, bringing Universal Control & Face ID with masks.
iOS 15.4 will allow you to unlock your iPhone without having to reach for your mask and take it off your face. This is a major improvement to Face ID, which was hampered with other biometric unlocking methods, like fingerprint authentication, which are largely unaffected by facial masks.
Previously, Apple introduced the ability to use a paired Apple Watch to aid Face ID and easily unlock your iPhone even if you wear a mask or sunglasses (not both at the same time), but those without a watch were left out. Fortunately, iOS 15.4 is finally addressing that and bringing convenient biometric authentication to a larger number of users.
Wearing a FACE mask means Face ID has way less data to work with, so it has to actively scan the area around your eyes to authenticate that the person holding the phone is actually you. This is a much more intensive process, so Apple has limited it to newer iPhones and iPads only. To make use of the improved Face ID features, you’ll need an iPhone 12 or newer.
Universal Control
If you have an iPad updated to iPadOS 15.4 and a Mac with the Monterey OS installed, then you will be able to enjoy a unified cursor allowing you to control both devices simultaneously with a single cursor. The feature is enabled by default and only requires you to have signed with the same iCloud account on both devices.
Apple Card widget
If you’ve got an Apple Card, a new widget introduced with iOS 15.4 will let you quickly glance through your card balance and your recent spending. The widget currently only lets you choose between weekly, monthly, and yearly reporting.
New emoji
iOS 15.4 developer beta includes 37 new emoji depicting new hand gestures, as well as trolls, many new face emojis, and more. The full list is fully compliant with Emojipedia’s Emoji 14.0 list and is similar to what Google will be adding to the upcoming Android 12 version of the operating system.
Text scanning with Notes & Reminders
With iOS 15.4, you will be able to directly scan text with your iPhone’s camera from within apps like Notes and Reminders. This quality-of-life addition to the overall iPhone experience will certainly save you some time, as instead of having to input text like it’s 2010, you will be able to simply point your phone at any text and have it automatically scan and import it in a note or a reminder.
Turn off notifications for Shortcuts
Apple’s Shortcuts app is undoubtedly a very powerful tool for device automation, yet one of its ‘quirks’ is that almost all personal automations you create notify you with a notification whenever they run. iOS 15.4 will allow you to get rid of those and achieve a less intrusive experience if you’re a fan of Apple’s Shortcuts app.
iCloud Keychain Notes
Apple’s Keychain will finally allow you to take notes for each specific login entry you have, which is undoubtedly something useful to have.
120Hz in third-party apps
One of the best new features of the iPhone 13 Pro and iPhone 13 Pro Max are their high refresh rate screens, which allow up to 120Hz refresh throughout the interface and the stock apps. However, a bug has prevented third-party apps from making use of the 120Hz refresh rate and only allowed them to go up to 60Hz.
iOS 15.4 will be rectifying this, bringing the smoothness of the fast display to all apps.
Developers
Apple Pay
Developers can express payment network preference in PKPaymentRequest
. Network preference is determined by the order of supportedNetworks
. This won’t override the user’s default card selection, but if the card is multi-SSD, then the network preference order determines which SSD is selected.
Authentication
Support is added to the passkey technology preview, enabling signing in to passkey-compatible websites and apps on Mac and iPad using an iPhone with a saved passkey. Signing in to an iPad is limited to apps in this beta.
iCloud
Email address verification may not complete during the set up of an iCloud+ Custom Email Domain on iOS. Workaround: Go to Custom Email Domain to complete email verification and set up an iCloud+ Custom Email Domain.
Game Controller
Support is now available for new DualSense adaptive trigger firmware features available via GCDualSenseAdaptiveTrigger
.
Health App
The Health app crashes when you attempt to onboard the Blood Oxygen feature from within the app.
HealthKit
Verifiable health records now support adding vaccination records in the EU Digital COVID Certificate (EU DCC) format to the Wallet and Health apps.
HealthKit
query APIs in Swift now support async/await syntax, which simplifies the structure of code that previously used completion callbacks.
- EU Digital COVID Certificates issued by Switzerland, Liechtenstein, Cape Verde, North Macedonia, and Palestine currently can’t be verified or added to Wallet.
- If Health sharing is skipped when setting up an Apple Watch for a family member, it can’t be enabled later.
Home
Pairing of Thread accessories isn’t supported yet and Matter accessories with multiple end points might be unreachable in the Home App. (86170578
Matter accessories may go to a “No Response” state after pairing with the Home App. Workaround: Remove the accessory from Home, reset the accessory, and add it back to Home. If the issue persists, remove your home hub from Home and re-add it. If the issue continues to persist, remove the home hub and create a new one.
Adding a Matter accessory to a third-party app fails if an Apple Home doesn’t exist. Workaround: Launch the Home App and create a home hub first.
iTunes
Purchasing or downloading content again from the iTunes Store and TV app might fail on some devices. Workaround: Rebooting the device may resolve the issue.
libc++
- The following new C++20 and C++23 features are now implemented:
- P0898R3: C++20 library concepts defined in
<concepts>
. - P0879R0:
constexpr
forstd::swap()
and swap-related functions. - P1032R1: Miscellaneous
constexpr
-ification in the library. - P0883R2:
std::atomic
now default initializes as expected. - P0458R2: A
.contains()
method for associative containers. - P0356R5: Added
std::bind_front()
.
- P0898R3: C++20 library concepts defined in
Deprecations
- Some extensions in
std::
were removed to fix bugs caused by those extensions:tuple - Tuples can no longer be constructed from fewer than the number of elements in the tuple. Previously, elements that weren’t specified were default-constructed; now this is a compiler error.
- A tuple can no longer be constructed from an array.
- The
std::
andresult _of std::
type traits are no longer available in C++20 mode, as specified in the Standard.is _literal _type
Messages
A conversation transcript won’t scroll after viewing a photo in QuickLook. Workaround: Back out of the conversation and then reopen it to restore scrolling.
Phone
Emergency SOS “Call with 5 Presses” is disabled for all users outside of India to fix an issue that caused this setting to unintentionally default for some users.
Settings
In the Throughput Test results, the Idle Ping Latency is reported in incorrect units. For example, an actual ping latency of 123.32 ms is shown as 0.12 ms. (87599982)
SharePlay
A new GroupActivities API allows you to present UI that enables starting a SharePlay session from within your app. (88099397)
StoreKit
SKTestSession
has three new methods to simulate a subscription requiring price increase consent, simulate consenting to a pending price increase, and simulate declining a price increase in automated tests.
SKTestSession
has two new Boolean properties to simulate billing retry and grace period in automated tests. You can identify and simulate the resolution of billing retry issues using the same APIs as interrupted purchases.
Users can now test the billing retry and grace period states using StoreKit Testing in Xcode. Use Xcode 13.3 or later to enable billing retry testing and toggle whether the app offers a grace period. Use isInBillingRetry
and gracePeriodExpirationDate
to handle these states in the app.
You can now test offer codes with StoreKit Testing in Xcode. Configure offers for codes in Xcode 13.3 or later, and test redeeming them using presentCodeRedemptionSheet()
Users can test subscription price increase behavior using StoreKit Testing in Xcode. Use Xcode 13.3 or later to set a price increase, then use paymentQueueShouldShowPriceConsent
(_:)
, showPriceConsentIfNeeded()
, and priceIncreaseStatus
in the app.
StoreKit
error types now conform to LocalizedError
.
Some types in StoreKit
now have a localizedDescription' read-only
String` instance property. This property can be used to get a human-readable description of the value, localized for the device’s current locale. These types include: Product.ProductType
, Product.SubscriptionInfo.RenewalState
, expirationReason
, priceIncreaseStatus
, Transaction.OfferType
, Product.SubscriptionOffer.OfferType
, Product.SubscriptionOffer.PaymentMode
, Product.SubscriptionPeriod.Unit
, Transaction.RevocationReason
, and Transaction.OwnershipType
.
SKAdNetwork
Implementation can now be unit tested using the StoreKit Test framework. You can use the SKAdTestSession
class to test the validity of ad impressions, update conversion values on test postbacks, and receive test postbacks at the server. This class also displays the URL to which the optional developer postback is sent.
SwiftUI
A TextField
initialized with a NumberFormatter
and a binding to a CGFloat
now update the binding.
UIKit
All animations created with UIView
block APIs or UIViewPropertyAnimator
run at up to 120Hz on iPhones with ProMotion displays.
If you are registered developer then you can go ahead and download the new beta over the air by simply grabbing the beta profile straight from Apple’s developer website. Once you have installed the profile, the update will be pushed to you over the air and you can download it from Settings > General > Software Update.