Overview

Post

Replies

Boosts

Views

Activity

UITextField and UITextView abnormally popped up the network permission application interface
in iOS26.4, after installing the app for the first time, opening the app and clicking on the UITextField input box will trigger the system to pop up the network permission application interface. This issue did not exist before iOS 26.3, only in iOS 26.4. This is a fatal bug where the network permission request box should not pop up when the developer has not called the network related API.
4
0
433
4w
iOS 26: Interactive sheet dismissal causes layout hitch in underlying SwiftUI view
I’ve been investigating a noticeable animation hitch when interactively dismissing a sheet over a SwiftUI screen with moderate complexity. This was not the case on iOS 18, so I’m curious if others are seeing the same on iOS 26 or have found any mitigations. When dismissing a sheet via the swipe gesture, there’s a visible hitch right after lift-off. The hitch comes from layout work in the underlying view (behind the sheet) The duration scales with the complexity of that view (e.g. number of TextFields/layout nodes) The animation for programmatic dismiss (e.g. tapping a “Done” button) is smooth, although it hangs for a similar amount of time before dismissing, so it appears that the underlying work still happens. SwiftUI is not reevaluating the body during this (validated with Self._printChanges()), so that is not the cause. Using Instruments, the hitch shows up as a layout spike on the main thread: 54ms UIView layoutSublayersOfLayer 54ms └─ _UIHostingView.layoutSubviews 38ms └─ SwiftUI.ViewGraph.updateOutputs 11ms ├─ partial apply for implicit closure #1 in closure #1 │ in closure #1 in Attribute.init<A>(_:) 4ms └─ -[UIView For the same hierarchy with varying complexity: ~3 TextFields in a List: ~25ms (not noticeable) ~20+ TextFields: ~60ms (clearly visible hitch) The same view hierarchy on iOS 18 did not exhibit a visible hitch. I’ve tested this on an iOS 26.4 device and simulator. I’ve also included a minimum reproducible example that illustrates this: struct ContentView: View { @State var showSheet = false var body: some View { NavigationStack { ScrollView { ForEach(0..<120) { _ in RowView() } } .navigationTitle("Repro") .toolbar { ToolbarItem(placement: .topBarTrailing) { Button("Present") { showSheet = true } } } .sheet(isPresented: $showSheet) { PresentedSheet() } } } } struct RowView: View { @State var first = "" @State var second = "" var body: some View { VStack(alignment: .leading, spacing: 12) { Text("Row") .font(.headline) HStack(spacing: 12) { TextField("First", text: $first) .textFieldStyle(.roundedBorder) TextField("Second", text: $second) .textFieldStyle(.roundedBorder) } HStack(spacing: 12) { Text("Third") Text("Fourth") Image(systemName: "chevron.right") } } } } struct PresentedSheet: View { @Environment(\.dismiss) private var dismiss var body: some View { NavigationStack { List {} .navigationTitle("Swipe To Dismiss Me") .toolbar { ToolbarItem(placement: .topBarTrailing) { Button("Done") { dismiss() } } } } } } Is anyone else experiencing this and have any mitigations been found beyond reducing view complexity? I’ve filed a feedback report under FB22501630.
1
0
241
4w
Apple Watch co-sysdiagnose not generated in Family Setup / managed account scenario
Hi everyone, I’m currently researching Apple Watch pairing behavior and diagnostic logging across different setup modes. I can reliably trigger a co-sysdiagnose on an Apple Watch when it is paired in a normal standalone / standard configuration. In that case, the expected co-sysdiagnose archive appears on the paired iPhone. However, in a Family Setup / managed account scenario, behavior is different: The watch provides the expected haptic feedback after the sysdiagnose button combination But no co-sysdiagnose archive appears on the paired iPhone afterward The same hardware behaves differently depending on pairing/account configuration My question is: Is co-sysdiagnose collection, transport, or availability intentionally different for Family Setup / managed Apple Watch devices? For example: Are logs stored elsewhere? Is transfer to the organizer iPhone restricted? Is co-sysdiagnose unsupported in Family Setup mode? Are additional conditions required, such as Wi-Fi, charging state, unlocked devices, or a longer delay? I may be missing something obvious, but I have not found documentation describing this difference. If this is expected behavior, I’d really appreciate a pointer to the relevant documentation. Thanks a lot!
1
0
131
3w
same passkey synced on 2 devices generate different prf outputs for the same salt
Steps to reproduce: register a passkey on device A authenticate on device A, using the prf extension and a constant salt. Note the prf output go to device B. wait for iCloud sync authenticate on device B using the prf extension and the same constant salt. Note the prf output The prf outputs are different. Note: Repeat the authentication on each device. The prf output is identical for a given device, which seems to point towards the inclusion of a device specific component in the prf derivation. In my scenario, I need the prf output to be the same regardless of the device since I use it as the recovery key for my app data. Could you confirm that this is the expected behavior or not? Thanks,
1
0
298
4w
App Review: submission stuck in "Waiting for Review" for 3+ days
Hi — I submitted ClaudeScope (a utility app, Bundle ID io.sandwichlab.claudescope, Apple ID 6761888911) for review on April 12, 19:40 PDT. It's been in "Waiting for Review" for over three calendar days and I just want to confirm there isn't a metadata issue quietly blocking the queue. Details: App name: ClaudeScope Bundle ID: io.sandwichlab.claudescope Apple ID: 6761888911 Version 1.0.0 (build 2) Current status: Waiting for Review No rejection or reviewer message in Resolution Center Happy to provide additional information if needed. Thanks in advance for any pointers.
1
0
68
3w
actionGroupCell Y coordinates are corrupted. The overlay for 'Save to Files' doesn't expose no valid id's for testability.
I am using Maestro framework for testing iOS. For our tests we need to save pdf's to files. When opening the 'QLOverlayDefaultActionButtonAccessibilityIdentifier' the buttons on the overlay are way off, the coordinates got corrupted. When opening the files app, the next screen has no coordinates for testing. I checked with xcode inspector and the same issue persists.
1
0
471
4w
Shortcuts: Can not access submenu of inserted variables inside of newly created dictionaries on mac
While I was creating a shortcut using the dictionary function I encountered a bug. When creating a new dictionary to store the date and some other stuff I set a value to the current date variable. I went to change the date format to one I preferred I was unable to access the submenu to do so. To figure out what was going on I did some testing and here is what I found: You can't access the submenu of any inserted variable This only happens in newly created dictionaries You can be fix the dictionary by simply closing and opening the shortcut This bug does not happen on Iphone How to make this bug happen: Open any shortcut Create a new dictionary Add a variable in the value field You can no longer access the sub menu to edit the variable.
1
0
164
3w
Bug: Finder/AppleScript interaction
I have created a simple AppleScript that makes a folder named with today’s date. For many years, it has worked fine except: If I run the script (from a script app in the menu bar), then dump files into the folder, then change the colored “Tag” on the folder, I get a Finder error - An unexpected error occurred (error code -8076) - and I have to force-quit the Finder to complete the color tagging. If it change the tag before dumping the files, no error occurs. (Please hold the “Doctor, it hurts when I do this …” jokes.) This error has persisted through many macOS major iterations, including Tahoe 26.4.1. Prolly a Finder bug, but not sure. Here’s the source, for anyone interested. set dateStr to getDate() --display dialog dateStr tell application "Finder" activate try --set thisFolder to (the target of the front window) as alias set thisFolder to (the target of the front window) as string make new folder at thisFolder with properties {name:dateStr as string} on error errMsg display dialog "ERROR: " & errMsg end try end tell on getDate() set theDate to current date set theYear to year of theDate as string set theNewYear to third character of theYear & fourth character of theYear set theMonth to month of theDate as number as string if length of theMonth = 1 then set theMonth to "0" & theMonth as string end if set theDay to day of theDate as string if length of theDay = 1 then set theDay to "0" & theDay as string end if return theNewYear & " " & theMonth & " " & theDay as string end getDate
3
0
210
3w
watchOS VoIP App: Incoming Calls?
Hello! I’m building a VoIP app for iPhone and Apple Watch using PushKit and CallKit. I’m trying to understand the recommended watchOS architecture for this kind of setup. What we would like is for the watch to behave as an endpoint for incoming calls, so that when a call comes in the user can answer on either the iPhone or the watch. My understanding is that VoIP notifications are not supported on watchOS, so for incoming calls what we ended up having to do was send the watch a regular APNs alert notification and only start the actual call setup after the user interacts with it. This isn’t ideal, and the notification often appears a few seconds late. What we would like to be able to do is present the incoming call on the watch more like how FaceTime calls appear on Apple Watch. So I wanted to ask whether this is the intended pattern for a companion watchOS VoIP app. Is using a regular APNs alert notification the correct way to surface an incoming call on the watch, or is there a better supported approach? Thanks!
2
0
179
4w
App Store Connect rejects com.apple.deviceactivity.monitor for Device Activity Monitor Extension
I’m submitting an iOS app that uses Family Controls / DeviceActivity APIs, and App Store Connect rejects the archive during distribution with this error: Invalid Info.plist value. The value of the NSExtensionPointIdentifier key, com.apple.deviceactivity.monitor, in the Info.plist of “activity-tracking.app/PlugIns/ScheduleMonitorExtension.appex” is invalid. What I’ve already verified: Family Controls capability is approved for our team App IDs and distribution provisioning profiles were regenerated The source Info.plist for the extension contains: NSExtensionPointIdentifier = com.apple.deviceactivity.monitor The archived .appex inside the .xcarchive also contains the same exact value Signed entitlements in the archived .appex include: com.apple.developer.family-controls = true app group entitlement Main app archive is signed correctly as well Latest stable Xcode used This makes it look like the archive is configured correctly, but App Store Connect still rejects the Device Activity Monitor extension point itself. Has anyone successfully distributed a third-party app containing a Device Activity Monitor Extension to App Store Connect recently? Is there an additional Apple-side approval required beyond visible Family Controls entitlement approval?
1
0
174
4w
Xcode to play a Sound when a fault is logged
Hi I have an Xcode project in which I am logging (os log) some faults when an error occurs. While developing I would like to notice it when the fault occurs. Questions Are there are better approaches to be alerted (sound or other means) when a fault occurs? My attempts so far: Add fault log and filter for faults Add breakpoint and play sound when breakpoint encountered Disadvantages with fault filtering: Though I can filter for faults sometimes I often need to look at debug messages. Having a lot of debug messages I am lost, yes I can filter but might forget to do it during every build Disadvantages with breakpoints: Sometimes I tend to delete breakpoints and might accidentally delete this breakpoint to play a sound
0
0
66
3w
SwiftData property marked ephemeral getting persisted in CloudKit
Am I misunderstanding the expected behavior here, or is there a bug in the behavior of @Attribute(.ephemeral) tagged SwiftData model properties? The documentation for .ephemeral says "Track changes to this property but do not persist". I started using .ephemeral because @Transient was inhibiting SwiftUI from reacting to changes to the property through @Observable. I am updating the value of my @Attribute(.ephemeral) property about once a second and I am seeing corresponding console log output showing the property as part of the generated CKRecord object. I then confirmed in the CloudKit dev portal that the .ephemeral property was added to the Record schema and contains real values. The behavior seems as though the .ephemeral property is being completely ignored. This is observed in a new Xcode project using SwiftData with CloudKit, Xcode 16.2, macOS 15.3.1 and during Build & Run testing on physical devices.
3
1
987
4w
How to use the SpeechDetector Module
I am trying to use SpeechDetector Module in Speech framework along with SpeechTranscriber. and it is giving me an error Cannot convert value of type 'SpeechDetector' to expected element type 'Array.ArrayLiteralElement' (aka 'any SpeechModule') Below is how I am using it let speechDetector = Speech.SpeechDetector() let transcriber = SpeechTranscriber(locale: Locale.current, transcriptionOptions: [], reportingOptions: [.volatileResults], attributeOptions: [.audioTimeRange]) speechAnalyzer = try SpeechAnalyzer(modules: [transcriber,speechDetector])
5
2
631
3w
CarPlay CPListImageRowItem causes Inverted Scrolling and Side Button malfunction
In my CarPlaySceneDelegate.swift, I have two tabs: The first tab uses a CPListImageRowItem with a CPListImageRowItemRowElement. The scroll direction is inverted, and the side button does not function correctly. The second tab uses multiple CPListItem objects. There are no issues: scrolling works in the correct direction, and the side button behaves as expected. Steps To Reproduce Launch the app. Connect to CarPlay. In the first tab, scroll up and down, then use the side button to navigate. In the second tab, scroll up and down, then use the side button to navigate. As observed, the scrolling behavior is different between the two tabs. Code Example: import CarPlay import UIKit class CarPlaySceneDelegate: UIResponder, CPTemplateApplicationSceneDelegate { var interfaceController: CPInterfaceController? func templateApplicationScene( _ templateApplicationScene: CPTemplateApplicationScene, didConnect interfaceController: CPInterfaceController ) { self.interfaceController = interfaceController downloadImageAndSetupTemplates() } func templateApplicationScene( _ templateApplicationScene: CPTemplateApplicationScene, didDisconnectInterfaceController interfaceController: CPInterfaceController ) { self.interfaceController = nil } private func downloadImageAndSetupTemplates() { let urlString = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRcYUjd1FYkF04-8Vb7PKI1mGoF2quLPHKjvnR7V4ReZR8UjW-0NJ_kC7q13eISZGoTCLHaDPVbOthhH9QNq-YA0uuSUjfAoB3PPs1aXQ&s=10" guard let url = URL(string: urlString) else { setupTemplates(with: UIImage(systemName: "photo")!) return } URLSession.shared.dataTask(with: url) { [weak self] data, _, _ in let image: UIImage if let data = data, let downloaded = UIImage(data: data) { image = downloaded } else { image = UIImage(systemName: "photo")! } DispatchQueue.main.async { self?.setupTemplates(with: image) } }.resume() } private func setupTemplates(with image: UIImage) { // Tab 1 : un seul CPListImageRowItem avec 12 CPListImageRowItemRowElement let elements: [CPListImageRowItemRowElement] = (1...12).map { index in CPListImageRowItemRowElement(image: image, title: "test \(index)", subtitle: nil) } let rowItem = CPListImageRowItem(text: "Images", elements: elements, allowsMultipleLines: true) rowItem.listImageRowHandler = { item, elementIndex, completion in print("tapped element \(elementIndex)") completion() } let tab1Section = CPListSection(items: [rowItem]) let tab1Template = CPListTemplate(title: "CPListImageRowItemRowElement", sections: [tab1Section]) // Tab 2 : 12 CPListItem simples let tab2Items: [CPListItem] = (1...12).map { index in let item = CPListItem(text: "Item \(index)", detailText: "Detail \(index)") item.handler = { _, completion in print("handler Tab 2") completion() } return item } let tab2Section = CPListSection(items: tab2Items) let tab2Template = CPListTemplate(title: "CPListItem", sections: [tab2Section]) // CPTabBarTemplate avec les deux tabs let tabBar = CPTabBarTemplate(templates: [tab1Template, tab2Template]) interfaceController?.setRootTemplate(tabBar, animated: true) } } Here is a quick video:
7
0
589
4w
Distribution Methods - Ad-Hoc vs Debugging Validity
We’re planning to distribute our app outside of TestFlight because our testing period is expected to exceed the 90-day limit. Since we have an Apple Developer account, we’re considering using either Ad Hoc distribution or direct installation (debug/development builds) for longer-term testing. I have a few questions regarding this approach: Ad Hoc Distribution Validity What is the effective validity period of an Ad Hoc build? We’re aiming for long-term testing (4-5 months) and would like to avoid unexpected expiration—are there any constraints we should be aware of? Development/Debug Build Expiry & Limitations If we distribute the app using a development (debug) build via provisioning profiles, what is the expiration timeline? Are there practical limitations (e.g., device limits, performance differences, or provisioning renewal requirements) that could impact extended testing? Potential Complications & Best Practices Are there any issues we should anticipate when using these distribution methods for long-term testing? For example: Provisioning profile or certificate expiration Device registration limits Any policy or compliance considerations with Apple We’d appreciate any guidance or best practices for managing long-term testing outside of TestFlight while staying within Apple’s guidelines.
1
0
162
3w
UITextField and UITextView abnormally popped up the network permission application interface
in iOS26.4, after installing the app for the first time, opening the app and clicking on the UITextField input box will trigger the system to pop up the network permission application interface. This issue did not exist before iOS 26.3, only in iOS 26.4. This is a fatal bug where the network permission request box should not pop up when the developer has not called the network related API.
Replies
4
Boosts
0
Views
433
Activity
4w
Missing analytics tab
Hi, we just noticed that today no analytics tab is available in app view. While "analytics" on top bar next to "Apps" in app store connect redirect to /app.
Replies
7
Boosts
6
Views
251
Activity
3w
iOS 26: Interactive sheet dismissal causes layout hitch in underlying SwiftUI view
I’ve been investigating a noticeable animation hitch when interactively dismissing a sheet over a SwiftUI screen with moderate complexity. This was not the case on iOS 18, so I’m curious if others are seeing the same on iOS 26 or have found any mitigations. When dismissing a sheet via the swipe gesture, there’s a visible hitch right after lift-off. The hitch comes from layout work in the underlying view (behind the sheet) The duration scales with the complexity of that view (e.g. number of TextFields/layout nodes) The animation for programmatic dismiss (e.g. tapping a “Done” button) is smooth, although it hangs for a similar amount of time before dismissing, so it appears that the underlying work still happens. SwiftUI is not reevaluating the body during this (validated with Self._printChanges()), so that is not the cause. Using Instruments, the hitch shows up as a layout spike on the main thread: 54ms UIView layoutSublayersOfLayer 54ms └─ _UIHostingView.layoutSubviews 38ms └─ SwiftUI.ViewGraph.updateOutputs 11ms ├─ partial apply for implicit closure #1 in closure #1 │ in closure #1 in Attribute.init<A>(_:) 4ms └─ -[UIView For the same hierarchy with varying complexity: ~3 TextFields in a List: ~25ms (not noticeable) ~20+ TextFields: ~60ms (clearly visible hitch) The same view hierarchy on iOS 18 did not exhibit a visible hitch. I’ve tested this on an iOS 26.4 device and simulator. I’ve also included a minimum reproducible example that illustrates this: struct ContentView: View { @State var showSheet = false var body: some View { NavigationStack { ScrollView { ForEach(0..<120) { _ in RowView() } } .navigationTitle("Repro") .toolbar { ToolbarItem(placement: .topBarTrailing) { Button("Present") { showSheet = true } } } .sheet(isPresented: $showSheet) { PresentedSheet() } } } } struct RowView: View { @State var first = "" @State var second = "" var body: some View { VStack(alignment: .leading, spacing: 12) { Text("Row") .font(.headline) HStack(spacing: 12) { TextField("First", text: $first) .textFieldStyle(.roundedBorder) TextField("Second", text: $second) .textFieldStyle(.roundedBorder) } HStack(spacing: 12) { Text("Third") Text("Fourth") Image(systemName: "chevron.right") } } } } struct PresentedSheet: View { @Environment(\.dismiss) private var dismiss var body: some View { NavigationStack { List {} .navigationTitle("Swipe To Dismiss Me") .toolbar { ToolbarItem(placement: .topBarTrailing) { Button("Done") { dismiss() } } } } } } Is anyone else experiencing this and have any mitigations been found beyond reducing view complexity? I’ve filed a feedback report under FB22501630.
Replies
1
Boosts
0
Views
241
Activity
4w
Apple Watch co-sysdiagnose not generated in Family Setup / managed account scenario
Hi everyone, I’m currently researching Apple Watch pairing behavior and diagnostic logging across different setup modes. I can reliably trigger a co-sysdiagnose on an Apple Watch when it is paired in a normal standalone / standard configuration. In that case, the expected co-sysdiagnose archive appears on the paired iPhone. However, in a Family Setup / managed account scenario, behavior is different: The watch provides the expected haptic feedback after the sysdiagnose button combination But no co-sysdiagnose archive appears on the paired iPhone afterward The same hardware behaves differently depending on pairing/account configuration My question is: Is co-sysdiagnose collection, transport, or availability intentionally different for Family Setup / managed Apple Watch devices? For example: Are logs stored elsewhere? Is transfer to the organizer iPhone restricted? Is co-sysdiagnose unsupported in Family Setup mode? Are additional conditions required, such as Wi-Fi, charging state, unlocked devices, or a longer delay? I may be missing something obvious, but I have not found documentation describing this difference. If this is expected behavior, I’d really appreciate a pointer to the relevant documentation. Thanks a lot!
Replies
1
Boosts
0
Views
131
Activity
3w
same passkey synced on 2 devices generate different prf outputs for the same salt
Steps to reproduce: register a passkey on device A authenticate on device A, using the prf extension and a constant salt. Note the prf output go to device B. wait for iCloud sync authenticate on device B using the prf extension and the same constant salt. Note the prf output The prf outputs are different. Note: Repeat the authentication on each device. The prf output is identical for a given device, which seems to point towards the inclusion of a device specific component in the prf derivation. In my scenario, I need the prf output to be the same regardless of the device since I use it as the recovery key for my app data. Could you confirm that this is the expected behavior or not? Thanks,
Replies
1
Boosts
0
Views
298
Activity
4w
App Review: submission stuck in "Waiting for Review" for 3+ days
Hi — I submitted ClaudeScope (a utility app, Bundle ID io.sandwichlab.claudescope, Apple ID 6761888911) for review on April 12, 19:40 PDT. It's been in "Waiting for Review" for over three calendar days and I just want to confirm there isn't a metadata issue quietly blocking the queue. Details: App name: ClaudeScope Bundle ID: io.sandwichlab.claudescope Apple ID: 6761888911 Version 1.0.0 (build 2) Current status: Waiting for Review No rejection or reviewer message in Resolution Center Happy to provide additional information if needed. Thanks in advance for any pointers.
Replies
1
Boosts
0
Views
68
Activity
3w
actionGroupCell Y coordinates are corrupted. The overlay for 'Save to Files' doesn't expose no valid id's for testability.
I am using Maestro framework for testing iOS. For our tests we need to save pdf's to files. When opening the 'QLOverlayDefaultActionButtonAccessibilityIdentifier' the buttons on the overlay are way off, the coordinates got corrupted. When opening the files app, the next screen has no coordinates for testing. I checked with xcode inspector and the same issue persists.
Replies
1
Boosts
0
Views
471
Activity
4w
Shortcuts: Can not access submenu of inserted variables inside of newly created dictionaries on mac
While I was creating a shortcut using the dictionary function I encountered a bug. When creating a new dictionary to store the date and some other stuff I set a value to the current date variable. I went to change the date format to one I preferred I was unable to access the submenu to do so. To figure out what was going on I did some testing and here is what I found: You can't access the submenu of any inserted variable This only happens in newly created dictionaries You can be fix the dictionary by simply closing and opening the shortcut This bug does not happen on Iphone How to make this bug happen: Open any shortcut Create a new dictionary Add a variable in the value field You can no longer access the sub menu to edit the variable.
Replies
1
Boosts
0
Views
164
Activity
3w
StoreKit API anomalies in iOS 26.4 Beta 4
In iOS 26.4 beta 4, the receipt returned by StoreKit payments via [[NSBundle mainBundle] appStoreReceiptURL] corresponds to the previous transaction; the content only becomes correct after restarting the app.
Replies
3
Boosts
5
Views
512
Activity
4w
Bug: Finder/AppleScript interaction
I have created a simple AppleScript that makes a folder named with today’s date. For many years, it has worked fine except: If I run the script (from a script app in the menu bar), then dump files into the folder, then change the colored “Tag” on the folder, I get a Finder error - An unexpected error occurred (error code -8076) - and I have to force-quit the Finder to complete the color tagging. If it change the tag before dumping the files, no error occurs. (Please hold the “Doctor, it hurts when I do this …” jokes.) This error has persisted through many macOS major iterations, including Tahoe 26.4.1. Prolly a Finder bug, but not sure. Here’s the source, for anyone interested. set dateStr to getDate() --display dialog dateStr tell application "Finder" activate try --set thisFolder to (the target of the front window) as alias set thisFolder to (the target of the front window) as string make new folder at thisFolder with properties {name:dateStr as string} on error errMsg display dialog "ERROR: " & errMsg end try end tell on getDate() set theDate to current date set theYear to year of theDate as string set theNewYear to third character of theYear & fourth character of theYear set theMonth to month of theDate as number as string if length of theMonth = 1 then set theMonth to "0" & theMonth as string end if set theDay to day of theDate as string if length of theDay = 1 then set theDay to "0" & theDay as string end if return theNewYear & " " & theMonth & " " & theDay as string end getDate
Replies
3
Boosts
0
Views
210
Activity
3w
watchOS VoIP App: Incoming Calls?
Hello! I’m building a VoIP app for iPhone and Apple Watch using PushKit and CallKit. I’m trying to understand the recommended watchOS architecture for this kind of setup. What we would like is for the watch to behave as an endpoint for incoming calls, so that when a call comes in the user can answer on either the iPhone or the watch. My understanding is that VoIP notifications are not supported on watchOS, so for incoming calls what we ended up having to do was send the watch a regular APNs alert notification and only start the actual call setup after the user interacts with it. This isn’t ideal, and the notification often appears a few seconds late. What we would like to be able to do is present the incoming call on the watch more like how FaceTime calls appear on Apple Watch. So I wanted to ask whether this is the intended pattern for a companion watchOS VoIP app. Is using a regular APNs alert notification the correct way to surface an incoming call on the watch, or is there a better supported approach? Thanks!
Replies
2
Boosts
0
Views
179
Activity
4w
TestFlight download app not work
When downloading an app, I often cannot download it. What is the reason?
Replies
0
Boosts
0
Views
133
Activity
3w
App Store Connect rejects com.apple.deviceactivity.monitor for Device Activity Monitor Extension
I’m submitting an iOS app that uses Family Controls / DeviceActivity APIs, and App Store Connect rejects the archive during distribution with this error: Invalid Info.plist value. The value of the NSExtensionPointIdentifier key, com.apple.deviceactivity.monitor, in the Info.plist of “activity-tracking.app/PlugIns/ScheduleMonitorExtension.appex” is invalid. What I’ve already verified: Family Controls capability is approved for our team App IDs and distribution provisioning profiles were regenerated The source Info.plist for the extension contains: NSExtensionPointIdentifier = com.apple.deviceactivity.monitor The archived .appex inside the .xcarchive also contains the same exact value Signed entitlements in the archived .appex include: com.apple.developer.family-controls = true app group entitlement Main app archive is signed correctly as well Latest stable Xcode used This makes it look like the archive is configured correctly, but App Store Connect still rejects the Device Activity Monitor extension point itself. Has anyone successfully distributed a third-party app containing a Device Activity Monitor Extension to App Store Connect recently? Is there an additional Apple-side approval required beyond visible Family Controls entitlement approval?
Replies
1
Boosts
0
Views
174
Activity
4w
Enrollment confirmation?
Hi, my individual Apple Developer Program enrollment is pending since April 10, 2026. Payment of $99 was charged and confirmed on my credit card. Account still shows 'Pending' with 'complete your purchase now' message. I have submitted support request with no response. Order number: W1322582048. Please advise; many thanks.
Replies
1
Boosts
0
Views
57
Activity
3w
App Store description for iCloud
Hi, A few of my apps will be able to sync with iCloud. So I do realize that we're not allowed to mention any Apple-related names in our app descriptions. Looking for ideas on how to state that the app works with iCloud without saying "iCloud." Thanks, Dan Uff
Replies
3
Boosts
0
Views
67
Activity
4w
Xcode to play a Sound when a fault is logged
Hi I have an Xcode project in which I am logging (os log) some faults when an error occurs. While developing I would like to notice it when the fault occurs. Questions Are there are better approaches to be alerted (sound or other means) when a fault occurs? My attempts so far: Add fault log and filter for faults Add breakpoint and play sound when breakpoint encountered Disadvantages with fault filtering: Though I can filter for faults sometimes I often need to look at debug messages. Having a lot of debug messages I am lost, yes I can filter but might forget to do it during every build Disadvantages with breakpoints: Sometimes I tend to delete breakpoints and might accidentally delete this breakpoint to play a sound
Replies
0
Boosts
0
Views
66
Activity
3w
SwiftData property marked ephemeral getting persisted in CloudKit
Am I misunderstanding the expected behavior here, or is there a bug in the behavior of @Attribute(.ephemeral) tagged SwiftData model properties? The documentation for .ephemeral says "Track changes to this property but do not persist". I started using .ephemeral because @Transient was inhibiting SwiftUI from reacting to changes to the property through @Observable. I am updating the value of my @Attribute(.ephemeral) property about once a second and I am seeing corresponding console log output showing the property as part of the generated CKRecord object. I then confirmed in the CloudKit dev portal that the .ephemeral property was added to the Record schema and contains real values. The behavior seems as though the .ephemeral property is being completely ignored. This is observed in a new Xcode project using SwiftData with CloudKit, Xcode 16.2, macOS 15.3.1 and during Build & Run testing on physical devices.
Replies
3
Boosts
1
Views
987
Activity
4w
How to use the SpeechDetector Module
I am trying to use SpeechDetector Module in Speech framework along with SpeechTranscriber. and it is giving me an error Cannot convert value of type 'SpeechDetector' to expected element type 'Array.ArrayLiteralElement' (aka 'any SpeechModule') Below is how I am using it let speechDetector = Speech.SpeechDetector() let transcriber = SpeechTranscriber(locale: Locale.current, transcriptionOptions: [], reportingOptions: [.volatileResults], attributeOptions: [.audioTimeRange]) speechAnalyzer = try SpeechAnalyzer(modules: [transcriber,speechDetector])
Replies
5
Boosts
2
Views
631
Activity
3w
CarPlay CPListImageRowItem causes Inverted Scrolling and Side Button malfunction
In my CarPlaySceneDelegate.swift, I have two tabs: The first tab uses a CPListImageRowItem with a CPListImageRowItemRowElement. The scroll direction is inverted, and the side button does not function correctly. The second tab uses multiple CPListItem objects. There are no issues: scrolling works in the correct direction, and the side button behaves as expected. Steps To Reproduce Launch the app. Connect to CarPlay. In the first tab, scroll up and down, then use the side button to navigate. In the second tab, scroll up and down, then use the side button to navigate. As observed, the scrolling behavior is different between the two tabs. Code Example: import CarPlay import UIKit class CarPlaySceneDelegate: UIResponder, CPTemplateApplicationSceneDelegate { var interfaceController: CPInterfaceController? func templateApplicationScene( _ templateApplicationScene: CPTemplateApplicationScene, didConnect interfaceController: CPInterfaceController ) { self.interfaceController = interfaceController downloadImageAndSetupTemplates() } func templateApplicationScene( _ templateApplicationScene: CPTemplateApplicationScene, didDisconnectInterfaceController interfaceController: CPInterfaceController ) { self.interfaceController = nil } private func downloadImageAndSetupTemplates() { let urlString = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRcYUjd1FYkF04-8Vb7PKI1mGoF2quLPHKjvnR7V4ReZR8UjW-0NJ_kC7q13eISZGoTCLHaDPVbOthhH9QNq-YA0uuSUjfAoB3PPs1aXQ&s=10" guard let url = URL(string: urlString) else { setupTemplates(with: UIImage(systemName: "photo")!) return } URLSession.shared.dataTask(with: url) { [weak self] data, _, _ in let image: UIImage if let data = data, let downloaded = UIImage(data: data) { image = downloaded } else { image = UIImage(systemName: "photo")! } DispatchQueue.main.async { self?.setupTemplates(with: image) } }.resume() } private func setupTemplates(with image: UIImage) { // Tab 1 : un seul CPListImageRowItem avec 12 CPListImageRowItemRowElement let elements: [CPListImageRowItemRowElement] = (1...12).map { index in CPListImageRowItemRowElement(image: image, title: "test \(index)", subtitle: nil) } let rowItem = CPListImageRowItem(text: "Images", elements: elements, allowsMultipleLines: true) rowItem.listImageRowHandler = { item, elementIndex, completion in print("tapped element \(elementIndex)") completion() } let tab1Section = CPListSection(items: [rowItem]) let tab1Template = CPListTemplate(title: "CPListImageRowItemRowElement", sections: [tab1Section]) // Tab 2 : 12 CPListItem simples let tab2Items: [CPListItem] = (1...12).map { index in let item = CPListItem(text: "Item \(index)", detailText: "Detail \(index)") item.handler = { _, completion in print("handler Tab 2") completion() } return item } let tab2Section = CPListSection(items: tab2Items) let tab2Template = CPListTemplate(title: "CPListItem", sections: [tab2Section]) // CPTabBarTemplate avec les deux tabs let tabBar = CPTabBarTemplate(templates: [tab1Template, tab2Template]) interfaceController?.setRootTemplate(tabBar, animated: true) } } Here is a quick video:
Replies
7
Boosts
0
Views
589
Activity
4w
Distribution Methods - Ad-Hoc vs Debugging Validity
We’re planning to distribute our app outside of TestFlight because our testing period is expected to exceed the 90-day limit. Since we have an Apple Developer account, we’re considering using either Ad Hoc distribution or direct installation (debug/development builds) for longer-term testing. I have a few questions regarding this approach: Ad Hoc Distribution Validity What is the effective validity period of an Ad Hoc build? We’re aiming for long-term testing (4-5 months) and would like to avoid unexpected expiration—are there any constraints we should be aware of? Development/Debug Build Expiry & Limitations If we distribute the app using a development (debug) build via provisioning profiles, what is the expiration timeline? Are there practical limitations (e.g., device limits, performance differences, or provisioning renewal requirements) that could impact extended testing? Potential Complications & Best Practices Are there any issues we should anticipate when using these distribution methods for long-term testing? For example: Provisioning profile or certificate expiration Device registration limits Any policy or compliance considerations with Apple We’d appreciate any guidance or best practices for managing long-term testing outside of TestFlight while staying within Apple’s guidelines.
Replies
1
Boosts
0
Views
162
Activity
3w