Hi, I submitted the FairPlay Streaming Credentials Approval request, but it's been 15 days and I haven't received a response yet. Do you happen to know how long they usually take to reply to these requests?
Overview
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
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
Topic:
Media Technologies
SubTopic:
Streaming
Tags:
FairPlay Streaming
Apple TV
tvOS
HTTP Live Streaming
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.
I have a .saver file. I want to sell it.
Apparently, Guideline 2.4.5(ii) states that apps “cannot install code or resources in shared locations”.
Can I sell a disk image that has the .saver file and instructions to the user to double-click it?
Are there any other ways of doing this?
Thank you,
—bc
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!
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?
My App is not compatible with iPhone 15 but can run on iPhone 14 perfectly fine, what could be the problem?
I am new to App development.
My app worked correctly using iOS 18. I tried to down grade back to iOS 18, but there are no signed ipsw file available.
How can I down grade my iphone back to iOS 18?
Topic:
Developer Tools & Services
SubTopic:
Apple Developer Program
Tags:
iOS
iPadOS
iPad and iOS apps on visionOS
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!
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.
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!
Topic:
App & System Services
SubTopic:
Networking
Hello,
Our app (App ID: 6740894324), submitted on October 14, 2025 11:38pm,is still waiting for review with no status change in App Store Connect.a
Could someone from the App Review team please check if this app might be stuck in the review queue or let us know if any action is required from our side?
Thank you for your time and assistance.
Topic:
App Store Distribution & Marketing
SubTopic:
App Review
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?
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?
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
Topic:
Developer Tools & Services
SubTopic:
Xcode
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?
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.
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.
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect
I have several combine pipelines in my watch and iPhone app. While background tasks on the iPhone work correctly (the combine pipelines all activate), on the watch the pipelines do not get activated. I have an internal log reporting that data is being fed to the sources but is not propagating to the sinks.
Thoughts?
Topic:
App & System Services
SubTopic:
Processes & Concurrency
Tags:
watchOS
Combine
Background Tasks
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!