New
- CloudKit server-to-server requests –
cloudkit-refnow covers signing requests to CloudKit Web Services: key setup, what each request signs, the three request headers, and how long a signed request stays valid (10 minutes). It includes a converter for signatures made with Web Crypto (Cloudflare Workers, Deno, and browsers), which CloudKit rejects until they’re converted to DER. - Silent pushes without an APNs server –
background-processingnow covers sending silent pushes through CloudKit. A query subscription in the public database pushes to each subscribed user’s devices when a record is created, so a scheduled server job can wake your app without running an APNs server or storing device tokens.
Updated
- Background App Refresh – Now covers how turning it off stops refresh tasks, processing tasks, and background pushes alike, and makes any attempt to schedule a background task fail with an error. A new table maps which of the seven scheduling factors gate each background mode. The change covers
background-processing,background-processing-diag,background-processing-ref, andpush-notifications-diag. - Apps users stop opening – Now covers how refresh tasks, processing tasks, and background pushes all depend on recent launches, so background work stops when users stop opening an app. Apple says background pushes aren’t delivered to an app the user hasn’t launched for a while, so the guidance is to refresh when the app opens rather than push more often. The change covers
background-processing,background-processing-diag,background-processing-ref, andpush-notifications-diag. - Rescheduling refresh tasks – Now covers how scheduling a refresh task again replaces the one already waiting and restarts its delay, so an app that reschedules every time a silent push or another background task wakes it keeps postponing its own refresh. The guidance is to schedule from those wakes only when no refresh is already waiting. The change covers
background-processingandbackground-processing-diag. - Processing tasks and file protection – Now covers how processing tasks never start before the user first unlocks the device after a restart, and usually run while it’s locked. Files a processing task reads can use no stricter protection than
.completeUntilFirstUserAuthentication(the default), because a database protected with.completecan’t be opened while the device is locked. The change coversbackground-processingandbackground-processing-diag. - Background task scheduling errors –
background-processing-refnow matches each scheduling error to its cause..unavailablemeans Background App Refresh is off or the app is running in Simulator, and.notPermittedmeans the app’sInfo.plistis missing a background mode or the task’s identifier, or the user has denied the app background launches. - Also updated – The example in
background-processing-diagthat checks for an already-waiting task now compiles without warnings under Swift 6.
Full Changelog: v27.6.1...v27.6.2