My app inputs electrical waveforms from an IV485B39 2 channel USB device using an AVAudioSession. Before attempting to acquire data I make sure the input device is available as follows:
AVAudiosSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory :AVAudioSessionCategoryRecord error:&err];
NSArray *inputs = [audioSession availableInputs];
I have been using this code for about 10 years.
My app is scriptable so a user can acquire data from the IV485B29 multiple times with various parameter settings (sampling rates and sample duration). Recently the scripts have been failing to complete and what I have notice that when it fails the list of available inputs is missing the USBAudio input. While debugging I have noticed that when working properly the list of inputs includes both the internal microphone as well as the USBAudio device as shown below.
VIB_TimeSeriesViewController:***Available inputs = (
"<AVAudioSessionPortDescription: 0x11584c7d0, type = MicrophoneBuiltIn; name = iPad Microphone; UID = Built-In Microphone; selectedDataSource = Front>",
"<AVAudioSessionPortDescription: 0x11584cae0, type = USBAudio; name = 485B39 200095708064650803073200616; UID = AppleUSBAudioEngine:Digiducer.com :485B39 200095708064650803073200616:000957 200095708064650803073200616:1; selectedDataSource = (null)>"
)
But when it fails I only see the built in microphone.
VIB_TimeSeriesViewController:***Available inputs = (
"<AVAudioSessionPortDescription: 0x11584cef0, type = MicrophoneBuiltIn; name = iPad Microphone; UID = Built-In Microphone; selectedDataSource = Front>"
)
If I only see the built in microphone I immediately repeat the three lines of code and most of the "inputs" contains both the internal microphone and the USBAudioDevice
AVAudiosSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory :AVAudioSessionCategoryRecord error:&err];
NSArray *inputs = [audioSession availableInputs];
This fix always works on my M2 iPadPro and my iPhone 14 but some of my customers have older devices and even with 3 tries they still get faults about 1 in 10 tries.
I rolled back my code to a released version from about 12 months ago where I know we never had this problem and compiled it against the current libraries and the problem still exists. I assume this is a problem caused by a change in the AVAudioSession framework libraries. I need to find a way to work around the issue or get the library fixed.
General
RSS for tagExplore the various UI frameworks available for building app interfaces. Discuss the use cases for different frameworks, share best practices, and get help with specific framework-related questions.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
The URL directory obtained by UIDocumentPickerVieweController can be read and written in the directory after calling startAccessingDecurityScopeResource. However, after restarting the app, if the URL saved in the package is called startAccessingDecurityScopeResource again and returns NO, UIDocumentPickerVieweController must be called again to retrieve the URL, and then startAccessingDecurityScopeResource must be called again before continuing the operation. This is too troublesome. Is there a way to continue reading and writing operations in the URL directory after restarting the app?
Hi, after upgrading to iOS 18.5 our app crashes in CarPlay. Only when the app is running on our mobile the carplay app works fine.
If we run the same app in mobiles with iOS < 18.5 everything works.
What has changed in iOS 18.5?
Thanks
Our iOS app, when running as an iOS App on Mac, crashes consistently under the following scenario:
1. Launch the app on an external display.
2. Minimize the app window.
3. Disconnect the external display.
The app crashes every time under these conditions. The crash log shows the following call stack:
*** Assertion failure in -[UINSWorkspace _maximumContentSizeForWindowOnScreen:], UINSWorkspace.m:401
-[UINSWorkspace _maximumContentSizeForWindowOnScreen:]: screen parameter should not be nil
(
0 CoreFoundation 0x000000018e841df0 __exceptionPreprocess + 176
1 libobjc.A.dylib 0x000000018e306b60 objc_exception_throw + 88
2 Foundation 0x000000018fb6aa78 -[NSCalendarDate initWithCoder:] + 0
3 UIKitMacHelper 0x00000001a9a59110 -[UINSWorkspace _maximumContentSizeForWindowOnScreen:] + 184
4 UIKitMacHelper 0x00000001a9a3e748 -[UINSSceneViewController _usableScreenSizeWithSceneSize:shouldOverride:] + 412
5 UIKitMacHelper 0x00000001a9a3d55c -[UINSSceneViewController _effectiveScaleFactorForLayoutWithOverride:] + 88
6 UIKitMacHelper 0x00000001a9a3f3a8 -[UINSSceneViewController _updateZoomFactors] + 28
7 UIKitMacHelper 0x00000001a9a3f248 -[UINSSceneViewController _updateZoomFactorsAndDoLayout] + 24
8 UIKitMacHelper 0x00000001a9a3df80 -[UINSSceneViewController _doUpdates:] + 104
9 UIKitMacHelper 0x00000001a99ad460 -[UINSSceneViewController observeValueForKeyPath:ofObject:change:context:] + 176
10 Foundation 0x000000018facb0d8 -[NSKeyValueObservance observeValueForKeyPath:ofObject:change:context:] + 388
11 Foundation 0x000000018facb0d8 -[NSKeyValueObservance observeValueForKeyPath:ofObject:change:context:] + 388
12 Foundation 0x000000018fa8f7b4 NSKeyValueNotifyObserver + 252
13 Foundation 0x000000018fb3c560 NSKeyValueDidChange + 388
14 Foundation 0x00000001903149a0 NSKeyValueDidChangeWithPerThreadPendingNotifications + 160
15 AppKit 0x00000001924673d4 -[NSThemeFrame _didChangeContentLayoutRect] + 76
16 AppKit 0x000000019246521c -[NSWindow _oldPlaceWindow:fromServer:] + 744
)
It seems like the system attempts to access a screen object that is already nil after the external monitor is removed. This leads to an assertion failure in UINSWorkspace.
Is there any known workaround or update planned to address this issue?
Thank you.
I am currently developing an AR experience using ARKit with SceneKit and am looking to implement functionality that enables:
Zooming into the AR camera feed, ideally leveraging the ultra-wide or telephoto lenses available on supported devices.
Macro-style focus capabilities, allowing users to view and interact with virtual content closely aligned with small or nearby real-world objects (within a few centimeters).
My objective is to ensure that ARKit continues to render the scene accurately while enabling a zoomed-in view or macro-level focus for better detail visibility and alignment.
Could you please advise on:
Whether ARKit currently supports camera zoom or allows access to macro or ultra-wide cameras within an ARSession.
Limitations or considerations when using multi-camera setups in conjunction with ARKit.
Any guidance or references to documentation or sample code would be greatly appreciated.
I am currently developing an AR experience using ARKit with SceneKit and am looking to implement functionality that enables:
Zooming into the AR camera feed, ideally leveraging the ultra-wide or telephoto lenses available on supported devices.
Macro-style focus capabilities, allowing users to view and interact with virtual content closely aligned with small or nearby real-world objects (within a few centimeters).
My objective is to ensure that ARKit continues to render the scene accurately while enabling a zoomed-in view or macro-level focus for better detail visibility and alignment.
Could you please advise on:
Whether ARKit currently supports camera zoom or allows access to macro or ultra-wide cameras within an ARSession.
Limitations or considerations when using multi-camera setups in conjunction with ARKit.
Any guidance or references to documentation or sample code would be greatly appreciated.
Best regards,
Ayush
i am trying to get my app clip invocated through URL. i only have testflight app clip now and its not published to production. i added in test flight app clip url invocation
In one of my apps I use an app group to share data between the app and a command line tool. This works as expected. The app also contains a Dock Tile plugin and I wonder if there's a way to access the group container from this plugin? Thanks in advance for your help.
Best regards,
Marc
SwiftUI, using LPLinkView through UIViewRepresentable. Default behavior is a long press brings up a context menu and a popover to preview content. I want to replace that default long press behavior with my own custom screen. Adding a UILongPressGestureRecognizer didn't work.
Thanks!
We are experiencing an issue with session sharing on iOS and would appreciate your guidance.
We operate and control our own OpenID Connect (OIDC) server.
Our iOS application uses ASWebAuthenticationSession to authenticate users.
We're unable to get the authentication session to be shared between the Safari app and the app's ASWebAuthenticationSession. This results in users having to re-authenticate despite being logged in via Safari.
We've attempted various configurations related to cookie SameSite settings. These adjustments resolved the session sharing issue on Android using Chrome Custom Tabs.
However, no changes we've tried have enabled session sharing to work as expected on iOS.
According to documentation from Apple, Microsoft, Okta, and Auth0, session sharing between Safari and ASWebAuthenticationSession should work.
Question:
Are there any additional settings, configurations, or platform limitations we should be aware of that could impact session sharing on iOS? Where else can we look to resolve this issue?
Topic:
UI Frameworks
SubTopic:
General
Is is possible to use the camera in ASWebAuthenticationSession? We want to support signing in with a QR Code in our custom OAuth flow but the browser can't seem to access the camera.
Topic:
UI Frameworks
SubTopic:
General
Its document says openDocument can open a document at a specific URL. So I've saved a model as a JSON object with its URL and a bookmark as Data. With its security-scoped bookmark data resolved, I am able to open a document except that the app will crash right after opening a document. Console says
should only be called in the main thread
struct ContentView: View {
@EnvironmentObject var bookmarkViewModel: BookmarkViewModel
var body: some View {
VStack {
}
.onAppear {
loadBookmarks()
}
}
extension ContentView {
func loadBookmarks() {
print("1 \(Thread.current)") // NSMainThread
Task {
for bookmarkItem in bookmarkViewModel.bookmarkItems { // resolving a security-scoped bookmark
print("2 \(Thread.current)") // NSMainThread
if let _ = resolveBookmark(bookmarkData: bookmarkItem.bookmarkData) {
print("3 \(Thread.current)") // NSMainThread
do {
print("4 \(Thread.current)") // NSMainThread
try await openDocument(at: bookmarkItem.bookmarkURL)
print("5 \(Thread.current)") // NSMainThread
} catch {
print("\(error.localizedDescription)")
}
}
}
}
}
}
Well, the application is on the main thread. I've checked every line before and after opening a document with its URL. Call what on the main thread? This is confusing. Thanks.
class BookmarkViewModel: ObservableObject {
@Published var bookmarkItems: [BookmarkItem] = []
var defaultFileManager: FileManager {
return FileManager.default
}
var documentURL: URL? {
...
}
init() {
fetchBookmarkItems()
}
func fetchBookmarkItems() {
bookmarkItems.removeAll()
if let documentURL {
let bookmarkFolderURL = documentURL.appending(path: "MyApp").appending(path: "Bookmarks")
do {
let contents = try defaultFileManager.contentsOfDirectory(atPath: bookmarkFolderURL.path)
for content in contents {
...
let fileURL = bookmarkFolderURL.appending(path: content)
let data = try Data(contentsOf: fileURL)
let bookmarkItem = try JSONDecoder().decode(BookmarkItem.self, from: data)
bookmarkItems.append(bookmarkItem)
}
} catch {
print("Error fetching folder content: \(error.localizedDescription)")
}
}
}
}
struct BookmarkItem: Codable, Hashable {
let bookmarkURL: URL
let date: Date
let bookmarkData: Data
let open: Bool
}
May I ask what the official term is for the top indicator that appears during background recording? I haven't been able to find it in the official documentation.
Topic:
UI Frameworks
SubTopic:
General
Hi all,
We're working on an iOS application and would like to improve our ability to diagnose failures - especially in scenarios where the app crashes before it can present any UI to the user.
A few specific questions:
In case of an exception or crash, is there a way to log the issue so the user (or our support team) can understand the cause of the failure?
If the app crashes abruptly (e.g., due to a runtime exception or crash during launch), is there a recommended way to persist error information before the process terminates?
Are there Apple-supported mechanisms (like crash reporting tools or APIs) we can integrate that would help us capture such issues?
What’s the best practice for enabling support teams to assist users based on crash reports - especially for crashes that happen before any user interaction?
Our goal is to make sure users aren't left in the dark if the app fails to start, and to allow us to deliver timely updates or support based on the cause of the crash.
Thanks in advance for your guidance!
1.When I attempted to open the subsequent AppIntent within the perform method of the AppIntent instance, I always received the following error:
How to solve the problems of inconsistency of this type? I couldn't find any sample code.
2.When I used method 'Button(intent: OpenAppIntent())' to open my app through the dialog custom view of AppIntent, but I couldn't find a way to close this AppIntent dialog. How can i remove this dialog?
Topic:
UI Frameworks
SubTopic:
General
I am experiencing an issue while using CPGridTemplate within CPTabBarTemplate in my CarPlay app running in the simulator. On app launch, when I select the second item in the grid, it does not visually reflect as selected in the UI.
This behavior is unexpected, as the grid item selection should update accordingly. Has anyone encountered this issue or found a solution to ensure proper item selection?
I am facing an issue in my CarPlay app using CPTabBarTemplate. The app has two tabs, and on launch, the first tab is correctly selected. However, when I tap on the first tab again, instead of staying active, it becomes inactive.
This behavior is unexpected, as re-selecting the active tab should typically maintain its selected state. Has anyone else encountered this issue or found a workaround to prevent the tab from becoming inactive?
I'm trying to create a .pkg installer with productbuild/pkgbuild. But I'd also like to add my custom installer plugin to this. I'm using the following script. I'd like to add my bundle into this script. Since there are no official docs from apple how to do this nor there are a lot of updated resources, here are some things I have tried.
adding the following line to Distrubtion.xml
<bundle id="pluginid" path="path/to/myplugin.bundle"/>
adding component tag to pkgbuild also doesn't do anything
--component "path/to/myplugin.bundle"
The bundle itself is build with XCode - it is a simple UI for user to type some input in
Apple provides documentation for Distribution.xml file, which supports different UI elements but doesn't support text input - docs
I have been also looking at this tutorial , it is very outdated but i could still fit it to my needs except the part where the .bundle file needs to be inserted into .pkg.
Note - there is no option to view the contents of .pkg file build with pkbuild/productbuild
How can i do this process correctly? I would like to link my installer pane plugin to a generic .pkg(with licenses and so on). I'd appreciate any kind of help!
I am trying to add custom scheme (CFBundleURLSchemes) to my App Clip.
I launch the app clip via TestFlight to cache it to the device then i try to access the custom scheme URL to launch App Clip but nothing happened.
May I know if it is something I did wrongly or just App Clip does not support Custom Scheme?
For now, my app name length is more than 20 characters, so the iPhone app name displays without a space, and uses the range operator to ensure showing the rest in the next line.
Is it possible to show space and name with 2 lines?