Overview

Post

Replies

Boosts

Views

Activity

AVPlayer HLS High Bitrate Problem on Apple TV HD (A1625) tvOS 26
Hello, We have Video Stream app. It has HLS VOD Content. We supply 1080p, 4K Contents to users. Users were watching 1080p content before tvOS 26. Users can not watch 1080p content anymore when they update to tvOS 26. We have not changed anything at HLS playlist side and application version. This problem only occurs on Apple TV 4th Gen (A1625) tvOS 26 version. There is no problem with newer Apple TV devices. Would you help to resolve problem? Thanks in advance
1
0
91
9m
The App Store Connect team refused to communicate and Termination my account.
I submitted a puzzle app called “Anime Jigsaw” to App Store Connect. The App Store Connect team initially rejected the app due to minor errors. I then fixed the errors and resubmitted it, but this time they said it violated “Guideline 4.1 - Design - Copycats” and that I didn't write the code. I responded that I wrote the code and could prove it. They rejected it again, citing "Guideline 4.1 - Design - Copycats,“ and I explained that my app was different from other puzzle apps because you solve puzzles while listening to Lo-Fi music. But this time, they issued a ”Pending Termination Notice“ and started saying ”Evidence of Dishonest or Fraudulent Activity." I am definitely not a scammer. I am trying to communicate with the App Store Connect team, but they are trying to close my account and label it as “Fraudulent Activity.” Why are you doing this? How can I resolve this? My account will be closed in 30 days, and I can't communicate with anyone. Team ID: 93LGGK4LG4 Apple ID: 6751961511 Please Apple Team Help Me.
5
0
131
9m
NSStagedMigrationManager shortcomings
It seems to me that NSStagedMigrationManager has algorithmic issues. It doesn't perform staged migration, if all its stages are NSLightweightMigrationStage. You can try it yourself. There is a test project with three model versions V1, V2, V3, V4. Migrating V1->V2 is compatible with lightweight migration, V2->V3, V3->V4 is also compatible, but V1->V3 is not. I have following output: Migrating V1->V2, error: nil Migrating V2->V3, error: nil Migrating V3->V4, error: nil Migrating V1->V3, no manager, error: Optional("Persistent store migration failed, missing mapping model.") Migrating V1->V3, lightweight[1, 2, 3], error: Optional("Persistent store migration failed, missing mapping model.") Migrating V1->V3, lightweight[1]->lightweight[2]->lightweight[3], error: Optional("Persistent store migration failed, missing mapping model.") Migrating V1->V3, custom[1->2]->lightweight[3], error: nil Migrating V1->V3, lightweight[1]->custom[2->3], error: nil Migrating V1->V3, custom[1->2]->custom[2->3], error: nil Migrating V1->V4, error: Optional("Persistent store migration failed, missing mapping model.") Migrating V2->V4, error: nil Migrating V1->V4, custom[1->2]->lightweight[3, 4], error: nil Migrating V1->V4, lightweight[3, 4]->custom[1->2], error: Optional("A store file cannot be migrated backwards with staged migration.") Migrating V1->V4, lightweight[1, 2]->lightweight[3, 4], error: Optional("Persistent store migration failed, missing mapping model.") Migrating V1->V4, lightweight[1]->custom[2->3]->lightweight[4], error: nil Migrating V1->V4, lightweight[1,4]->custom[2->3], error: nil Migrating V1->V4, custom[2->3]->lightweight[1,4], error: Optional("Persistent store migration failed, missing mapping model.") I think that staged migration should satisfy the following rules for two consecutive stages: Any version of lightweight stage to any version of lightweight stage; Any version of lightweight stage to current version of custom stage; Next version of custom stage to any version of lightweight stage; Next version of custom stage to current version of custom stage. However, rule 1 doesn't work, because migration manager skips intermediate versions if they are inside lightweight stages, even different ones. Note that lightweight[3, 4]->custom[1->2] doesn't work, lightweight[1,4]->custom[2->3] works, but custom[2->3]->lightweight[1,4] doesn't work again. Would like to hear your opinion on that, especially, from Core Data team, if possible. Thanks!
3
0
113
58m
ScrollView + LazyVStack + dynamic height views cause scroll glitches on iOS 26
I’m seeing unexpected scroll behavior when embedding a LazyVStack with dynamically sized views inside a ScrollView. Everything works fine when the item height is fixed (e.g. colored squares), but when I switch to text views with variable height, the scroll position jumps and glitches—especially when the keyboard appears or disappears. This only happens on iOS 26, it works fine on iOS 18. Working version struct Model: Identifiable { let id = UUID() } struct ModernScrollView: View { @State private var models: [Model] = [] @State private var scrollPositionID: String? @State private var text: String = "" @FocusState private var isFocused // MARK: - View var body: some View { scrollView .safeAreaInset(edge: .bottom) { controls } .task { reset() } } // MARK: - Subviews private var scrollView: some View { ScrollView { LazyVStack { ForEach(models) { model in SquareView(color: Color(from: model.id)) .id(model.id.uuidString) } } .scrollTargetLayout() } .scrollPosition(id: $scrollPositionID) .scrollDismissesKeyboard(.interactively) .defaultScrollAnchor(.bottom) .onTapGesture { isFocused = false } } private var controls: some View { VStack { HStack { Button("Add to top") { models.insert(contentsOf: makeModels(3), at: 0) } Button("Add to bottom") { models.append(contentsOf: makeModels(3)) } Button("Reset") { reset() } } HStack { Button { scrollPositionID = models.first?.id.uuidString } label: { Image(systemName: "arrow.up") } Button { scrollPositionID = models.last?.id.uuidString } label: { Image(systemName: "arrow.down") } } TextField("Input", text: $text) .padding() .background(.ultraThinMaterial, in: .capsule) .focused($isFocused) .padding(.horizontal) } .padding(.vertical) .buttonStyle(.bordered) .background(.regularMaterial) } // MARK: - Private private func makeModels(_ count: Int) -> [Model] { (0..<count).map { _ in Model() } } private func reset() { models = makeModels(3) } } // MARK: - Color+UUID private extension Color { init(from uuid: UUID) { let hash = uuid.uuidString.hashValue let r = Double((hash & 0xFF0000) >> 16) / 255.0 let g = Double((hash & 0x00FF00) >> 8) / 255.0 let b = Double(hash & 0x0000FF) / 255.0 self.init(red: abs(r), green: abs(g), blue: abs(b)) } } Not working version When I replace the square view with a text view that generates random multiline text: struct Model: Identifiable { let id = UUID() let text = generateRandomText(range: 1...5) // MARK: - Utils private static func generateRandomText(range: ClosedRange<Int>) -> String { var result = "" for _ in 0..<Int.random(in: range) { if let sentence = sentences.randomElement() { result += sentence } } return result.trimmingCharacters(in: .whitespaces) } private static let sentences = [ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.", "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." ] } and use it like this: ForEach(models) { model in Text(model.text) .padding() .multilineTextAlignment(.leading) .background(Color(from: model.id)) .id(model.id.uuidString) } Then on iOS 26, opening the keyboard makes the scroll position jump unpredictably. It is more visible if you play with the app, but I could not upload a video here. Environment Xcode 26.0.1 - Simulators and devices on iOS 26.0 - 18.0 Questions Is there any known change in ScrollView / scrollPosition(id:) behavior on iOS 26 related to dynamic height content? Am I missing something in the layout setup that makes this layout unstable with variable-height cells? Is there a workaround or recommended approach for keeping scroll position stable when keyboard appears?
1
0
57
1h
Issues Handling Multiple Incoming Calls in CallKit
Certainly! Here's a concise version of your forum post: Title: Issues Handling Multiple Incoming Calls in CallKit Body: Hello, I'm using CallKit and I am encountering challenges with handling multiple incoming calls. Current Configuration: configuration.maximumCallsPerCallGroup = 5 configuration.maximumCallGroups = 3 This setup aims to allow up to 5 calls per group. Observed Behavior: Despite the configuration, the system UI seems to limit the number of calls per group, often defaulting to "End & Accept" instead of "Hold & Accept" when a third call comes in. Questions: Is there a documented system-imposed limit on the number of calls per group or total calls, even if maximumCallGroups and maximumCallsPerCallGroup are set higher? How does the system UI behave when these limits are exceeded? Are there known UI constraints or fallback behaviors? Are there best practices for handling scenarios where the system UI cannot display all calls, such as gracefully managing incoming calls or providing alternative UI solutions? Any insights or experiences with similar configurations would be greatly appreciated. Thank you. Feel free to copy and paste this directly into the Apple Developer Forums. If you need further assistance or adjustments, let me know!
1
0
15
1h
Why are system reserved files consuming half of my storage?
I am constantly running out of storage on my iPhone 16 Pro. I keep having to move my photos and videos to my laptop and delete them from my phone, and I’m constantly needing to offload apps and manually clear caches in some apps to free up storage. I finally got sick of having this cycle every two weeks so looked into it more closely. I’m finding that iOS consumes 32 GB, and then another system reserve category is consuming an additional 23 GB. Meaning the system reserved files are consuming half of the storage on this phone and effectively making it a 64 GB model. I understand the system will need to consume some capacity for itself and that iOS is getting larger, but nearly 50% of the capacity of the phone is insane. Looking closer into the categories, I’m seeing that iOS has taken it upon itself to also permanently provision 10% of the storage capacity for reserve update space. Already another instance of “why am I having to lose so much of my functional capacity to an occasional process?” but I can understand the utility of this — if I didn’t still have to offload basically all my apps every single time I run a software update, because I’m still some not-insignificant amount short. I seem to recall it being between 6-20 GB across the different updates I’ve had to do since iOS 26 rolled around. I’d also like to be clear that preprovisioning the storage space for updates isn’t a bad idea, just give us an off switch if we’d rather be able to take a few hundred more photos, have another few apps, etc. than have the space sit mostly unused. The biggest culprit is this “system data” category which is somehow consuming as much space as the entire operating system and its extensions. There’s no clear way to request iOS to clear this down if some of it is temporary data, which we should have a button for even if Apple thinks it should “just work.” Windows usually trims down on its temp files, but on the occasion you go look and see 67 GB of temporary files, being able to manually run the disk cleanup tool is very helpful. I’m hesitant to try any third party app because I shouldn’t need to, and knowing Apple, it wouldn’t have access to anything it would actually have to touch anyway. Which is neither here nor there, but give us a button to clear cache or maybe run the cleanup when the phone reboots? I am running the developer beta right now so maybe that’s part of it. However I’m not sure… I had switched to mainline release for a while when it released, and it didn’t seem any different with storage consumption and battery drain. I jumped back to beta to see some of the new features and am waiting for another mainline release to switch back to as the recent betas have been much more unstable/buggy than the entire prerelease beta period. Just wondering if anyone has any kind of input on this storage issue in particular as it’s not really been talked about as much as the battery drain issue from what I can see.
5
0
87
1h
IOS app on MacOS 15 local network access
Our app is developed for iOS, but some users also run it on macOS (as an iOS app via Apple Silicon). The app requires local network permission, which works perfectly on iOS. Previously, the connection also worked fine on macOS, but since the recent macOS update, the app can no longer connect to our device. Additionally, our app on macOS doesn't prompt for local network permission at all, whereas it does on iOS. Is this a known issue with iOS apps running on macOS? Has anyone else experienced this problem, or is there a workaround? Any help would be appreciated!
8
0
820
1h
App stuck in 'Waiting for Review' for 2 weeks
I have two apps on my account. Both apps are older than 3-4 months, and I have published a few updates as well. However, since last week, I've tried to update both apps, and they've been showing "Waiting for Review." Since this was happening for both apps, I resubmitted them and requested an expedited review. Now only one has been accepted for expedited review and its status changed to "In Review," but it's still not ready for sale. I've been trying to update both of my apps for two weeks now, but there's been no progress from "Waiting for Review." Has anybody else faced this issue? Can anyone help?
2
1
308
1h
SwiftUI TextField selection - strange initial values with iOS
When using a TextField with axis to set to .vertical on iOS, it sets a bound selection parameter to an erroneous value. Whilst on MacOS it performs as expected. Take the following code: import SwiftUI @main struct SelectionTestApp: App { var body: some Scene { WindowGroup { ContentView() } } } struct ContentView: View { @FocusState private var isFocused: Bool @State private var text = "" @State private var textSelection: TextSelection? = nil var body: some View { TextField("Label", text: $text, selection: $textSelection, axis: .vertical) .onChange(of: textSelection, initial: true) { if let textSelection { print("textSelection = \(textSelection)") } else { print("textSelection = nil") } } .focused($isFocused) .task { isFocused = true } } } Running this on MacOS target gives the following on the console: textSelection = nil textSelection = TextSelection(indices: SwiftUI.TextSelection.Indices.selection(Range(0[any]..<0[any])), affinity: SwiftUI.TextSelectionAffinity.downstream) Running the code on iOS gives: textSelection = TextSelection(indices: SwiftUI.TextSelection.Indices.selection(Range(1[any]..<1[any])), affinity: SwiftUI.TextSelectionAffinity.upstream) textSelection = TextSelection(indices: SwiftUI.TextSelection.Indices.selection(Range(1[any]..<1[any])), affinity: SwiftUI.TextSelectionAffinity.upstream) Note here the range is 1..<1 - which is incorrect. Also of side interest this behaviour changes if you remove the axis parameter: textSelection = nil Am I missing something, or is this a bug?
1
0
30
2h
Swiftui Picker with optional value selected in picker
First the model: import SwiftData //Model one: type of contract, i.e. Firm Fixed Price, etc @Model final class TypeOfContract { var contracts: [Contract] @Attribute(.unique) var typeName: String @Attribute(.unique) var typeCode: String var typeDescription: String init(contracts: [Contract], typeName: String = "", typeCode: String = "", typeDescription: String = "") { self.contracts = contracts self.typeName = typeName self.typeCode = typeCode self.typeDescription = typeDescription } } //Model two: the Contract @Model final class Contract { var contractType: TypeOfContract? var costReports: [CostReport] @Attribute(.unique) var contractNumber: String @Attribute(.unique) var contractName: String var startDate: Date var endDate: Date var contractValue: Decimal var contractCompany: String var contractContact: String var contactEmail: String var contactPhone: String var contractNotes: String init(contractType: TypeOfContract?, costReports: [CostReport], contractNumber: String = "", contractName: String = "", startDate: Date = .now, endDate: Date = .now, contractValue: Decimal = 0.00, contractCompany: String = "", contractContact: String = "", contactEmail: String = "", contactPhone: String = "", contractNotes: String = "") { self.contractType = contractType self.costReports = costReports self.contractNumber = contractNumber self.contractName = contractName self.startDate = startDate self.endDate = endDate self.contractValue = contractValue self.contractCompany = contractCompany self.contractContact = contractContact self.contactEmail = contactEmail self.contactPhone = contactPhone self.contractNotes = contractNotes } } //Model Three: The Cost Reports @Model final class CostReport { var contract: Contract? var periodStartDate: Date var periodEndDate: Date var bCWP: Double //Budgeted Cost Work Performed var aCWP: Double //Actual Cost Work Performed var bCWS: Double //Budgeted Cost Work Scheduled //Calculated fields init(contract: Contract?, periodStartDate: Date = .now, periodEndDate: Date = .now, bCWP: Double = 0.0, aCWP: Double = 0.0, bCWS: Double = 0.0) { self.contract = contract self.periodStartDate = periodStartDate self.periodEndDate = periodEndDate self.bCWP = bCWP self.aCWP = aCWP self.bCWS = bCWS } } Now the code for the Picker ```import SwiftUI import SwiftData struct EnterNewContract: View { @Environment(\.modelContext) var modelContext @Query(sort: \TypeOfContract.typeName) private var typeOfContracts: [TypeOfContract] @Query private var contracts: [Contract] @State private var costReports: [CostReport] = [] @State private var contractType: [TypeOfContract]? @State private var contractNumber: String = "" @State private var contractName: String = "" @State private var startDate: Date = Date() @State private var endDate: Date = Date() @State private var contractValue: Decimal = 0 @State private var contractCompany: String = "" @State private var contractContact: String = "" @State private var contactEmail: String = "" @State private var contactPhone: String = "" @State private var contractNotes: String = "" var body: some View { Form { VStack { Section(header: Text("Enter New Contract") .foregroundStyle(.green) .font(.headline)){ Picker("Select a type of contract", selection: $contractType) {Text("Select type").tag(nil as TypeOfContract?) ForEach(typeOfContracts, id: \.self) { typeOfContracts in Text(typeOfContracts.typeName) .tag(typeOfContracts as TypeOfContract?) } } TextField("Contract Number", text: $contractNumber) .frame(width: 800, height: 40) TextField("Contract Name", text: $contractName) .frame(width: 800, height: 40) DatePicker("Contract Start Date", selection: $startDate, displayedComponents: [.date]) DatePicker("Contract End Date", selection: $endDate, displayedComponents: [.date]) } } } } } The code works, for the most part. The selection I make from the list does not appear. Instead there is just a shaded empty box . Also, I need to select my selection choice twice before the check mark to appear. To see the choices and my selection I must click on the empty shaded box. What did I do wrong
0
0
18
2h
For receiving audio in PushtoTalk, channelManager(_:didActivate:) not called when app receives first push after backgrounding
I'm implementing the PushToTalk framework and have encountered an issue where channelManager(_:didActivate:) is not called under specific circumstances. What works: App is in foreground, receives PTT push → didActivate is called ✅ App receives audio in foreground, then is backgrounded → subsequent pushes trigger didActivate ✅ What doesn't work: App is launched, user joins channel, then immediately backgrounds PTT push arrives while app is backgrounded incomingPushResult is called, I return .activeRemoteParticipant(participant) The system UI shows the speaker name correctly However, didActivate is never called Audio data arrives via WebSocket but cannot be played (no audio session) Setup: Channel joined successfully before backgrounding UIBackgroundModes includes push-to-talk No manual audio session activation (setActive) anywhere in my code AVAudioEngine setup only happens inside didActivate delegate method Issue persists even after channel restoration via channelDescriptor(restoredChannelUUID:) Question: Is this expected behavior or a bug? If expected, what's the correct approach to handle incoming PTT audio when the app is backgrounded and hasn't received audio while in the foreground yet?
1
0
34
2h
Mac Catalyst: IOHID InputReportCallback not firing, USBInterfaceOpen returns kIOReturnNotPermitted (0xe00002e2) for custom HID device
Hi everyone, I am developing a .NET MAUI Mac Catalyst app (sandboxed) that communicates with a custom vendor-specific HID USB device. Within the Catalyst app, I am using a native iOS library (built with Objective-C and IOKit) and calling into it via P/Invoke from C#. The HID communication layer relies on IOHIDManager and IOUSBInterface APIs. The device is correctly detected and opened using IOHIDManager APIs. However, IOHIDDeviceRegisterInputReportCallback never triggers — I don’t receive any input reports. To investigate, I also tried using low-level IOKit USB APIs via P/Invoke from my Catalyst app, calling into a native iOS library. When attempting to open the USB interface using IOUSBInterfaceOpen() or IOUSBInterfaceOpenSeize(), both calls fail with: kIOReturnNotPermitted (0xe00002e2). — indicating an access denied error, even though the device enumerates and opens successfully. Interestingly, when I call IOHIDDeviceSetReport(), it returns status = 0, meaning I can successfully send feature reports to the device. Only input reports (via the InputReportCallback) fail to arrive. I’ve confirmed this is not a device issue — the same hardware and protocol work perfectly under Windows using the HIDSharp library, where both input and output reports function correctly. What I’ve verified •Disabling sandboxing doesn’t change the behavior. •The device uses a vendor-specific usage page (not a standard HID like keyboard/mouse). •Enumeration, open, and SetReport all succeed — only reading input reports fails. •Tried polling queues, in queues Input_Misc element failed to add to the queues. •Tried getting report in a loop but no use.
2
0
34
2h
Apps won't upload after XCode update.
Hello. I work on Windows with Visual Studio 2026 Insider , .Net 10 rc1, MAUI , wifi connected to Mac Mini , XCode 16 and upload to App Store to the public. This was all working fine. Yesterday Apple forced me to update XCode to 26.0.1. Now I cannot publish to the Store like I used to. I do not get any errors , instead I get "Publishing project 'Referee' completed." , but the app never shows up in App Store Connect like it usually does. I tried this many times with two different apps that were fine last week. After the XCode update, do I need to reconnect something to somewhere? . . (I shortened paths here for character limit) Validating Mac operating system version compatibility... Checking Xcode version compatibility... Validating Xcode license state... Verifying installed Xcode tools... Initializing Build agent... Checking Build 26.0.10970-net10-rc.2 installation... Starting Build 26.0.10970-net10-rc.2 in port 59237... Agent Build 26.0.10970-net10-rc.2 is running Build 26.0.10970-net10-rc.2 started successfully Checking installed iOS runtimes... Checking for compatible simulators... Performing server validations against 'Ray’s Mac mini'... Connection to 'Ray’s Mac mini' completed successfully Build properties for C:\TCR\TCR Referee\Referee.csproj: VisualStudioProcessId: 17564, SolutionPath: C:\TCR\TCR MAUI Mar 24.sln, SolutionName: TCR MAUI Mar 24, RunConfiguration: Default, ArchiveOnBuild: False, ArchivePath: , IsAppDistribution: False, DeviceSpecificBuild: false, TargetiOSDevice: , _iOSRuntimeIdentifier: ios-arm64, KeepLocalOutputUpToDate: False, MessagingVersion: 26.0.10970-net10-rc.2, _DotNetRootRemoteDirectory: /Users/Library/Caches/maui/PairToMac/SDKs/dotnet/, LocalBasePath: C:\Users\maui\iOS\PairToMac, BasePath: /Users/raybrennan/Library/Caches/maui/PairToMac, LogsPath: /Users/Library/Logs, DotNetRuntimePath: /Users/maui/PairToMac/Runtimes/dotnet/dotnet, ServerSshPort: 22, ServerTcpPort: 59237, ServerUser: RB, ContinueOnDisconnected: False, ServerAddress: 10.101.101.101 Archiving App Bundle 'Referee'... Build properties for C:\TCR\TCR Referee\Referee.csproj: VisualStudioProcessId: 17564, SolutionPath: C:\TCR\TCR MAUI Mar 24.sln, SolutionName: TCR MAUI Mar 24, RunConfiguration: Default, ArchiveOnBuild: False, ArchivePath: , IsAppDistribution: False, DeviceSpecificBuild: false, TargetiOSDevice: , _iOSRuntimeIdentifier: ios-arm64, KeepLocalOutputUpToDate: False, MessagingVersion: 26.0.10970-net10-rc.2, _DotNetRootRemoteDirectory: /Users/raybrennan/Library/Caches/maui/PairToMac/SDKs/dotnet/, LocalBasePath: C:\Users\mrray\AppData\Local\maui\iOS\PairToMac, BasePath: /Users/raybrennan/Library/Caches/maui/PairToMac, LogsPath: /Users/raybrennan/Library/Logs, DotNetRuntimePath: /Users/raybrennan/Library/Caches/maui/PairToMac/Runtimes/dotnet/dotnet, ServerSshPort: 22, ServerTcpPort: 59237, ServerUser: Ray Brennan, ContinueOnDisconnected: False, ServerAddress: 10.101.101.101 App archive 'Referee' completed successfully. Begining distribution, 23/10/2025 15:36:09 Channel: App Store App Bundle Id: com.theclubreferee.referee, Version: 0.3 Publishing to 'C:\Users\mrray\AppData\Local\maui\iOS\Archives\2025-10-23\Referee 10-23-25 3.33 PM.xcarchive\Published\Referee0.3.ipa' Build properties for C:\TCR\TCR Referee\Referee.csproj: VisualStudioProcessId: 17564, SolutionPath: C:\TCR\TCR MAUI Mar 24.sln, SolutionName: TCR MAUI Mar 24, RunConfiguration: Default, ArchiveOnBuild: False, ArchivePath: , IsAppDistribution: False, DeviceSpecificBuild: false, TargetiOSDevice: , _iOSRuntimeIdentifier: ios-arm64, KeepLocalOutputUpToDate: False, MessagingVersion: 26.0.10970-net10-rc.2, _DotNetRootRemoteDirectory: /Users/raybrennan/Library/Caches/maui/PairToMac/SDKs/dotnet/, LocalBasePath: C:\Users\mrray\AppData\Local\maui\iOS\PairToMac, BasePath: /Users/raybrennan/Library/Caches/maui/PairToMac, LogsPath: /Users/raybrennan/Library/Logs, DotNetRuntimePath: /Users/raybrennan/Library/Caches/maui/PairToMac/Runtimes/dotnet/dotnet, ServerSshPort: 22, ServerTcpPort: 59237, ServerUser: Ray Brennan, ContinueOnDisconnected: False, ServerAddress: 10.101.101.101 Build properties for C:\TCR\TCR Referee\Referee.csproj: VisualStudioProcessId: 17564, SolutionPath: C:\TCR\TCR MAUI Mar 24.sln, SolutionName: TCR MAUI Mar 24, RunConfiguration: Default, ArchiveOnBuild: False, ArchivePath: , IsAppDistribution: False, DeviceSpecificBuild: false, TargetiOSDevice: , _iOSRuntimeIdentifier: ios-arm64, KeepLocalOutputUpToDate: False, MessagingVersion: 26.0.10970-net10-rc.2, _DotNetRootRemoteDirectory: /Users/raybrennan/Library/Caches/maui/PairToMac/SDKs/dotnet/, LocalBasePath: C:\Users\mrray\AppData\Local\maui\iOS\PairToMac, BasePath: /Users/raybrennan/Library/Caches/maui/PairToMac, LogsPath: /Users/raybrennan/Library/Logs, DotNetRuntimePath: /Users/raybrennan/Library/Caches/maui/PairToMac/Runtimes/dotnet/dotnet, ServerSshPort: 22, ServerTcpPort: 59237, ServerUser: Ray Brennan, ContinueOnDisconnected: False, ServerAddress: 10.101.101.101 Validating bundle... Build properties for C:\TCR.csproj: VisualStudioProcessId: 17564, SolutionPath: C:\TCR.sln, SolutionName: TCR , RunConfiguration: Default, ArchiveOnBuild: False, ArchivePath: , IsAppDistribution: False, DeviceSpecificBuild: false, TargetiOSDevice: , _iOSRuntimeIdentifier: ios-arm64, KeepLocalOutputUpToDate: False, MessagingVersion: 26.0.10970-net10-rc.2, _DotNetRootRemoteDirectory: /Users/raybrennan/Library/Caches/maui/PairToMac/SDKs/dotnet/, LocalBasePath: C:\Users\maui\iOS\PairToMac, BasePath: /Users//maui/PairToMac, LogsPath: /Users/Logs, DotNetRuntimePath: /Users/maui/PairToMac/Runtimes/dotnet/dotnet, ServerSshPort: 22, ServerTcpPort: 59237, ServerUser: Ray Brennan, ContinueOnDisconnected: False, ServerAddress: 10.101.101.101 Uploading 'C:\Users\maui\iOS\Archives\2025-10-23\Referee 10-23-25 3.33 PM.xcarchive\Published\Referee0.3.ipa' Build properties for C:\TCR.csproj: VisualStudioProcessId: 17564, SolutionPath: C:\TCR.sln, SolutionName: TCR, RunConfiguration: Default, ArchiveOnBuild: False, ArchivePath: , IsAppDistribution: False, DeviceSpecificBuild: false, TargetiOSDevice: , _iOSRuntimeIdentifier: ios-arm64, KeepLocalOutputUpToDate: False, MessagingVersion: 26.0.10970-net10-rc.2, _DotNetRootRemoteDirectory: /Users/maui/PairToMac/SDKs/dotnet/, LocalBasePath: C:\Users\iOS\PairToMac, BasePath: /Users/raybrennan/Library/Caches/maui/PairToMac, LogsPath: /Users/raybrennan/Library/Logs, DotNetRuntimePath: /Users/maui/PairToMac/Runtimes/dotnet/dotnet, ServerSshPort: 22, ServerTcpPort: 59237, ServerUser: Ray Brennan, ContinueOnDisconnected: False, ServerAddress: 10.101.101.101 Publishing project 'Referee' completed.
2
0
56
2h
How to completely uninstall the old kext driver?
Hi, On macOS 11 and earlier versions, we provided users with the following script to uninstall our kext driver: sudo pkgutil --only-files --files com.magewell.ProCapture | tr '\n' '\0' | xargs -n 1 -0 sudo rm -vf sudo pkgutil --only-dirs --files com.magewell.ProCapture | grep ProCapture[^/]*$ | tr '\n' '\0' | xargs -n 1 -0 sudo rm -rvf sudo pkgutil --forget com.magewell.ProCapture sudo kextcache -system-caches However, this script no longer works on macOS 13 and returns the following error: It looks like you're trying to update the system caches. As of macOS 11, the personality cache is no longer in use for keeping kext matching information up-to-date. For more information, see `man kmutil`. This indicates we can no longer use kextcache -system-caches to clear our driver cache. This creates an issue where even after installing the new dext driver, the dext driver cannot run due to the presence of the old kext driver. We've tried various methods but haven't been able to completely uninstall the old kext driver - after every new system update, the old kext reappears. The specific process is as follows: This is the sequence I followed in my latest test - Device is running macOS 13 Ventura w/ 4247 Pro Capture kext driver installed kmutil inspect | grep -i magewell - this returns references to the kext files in /Library/Extensions, which is expected because I have not yet removed the 4247 kext driver - then I ran the following combination of your removal script and my removal steps: cd / sudo rm -r /Library/Extensions/ProCaptureDriver.kext sudo rm -r /Library/Extensions/ProCaptureEvent.kext sudo rm /System/Volumes/Preboot/*/boot/*/System/Library/Caches/com.apple.kernelcaches/kernelcache.auxkc* sudo pkgutil --only-files --files com.magewell.ProCapture | tr '\n' '\0' | xargs -n 1 -0 sudo rm -vf sudo pkgutil --only-dirs --files com.magewell.ProCapture | grep ProCapture[^/]*$ | tr '\n' '\0' | xargs -n 1 -0 sudo rm -rvf sudo pkgutil --forget com.magewell.ProCapture sudo kextcache --clear-staging sudo kcditto sudo kmutil install --update-preboot sudo shutdown -r now - After this I ran 'kmutil inspect | grep -i magewell' and got no results, which seems good but... - then I ran the upgrade to macOS 15.7 Sequoia - Afterwards I ran 'kmutil inspect | grep -i magewell' and it returned references to the old /Library/Extensions kexts again, although the files no longer exist in /Library/Extensions - I then ran my cleanup process again (slightly different for Sequoia-available commands): sudo rm /System/Volumes/Preboot/*/boot/*/System/Library/Caches/com.apple.kernelcaches/kernelcache.auxkc* sudo kextcache --clear-staging sudo kmutil rebuild sudo kcditto sudo kmutil install --update-preboot sudo shutdown -r now - Then I ran 'kmutil inspect | grep -i magewell' and got no results again - As a next test I ran a minor update to macOS 15.7.1, then ran 'kmutil inspect | grep -i magewell' and the references to the old kexts came back again We have indeed identified a solution to address this issue: kmutil trigger-panic-medic --volume-root /Volumes/<YourVolumeName> However, this method requires booting into Recovery Mode, which is unacceptable for many of our customers. Especially for those who need bulk remote management, having personnel physically operate each machine one by one is simply not feasible. Therefore, is there a method to completely uninstall the kext driver while in normal mode? Thank you!
2
0
48
2h