``
The iOS & iPadOS 15.4 SDK provides support to develop apps for iPhone, iPad, and iPod touch devices running iOS & iPadOS 15.4 beta. The SDK comes bundled with Xcode 13.3 beta, available from Beta Software Downloads. For information on the compatibility requirements for Xcode 13.3, see Xcode 13.3 Beta Release Notes.
[PKPaymentRequest
](/documentation/passkit/pkpaymentrequest). Network preference is determined by the order of [supportedNetworks
](/documentation/passkit/pkpaymentrequest/1619329-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. (80827905)[GCDualSenseAdaptiveTrigger
](/documentation/gamecontroller/gcdualsenseadaptivetrigger). (87433163)HealthKit
query APIs in Swift now support async/await syntax, which simplifies the structure of code that previously used completion callbacks. (74040680)[SKTestSession
](/documentation/storekittest/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. (84556183)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. (83956205)[isInBillingRetry
](/documentation/storekit/product/subscriptioninfo/renewalinfo/3749502-isinbillingretry) and [gracePeriodExpirationDate
](/documentation/storekit/product/subscriptioninfo/renewalinfo/3749500-graceperiodexpirationdate) to handle these states in the app. (83938270)[presentCodeRedemptionSheet()
](/documentation/storekit/skpaymentqueue/3566726-presentcoderedemptionsheet). (63692551)[paymentQueueShouldShowPriceConsent(_:)
](/documentation/storekit/skpaymentqueuedelegate/3521328-paymentqueueshouldshowpriceconse), [showPriceConsentIfNeeded()
](/documentation/storekit/skpaymentqueue/3521327-showpriceconsentifneeded), and [priceIncreaseStatus
](/documentation/storekit/product/subscriptioninfo/renewalinfo/3822292-priceincreasestatus) in the app. (58770817)StoreKit
error types now conform to [LocalizedError
](/documentation/foundation/localizederror). (78735204)StoreKit
now have a localizedDescription' read-only
Stringinstance 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
](/documentation/storekit/product/subscriptioninfo/renewalstate), [expirationReason
](/documentation/storekit/product/subscriptioninfo/renewalinfo/3749499-expirationreason), [priceIncreaseStatus
](/documentation/storekit/product/subscriptioninfo/renewalinfo/3822292-priceincreasestatus), [Transaction.OfferType
](/documentation/storekit/transaction/offertype), [Product.SubscriptionOffer.OfferType
](/documentation/storekit/product/subscriptionoffer/offertype), [Product.SubscriptionOffer.PaymentMode
](/documentation/storekit/product/subscriptionoffer/paymentmode), [Product.SubscriptionPeriod.Unit
](/documentation/storekit/product/subscriptionperiod/unit), [Transaction.RevocationReason
](/documentation/storekit/transaction/revocationreason), and [Transaction.OwnershipType
](/documentation/storekit/transaction/ownershiptype). (78735060)[SKAdNetwork
](/documentation/storekit/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. (59571961)[loadProduct(withParameters:completionBlock:)
](/documentation/storekit/skstoreproductviewcontroller/1620632-loadproduct) now consistently calls the completion block. (85077158)[updates
](/documentation/storekit/transaction/3851206-updates) now emits unfinished transactions when iterating for the first time. (85294525)[updates
](/documentation/storekit/transaction/3851206-updates) now emits all updated transactions. (85877689)[presentCodeRedemptionSheet()
](/documentation/storekit/skpaymentqueue/3566726-presentcoderedemptionsheet), [paymentQueueShouldShowPriceConsent(_:)
](/documentation/storekit/skpaymentqueuedelegate/3521328-paymentqueueshouldshowpriceconse), and [showPriceConsentIfNeeded()
](/documentation/storekit/skpaymentqueue/3521327-showpriceconsentifneeded). (85982859)
Workaround: Test these APIs using an iOS device.[TextField
](/documentation/SwiftUI/TextField) initialized with a [NumberFormatter
](/documentation/foundation/numberformatter) and a binding to a [CGFloat
](/documentation/coregraphics/cgfloat) now update the binding. (85454991)
-"iOS & iPadOS 15.4 Beta Release Notes | Apple Developer Documentation"