How to change the image launch screen using story to show picture display in rotated view when ipad in portrait orientation ?
Current launch screen
-Image Portrait Orientation
-Image Landscape Orientation
-Info Setting
Expected launch screen as below (Not Working)
-Expected Launch Screen
I have uploaded the entire sample source here
Overview
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I understand that mastering essential English skills is fundamental for developers.
However, as a Chinese developer, having an IDE with a Chinese interface when encountering Xcode operational issues can absolutely make development work twice as effective with half the effort.
A native-language interface environment allows us to focus all our energy on project development.
Xcode exists as our development “tool” to facilitate our work, not as another knowledge point requiring study—which could waste significant effort. Don't let an interface turn our beloved tool into a burden.
Translated with DeepL.com (free version)
Topic:
Developer Tools & Services
SubTopic:
Xcode
Hello guys,
i need a little help. Im building an alarm clock app, pretty good one, and i have my own sounds i want to use as the alarm ring but notifications on apple cant work when the phone is turned off or the device is in silent mode (Or at least thats how i understand it) unless they have this feature called critical alerts that lets you have notifications even when the phone is turned off or silented. Without this, the phone can do just one beep and only when you open the notification, then it starts ringing but how is this supposed to wake you up? Alarmy has this worked out fine and i cant figure out how, maybe someone here knows. Im thinking maybe they have the critical alerts enabled but then i dont know why Apple would approve theirs and not mine. I tried to submit for the critical alerts feature but apple didn’t approve it saying the app is not the use case and im kinda lost. The whole app could be ruined because of this. So my question is. is there any way how i can use my custom sounds as a notifications on ios even if the phone is turned off or in silent mode+turned off and the app is not straight up running without being approved for critical alerts? Somehow like alarmy does it but i dont know if they have the critical alerts or not.
Thank you very much for any kind of help 🙏. For everyone whos reading this, take care!
Topic:
App & System Services
SubTopic:
Notifications
Hello.
When a user revokes Apple Login authorization, I am expecting a webhook to be delivered to our configured endpoint, but I currently not receiving any at all.
So I have some questions:
Should the revoke event webhook be delivered in real-time?
If it is not real-time, when is the webhook supposed to be sent?
If my server fails to respond to the webhook request, does Apple retry the delivery? (Actually I couldn't find how to response in this scenario, but if I can)
Thanks in advance.
Topic:
Privacy & Security
SubTopic:
Sign in with Apple
Tags:
Sign in with Apple REST API
Sign in with Apple
I want to add the "Sign In with Apple" feature to my iPadOS application. I've already done the following:
Include com.apple.developer.applesignin in mobileprovision
Include com.apple.developer.applesignin in entitlements
However, I'm getting the following errors:
`Authorization failed: Error Domain=AKAuthenticationError Code=-7026 "(null)" UserInfo={AKClientBundleID=xxxx}
LaunchServices: store (null) or url (null) was nil: Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database" UserInfo={_LSLine=72, _LSFunction=_LSServer_GetServerStoreForConnectionWithCompletionHandler, _LSFile=LSDReadService.mm, NSDebugDescription=process may not map database}
Attempt to map database failed: permission was denied. This attempt will not be retried.
Failed to initialize client context with error Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database" UserInfo={_LSLine=72, _LSFunction=_LSServer_GetServerStoreForConnectionWithCompletionHandler, _LSFile=LSDReadService.mm, NSDebugDescription=process may not map database}
Failed to get application extension record: Error Domain=NSOSStatusErrorDomain Code=-54 "(null)"
ASAuthorizationController credential request failed with error: Error Domain=com.apple.AuthenticationServices.AuthorizationError Code=1000 "(null)"
`
What is this problem? How can I solve it?
Hoping someone can help, thank you!
I’m running into a problem with SwiftUI/AppKit event handling on macOS Tahoe 26.2.
I have a layered view setup:
Bottom: AppKit NSView (NSViewRepresentable)
Middle: SwiftUI view in an NSHostingView with drag/tap gestures
Top: Another SwiftUI view in an NSHostingView
On macOS 26.2, the middle NSHostingView no longer receives mouse or drag events when the top NSHostingView is present. Events pass through to the AppKit view below. Removing the top layer immediately restores interaction. Everything works correctly on macOS Sequoia.
I’ve posted a full reproducible example and detailed explanation on Stack Overflow, including a single-file demo:
Stack Overflow post:
https://stackoverflow.com/q/79862332
I also found a related older discussion here, but couldn’t get the suggested workaround to apply:
https://developer.apple.com/forums/thread/759081
Any guidance would be appreciated.
Thanks!
On MacBook Pro M3 14" I can profile the Metal App performance by running it, then clicking on the M icon and choosing profile after replay.
On Mac Studio M2 Ultra I cannot: the profiler starts and crashes. I have tried everything including reinstalling the OS, Xcode, the Metal SDK, you name it.
The app uses the Metal 4 API. The content of the replayer errorinfo report is shown at the end.
Any ideas what is going on here and/or what else I can do do root cause this and fix it?
FWIW, it was worse on 26.1 (Xcode just reported Metal 4 profiling not available). In 26.2 Xcode attempts to profile and invariably crashes.
=== Error summary: ===
1x DYErrorDomain (512) - guest app crashed (512)
1x com.apple.gputools.MTLReplayer (100) - Abort trap: 6
=== First Error ===
Domain: DYErrorDomain
Error code: 512
Description: guest app crashed (512)
GTErrorKeyPID: 26913
GTErrorKeyProcessName: GPUToolsReplayService
GTErrorKeyCrashDate: 2026-01-09 19:22:52 +0000
=== Underlying Error #1 ===
Domain: com.apple.gputools.MTLReplayer
Error code: 100
Description: Abort trap: 6
Call stack:
0 GPUToolsReplay 0x0000000249c25850 MakeNSError + 284
1 GPUToolsReplay 0x0000000249c26428 HandleCrashSignal + 252
2 libsystem_platform.dylib 0x00000001856c7744 _sigtramp + 56
3 libsystem_pthread.dylib 0x00000001856bd888 pthread_kill + 296
4 libsystem_c.dylib 0x00000001855c2850 abort + 124
5 libsystem_c.dylib 0x00000001855c1a84 err + 0
6 IOGPU 0x00000001a9ea60a8 -[IOGPUMetal4CommandQueue _commit:count:commitFeedback:].cold.1 + 0
7 IOGPU 0x00000001a9ea0df8 __77-[IOGPUMetal4CommandQueue commitFillArgs:count:args:argsSize:commitFeedback:]_block_invoke + 0
8 IOGPU 0x00000001a9ea1004 -[IOGPUMetal4CommandQueue _commit:count:commitFeedback:] + 148
9 AGXMetalG14X 0x00000001158a2c98 -[AGXG14XFamilyCommandQueue_mtlnext noMergeCommit:count:options:commitFeedback:error:] + 116
10 AGXMetalG14X 0x0000000115a45c14 +[AGXG14XFamilyRenderContext_mtlnext mergeRenderEncoders:count:options:commitFeedback:queue:error:] + 4740
11 AGXMetalG14X 0x00000001158a2b34 -[AGXG14XFamilyCommandQueue_mtlnext commit:count:options:] + 96
12 GPUToolsReplay 0x0000000249bf0644 GTMTLReplayController_defaultDispatchFunction_noPinning + 2744
13 GPUToolsReplay 0x0000000249befb10 GTMTLReplayController_defaultDispatchFunction + 1368
14 GPUToolsReplay 0x0000000249b7a61c _ZL16DispatchFunctionP21GTMTLReplayControllerPK11GTTraceFuncRb + 476
15 GPUToolsReplay 0x0000000249b8603c ___ZN35GTUSCSamplingStreamingManagerHelper19StreamFrameTimeDataEv_block_invoke + 456
16 Foundation 0x0000000186f6c878 __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 24
17 Foundation 0x0000000186f6c740 -[NSBlockOperation main] + 96
18 Foundation 0x0000000186f6c6d8 __NSOPERATION_IS_INVOKING_MAIN__ + 16
19 Foundation 0x0000000186f6c308 -[NSOperation start] + 640
20 Foundation 0x0000000186f6c080 __NSOPERATIONQUEUE_IS_STARTING_AN_OPERATION__ + 16
21 Foundation 0x0000000186f6bf70 __NSOQSchedule_f + 164
22 libdispatch.dylib 0x00000001855104d0 _dispatch_block_async_invoke2 + 148
23 libdispatch.dylib 0x000000018551aad4 _dispatch_client_callout + 16
24 libdispatch.dylib 0x00000001855056e4 _dispatch_continuation_pop + 596
25 libdispatch.dylib 0x0000000185504d58 _dispatch_async_redirect_invoke + 580
26 libdispatch.dylib 0x0000000185512fc8 _dispatch_root_queue_drain + 364
27 libdispatch.dylib 0x0000000185513784 _dispatch_worker_thread2 + 180
28 libsystem_pthread.dylib 0x00000001856b9e10 _pthread_wqthread + 232
29 libsystem_pthread.dylib 0x00000001856b8b9c start_wqthread + 8
Replayer breadcrumbs:
[
]
GTErrorKeyProcessSignal: SIGABRT
=== Setup ===
Capture device: star.localdomain (Mac14,14) - macOS 26.2 (25C56) - 0BA10D1D-D340-5F2E-934B-536675AF9BA1
Metal version: 370.64.2
Supported graphics APIs:
Metal device: Apple M2 Ultra
Supported GPU families: Apple1 Apple2 Apple3 Apple4 Apple5 Apple6 Apple7 Apple8 Mac1 Mac2 Common1 Common2 Common3 Metal3 Metal4
Replay device: star (Mac14,14) - macOS 26.2 (25C56) - 0BA10D1D-D340-5F2E-934B-536675AF9BA1
Metal version: 370.64.2
Supported graphics APIs:
Metal device: Apple M2 Ultra
Supported GPU families: Apple1 Apple2 Apple3 Apple4 Apple5 Apple6 Apple7 Apple8 Mac1 Mac2 Common1 Common2 Common3 Metal3 Metal4
Host: Mac14,14 - macOS 26.2 (25C56)
Tool: Xcode (17C52)
Known SDKs:
Topic:
Graphics & Games
SubTopic:
Metal
https://developer.apple.com/news/?id=j9zukcr6
starting from Jan 2026 there is change in requirements for account notifications for Sign in with Apple.
Does this apply only to developers based in South Korea or all apps which are avai via the korean App Store?
"I am attempting to read and write data to an Office Group Container, and I am consistently prompted with the "App would like to access data from other apps" alert. How can I configure the application or environment to suppress this repeated permission prompt?"
Topic:
Privacy & Security
SubTopic:
General
Hello,
I am implementing "Sign in with Apple" on my backend and validating the Identity Token (JWT) received from the client.
I noticed that for some users who choose the "Hide My Email" option, the is_private_email claim is missing from the ID Token payload, even though the email address clearly belongs to the private relay domain (@privaterelay.appleid.com).
Here is an example of the decoded payload I received:
{
"iss": "https://appleid.apple.com",
"aud": "com.platform.elderberry.new.signinwithapple",
"exp": 1764402438,
"iat": 1764316038,
"sub": "000851.86193ef81ad247feb673746c19424f28.0747",
"c_hash": "3FAJNf4TILzUgo_YFe4E0Q",
"email": "x8sqp2dgvv@privaterelay.appleid.com",
"email_verified": true,
"auth_time": 1764316038,
"nonce_supported": true
// "is_private_email": true <-- This field is missing
}
My Questions:
Is the is_private_email claim considered optional in the ID Token?
Is it safe and recommended to rely solely on the email domain suffix (@privaterelay.appleid.com) to identify if a user is using a private email?
Any insights or official references would be appreciated.
Thanks.
Hello,
I am implementing "Sign in with Apple" on my backend and validating the Identity Token (JWT) received from the client.
I noticed that for some users who choose the "Hide My Email" option, the is_private_email claim is missing from the ID Token payload, even though the email address clearly belongs to the private relay domain (@privaterelay.appleid.com).
Here is an example of the decoded payload I received:
{ "iss": "https://appleid.apple.com", "aud": "xxx", "exp": 1764402438, "iat": 1764316038, "sub": "xxxxxxxx", "c_hash": "3FAJNf4TILzUgo_YFe4E0Q", "email": "xxx@privaterelay.appleid.com", "email_verified": true, "auth_time": 1764316038, "nonce_supported": true // "is_private_email": true <-- This field is missing }
My Questions:
Is the is_private_email claim considered optional in the ID Token?
Is it safe and recommended to rely solely on the email domain suffix (@privaterelay.appleid.com) to identify if a user is using a private email?
Any insights or official references would be appreciated.
Thanks.
Description
Title of the view controller is not displayed for the 1st view controller in navigation stack.
Is there a way to show it?
Main problem is that selected tab is a UITabGroup and there's no way to understand which child of it is currently selected without opening the sidebar or guessing by the content.
Human Interface Guidelines
In the guidelines there are examples with title visible on the iPad in similar case:
https://developer.apple.com/design/human-interface-guidelines/tab-bars
Code
import UIKit
import SwiftUI
struct TestView: View {
var tab: UITab?
let id = UUID()
var body: some View {
ScrollView {
HStack {
Spacer()
VStack {
Text(tab?.title ?? id.uuidString)
}
Spacer()
}
.frame(height: 1000)
.background(.red)
.onTapGesture {
tab?.viewController?.navigationController?.pushViewController(
TestViewController(nil), animated: true
)
}
}
}
}
class TestViewController: UIHostingController<TestView> {
let _tab: UITab?
init(_ tab: UITab?) {
self._tab = tab
super.init(rootView: TestView(tab: _tab))
}
@MainActor @preconcurrency required dynamic init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = _tab?.title ?? "tab-nil"
}
}
class ViewController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
mode = .tabSidebar
let provider: (UITab) -> UIViewController = { tab in
print(tab)
return TestViewController(tab)
}
let tab1 = UITabGroup(
title: "Tab 1",
image: UIImage(systemName: "1.square.fill"),
identifier: "tab1",
children: [
UITab(title: "Sub 1",
image: UIImage(systemName: "1.circle"),
identifier: "First Tab",
viewControllerProvider: provider),
UITab(title: "Sub 2",
image: UIImage(systemName: "2.circle"),
identifier: "Second Tab",
viewControllerProvider: provider)
])
tab1.selectedChild = tab1.children[0]
tab1.managingNavigationController = UINavigationController()
let tab2 = UITabGroup(
title: "Tab 2",
image: UIImage(systemName: "2.square.fill"),
identifier: "Section one",
children:
[
UITab(
title: "Sub 1",
image: UIImage(systemName: "a.circle"),
identifier: "Section 1, item A",
viewControllerProvider: provider),
UITabGroup(title: "Sub Group", image: nil, identifier: "q",
children: [
UITab(
title: "Item 1",
image: UIImage(systemName: "b.circle"),
identifier: "c1",
viewControllerProvider: provider),
UITab(
title: "Item 2",
image: UIImage(systemName: "b.circle"),
identifier: "c2",
viewControllerProvider: provider)
],
viewControllerProvider: provider
),
]
)
tab2.selectedChild = tab2.children[0]
tab2.managingNavigationController = UINavigationController()
tabs = [
tab1,
tab2,
]
selectedTab = tab1
}
}
Topic:
UI Frameworks
SubTopic:
UIKit
Hello I am trying to release an application using EXPO ROUTER + EXPO RN WEB.
I am trying to implement Apple Login using Firebase.
I have already put necessary info in both App Store Connect and Firebas console.
Now I am so confused what I have to do next.
What are some resource I could use or tips you could possibly give me when making apple login available using firebase.
Pleas all helps are welcomed and needed
Did DYLD_PRINT_STATISTICS stop working?
I am using Xcode 26.0.1 and have tried it on several simulators and real devices, but am not getting any output. I haven't used this environment variable in a few years so don't know when it might have stopped working.
Has it been superseded or replaced?
Topic:
Developer Tools & Services
SubTopic:
Xcode
We are experiencing a failure in CLMonitor event delivery when the application is launched into the background via an APNS (Remote Push Notification).
Even when a CLBackgroundActivitySession is instantiated immediately upon background launch, CLCircularGeographicCondition "Enter" events are suppressed. The system fails to deliver these events until the user manually brings the application to the Foreground. This indicates that CLBackgroundActivitySession does not correctly maintain background persistence when the session begins in a background state rather than transitioning from the foreground.
Comparison of API Behavior (Background State)
Launch via APNS:
CLMonitor: Fails to trigger "Enter" events until the app is manually brought to the foreground.
Legacy API: Successfully triggers and delivers "Enter" events immediately upon background launch.
Exit Event Reliability:
CLMonitor: Reliably triggers exit events even in the background.
Legacy API: Reliably triggers exit events.
Foreground Dependency:
CLMonitor: Requires a foreground transition to "flush" or activate the delivery of pending entry events.
Legacy API: No foreground transition required; events are delivered directly to the background process.
Event Recovery:
CLMonitor: Relies on the developer re-instantiating the CLMonitor and awaiting the events stream, which appears to "stall" during warm-starts.
Legacy API: Relies on the CLLocationManagerDelegate which remains active as long as the manager instance exists.
Steps to Reproduce
Preconditions:
Location Permissions: Set to "Always Allow".
Background Modes: "Location updates" and "Remote notifications" enabled.
App State: Terminated or Killed (by the user or the OS).
Reproduction Path:
Trigger Background Launch: Send a silent push notification (APNS) to wake the app in the background.
Initialize Session: Within the background launch sequence (e.g., didFinishLaunchingWithOptions), immediately create and hold a strong reference to a CLBackgroundActivitySession.
Register Monitor: * Initialize CLMonitor using requestMonitorWithConfiguration.
Add a geofence using addConditionForMonitoring with a CLCircularGeographicCondition.
Simulate Entry: Move the physical device (or simulate location) into the geofence boundary while the app remains in the background state.
Observe: No "Enter" event is received in the CLMonitor event stream.
Foreground Transition: Bring the app to the foreground.
Actual Result: The "Enter" event is only delivered the moment the app enters the Foreground.
Expected Result: The CLBackgroundActivitySession should enable CLMonitor to deliver "Enter" events immediately in the background, parity with the deprecated startMonitoringForRegion API.
Running print operation on WKWebView I hit EXC_BREAKPOINT and there is all kinds of console spew that looks concerning:
ERROR: The NSPrintOperation view's frame was not initialized properly before knowsPageRange: returned. (WKPrintingView)
** CGContextClipToRect: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.**
WebContent[7743] networkd_settings_read_from_file Sandbox is preventing this process from reading networkd settings file at "/Library/Preferences/com.apple.networkd.plist", please add an exception.
CRASHSTRING: XPC_ERROR_CONNECTION_INVALID from launchservicesd
CRASHSTRING: rdar://problem/28724618 Process unable to create connection because the sandbox denied the right to lookup com.apple.coreservices.launchservicesd and so this process cannot talk to launchservicesd.
WebContent[7921] The sandbox in this process does not allow access to RunningBoard.
Safe to ignore all this?
There are many units which are inverse of standard units, e.g. wave period vs Hz, pace vs speed, Siemens vs Ohms, ...
Dimension can be subclassed to create the custom units.
How to extend Measurement.converted( to: )?
I was looking at somehow using UnitConverter and subclass to something like UnitConverterInverse.
Thoughts?
I'm building a SwiftUI app with SwiftData and want to centralize both query logic and related actions in a manager class. For example, let's say I have a reading app where I need to track the currently reading book across multiple views.
What I want to achieve:
@Observable
class ReadingManager {
let modelContext: ModelContext
// Ideally, I'd love to do this:
@Query(filter: #Predicate<Book> { $0.isCurrentlyReading })
var currentBooks: [Book] // ❌ But @Query doesn't work here
var currentBook: Book? {
currentBooks.first
}
func startReading(_ book: Book) {
// Stop current book if any
if let current = currentBook {
current.isCurrentlyReading = false
}
book.isCurrentlyReading = true
try? modelContext.save()
}
func stopReading() {
currentBook?.isCurrentlyReading = false
try? modelContext.save()
}
}
// Then use it cleanly in any view:
struct BookRow: View {
@Environment(ReadingManager.self) var manager
let book: Book
var body: some View {
Text(book.title)
Button("Start Reading") {
manager.startReading(book)
}
if manager.currentBook == book {
Text("Currently Reading")
}
}
}
The problem is @Query only works in SwiftUI views. Without the manager, I'd need to duplicate the same query in every view just to call these common actions.
Is there a recommended pattern for this? Or should I just accept query duplication across views as the intended SwiftUI/SwiftData approach?
Hello,
Is there a 2-device limit for CoreBluetooth on visionOS 2.1?
My app connects to 4 BLE peripherals on iOS but fails at the 3rd device on Vision Pro. The 3rd call to centralManager.connect() is successful and the peripheral enters .connecting state, but didConnect never fires and it stays in .connecting forever. No errors reported.
First 2 devices work perfectly. Same code on iOS connects all 4.
Has anyone else had this problem? Is there any documentation I can refer to that states something like this?
Environment: visionOS 2.1, CoreBluetooth, Apple Vision Pro. My BLE Peripherals are running on nRF52840.
We're troubleshooting SCK issues. They occur with a relatively small amount of sessions, but lack of context and/or ability to advise the customer on how they could make behavior more predictable and reliable is problematic.
Generally, there is 2 distinct issues which may or may not have the same root cause:
Failure to establish SCK session. Usually manifests within the app as SCShareableContent.getWithCompletionHandler call either never invoking the completion handler, or taking prohibitively long time (we usually give it 3-10 sec before giving up). In the system log it may look like this:
(log omitted - suspecting it triggers the content filter)
Note the 6 seconds delay to completion of fetchShareableContentWithOption (normally it's a 30-40ms operation).
Sometime, we'd see the stream established, but some minutes (or even hours) into the recording we'd stop receiving frames.
Both scenarios are likely to occur when the disk space is low, with reliable repro of the problem #2 at below 8gb of free space (in that case, we've seen replayd silently dropping the session, without ever notifying the client ... improving API could go a long way there). However, out of recent occurrences, while most have less than 100GB available, we've seen it on machines with as much as 500GB free.
Unfortunately, it's almost never reproducible in dev environment, so we have to rely on diagnostics we're able to collect in the field -- which nothing obvious yet.
I'd like to understand the root cause of both scenarios better and/or how what specific frameworks can cause these behaviors.