Team-scoped keys introduce the ability to restrict your token authentication keys to either development or production environments. Topic-specific keys in addition to environment isolation allow you to associate each key with a specific Bundle ID streamlining key management.
For detailed instructions on accessing these features, read our updated documentation on establishing a token-based connection to APNs.
Delve into the world of built-in app and system services available to developers. Discuss leveraging these services to enhance your app's functionality and user experience.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Hello,
I need to develop a Network Extension (Transparent Proxy) that sends data to the host application for analysis.
Network Extension - XPC client
Host application - XPC service
I am trying to implement it with XPC. However, when attempting to connect, I see the following error in the system logs on client side.
[0x1015a2050] failed to do a bootstrap look-up: xpc_error=[3: No such process]
I assume the problem occurs because the Network Extension cannot find the registered XPC service. On the service side, I see the following message in the logs:
2026-02-24 13:15:36.419345+0300 localhost fgstnehost[58884]: (libxpc.dylib) [com.apple.xpc:connection] [0x100bdee70] activating connection: mach=true listener=true peer=false name=TEAM_ID.group.app_id.netfilter.xpc
Entitlements Network Extension:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.networking.networkextension</key>
<array>
<string>app-proxy-provider-systemextension</string>
</array>
<key>com.apple.security.application-groups</key>
<array>
<string>TEAM_ID.group.app_id.netfilter</string>
</array>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.xpc.mach-lookup.global-name</key>
<array>
<string>TEAM_ID.group.app_id.netfilter.xpc</string>
</array>
</dict>
</plist>
Entitlements host application:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.networking.networkextension</key>
<array>
<string>app-proxy-provider-systemextension</string>
</array>
<key>com.apple.developer.system-extension.install</key>
<true/>
<key>com.apple.security.application-groups</key>
<array>
<string>TEAM_ID.group.app_id.netfilter</string>
</array>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.xpc.mach-service.name</key>
<array>
<string>TEAM_ID.group.app_id.netfilter.xpc</string>
</array>
</dict>
</plist>
Server.m
@interface XPCServer ()
@property (nonatomic, strong) NSXPCListener *listener;
@end
@implementation XPCServer
- (instancetype) init
{
self = [super init];
if (self != nil)
{
_listener = [[NSXPCListener alloc] initWithMachServiceName: XPC_SERVICE_ID];
_listener.delegate = self;
}
return self;
}
- (void) start
{
[self.listener resume];
}
- (BOOL) listener:(NSXPCListener *) listener shouldAcceptNewConnection:(NSXPCConnection *) newConnection
{
return YES;
}
@end
Client.m
@interface XPCClient ()
@property (nonatomic, strong) NSXPCConnection *connection;
@end
@implementation XPCClient
- (void) connect
{
self.connection = [[NSXPCConnection alloc] initWithMachServiceName: XPC_SERVICE_ID options: NSXPCConnectionPrivileged];
self.connection.invalidationHandler =
^{
[[OSLogger sharedInstance] error: "XPCClient: connection can not be formed or the connection has terminated and may not be re-established"];
};
self.connection.interruptionHandler =
^{
[[OSLogger sharedInstance] error: "XPCClient: the remote process exits or crashes"];
};
[self.connection resume];
}
@end
What could be the root cause of this issue?
Are there any recommendations for implementing IPC between a Network Extension and aß Host Application?
Thank you in advance.
I have an app with fairly typical requirements - I need to insert some data (in my case from the network but could be anything) and I want to do it in the background to keep the UI responsive.
I'm using SwiftData.
I've created a ModelActor that does the importing and using the debugger I can confirm that the data is indeed being inserted.
On the UI side, I'm using @Query and a SwiftUI List to display the data but what I am seeing is that @Query is not updating as the data is being inserted. I have to quit and re-launch the app in order for the data to appear, almost like the context running the UI isn't communicating with the context in the ModelActor.
I've included a barebones sample project. To reproduce the issue, tap the 'Background Insert' button. You'll see logs that show items being inserted but the UI is not showing any data.
I've tested on the just released iOS 18b3 seed (22A5307f).
The sample project is here:
https://hanchor.s3.amazonaws.com/misc/SwiftDataBackgroundV2.zip
We use AppShortcutsProvider with a parameterized App Shortcut. One of the entities has a dynamic display title (e.g. "Everyone is searching: {keyword}") that comes from UserDefaults and is returned in EntityQuery.suggestedEntities() and entities(for:).
When we change the keyword and call updateAppShortcutParameters(), the Shortcuts app updates and shows the new title.
In Spotlight (Siri Suggestions), the displayed title stays on the old value (e.g. still shows "Everyone is searching: 456" after we switched to "123").
On tap, the shortcut runs with the new value (123), so the execution is correct; only the displayed title in Spotlight is stale.
Question: Is this expected? Is there any API or recommended approach to invalidate or refresh the Spotlight suggestion so the displayed title matches the current parameter, or should we avoid dynamic titles for the first suggestion for better UX?
I'm building a macOS network monitor using NEFilterDataProvider as a system extension, distributed with Developer ID signing. On macOS 26.3 (Tahoe), sysextd consistently rejects the activation request with "no policy, cannot allow apps outside /Applications" — despite the app being in /Applications and passing every verification check.
I'm aware of the known Xcode NE signing bug (r. 108838909) and have followed the manual signing process from Exporting a Developer ID Network Extension. I've also tried both xcodebuild build and xcodebuild archive workflows — identical failure.
Environment
macOS
26.3 (25D125), SIP enabled
Xcode
26.3 (17C529)
Hardware
Apple M2 Pro
Certificate
Developer ID Application (issued Jan 30, 2026 — 27 days old)
MDM/Profiles
None installed
Signing & Verification (all pass)
$ spctl -a -vv /Applications/Chakshu.app
/Applications/Chakshu.app: accepted
source=Notarized Developer ID
origin=Developer ID Application: ROBIN SHARMA (R65679C4F3)
$ codesign --verify --deep --strict -vv /Applications/Chakshu.app
/Applications/Chakshu.app: valid on disk
/Applications/Chakshu.app: satisfies its Designated Requirement
$ xcrun stapler validate /Applications/Chakshu.app
The validate action worked!
App signing:
Authority=Developer ID Application: ROBIN SHARMA (R65679C4F3)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
TeamIdentifier=R65679C4F3
Runtime Version=26.2.0
Notarization Ticket=stapled
App entitlements:
com.apple.application-identifier = R65679C4F3.dev.indrasvat.chakshu
com.apple.developer.team-identifier = R65679C4F3
com.apple.developer.system-extension.install = true
com.apple.developer.networking.networkextension = [content-filter-provider-systemextension]
keychain-access-groups = [R65679C4F3.*]
Extension signing: Same Developer ID authority, same team, same timestamp. Extension entitlements match (minus system-extension.install). Developer ID provisioning profiles are embedded in both app and extension.
What sysextd logs
Captured Feb 26, 2026 from log stream --predicate 'process == "sysextd"':
sysextd [com.apple.sx:XPC] client activation request for dev.indrasvat.chakshu.filter
sysextd attempting to realize extension with identifier dev.indrasvat.chakshu.filter
sysextd (Security) SecKeyVerifySignature ← pass (×2)
sysextd (Security) SecTrustEvaluateIfNecessary ← pass (×2)
sysextd [com.apple.xpc:connection] activating connection: name=com.apple.CodeSigningHelper
sysextd [com.apple.xpc:connection] invalidated after the last release
sysextd no policy, cannot allow apps outside /Applications
sysextd [com.apple.sx:XPC] client connection invalidated
Signature and trust evaluation pass. CodeSigningHelper completes. Then the policy check fails. The app receives OSSystemExtensionError code 4 (extensionNotFound).
What I've tried and ruled out
Build process:
Approach
Result
xcodebuild build -configuration Release + manual re-sign
Same failure
xcodebuild archive + export from archive + manual re-sign (per thread/737894)
Same failure
Minimal hand-crafted Xcode project (no xcodegen, trivial code)
Same failure
Both workflows follow Quinn's process exactly: build with Apple Development → copy app → embed Developer ID provisioning profiles → re-sign inside-out (extension first, then app) with -systemextension suffix entitlements → notarize → staple → install to /Applications.
System-level checks:
Rebooting — no change
Killing sysextd — no change
Removing com.apple.quarantine xattr — no change
chown root:wheel on app bundle — no change
lsregister -r (reset Launch Services) — no change
Waiting 27 days for certificate propagation — no change
Reinstalling via Finder drag-to-Applications — no change
No MDM or configuration profiles installed
/Library/SystemExtensions/db.plist shows extensionPolicies: [] (empty)
Key observation
Pre-existing network extensions activated before macOS 26 work fine on this machine. For example, Tailscale's NEPacketTunnelProvider shows state: activated_enabled in the system extensions database — it was activated on a prior macOS version and is still running. Only new system extension activations fail.
I've seen similar Tahoe-specific reports from LuLu (same NEFilterDataProvider type, Developer ID distribution):
LuLu #825
LuLu #831
Questions
Is this a known regression in macOS 26's sysextd policy evaluation for new Developer ID system extension activations?
sysextd's policy check fails after all signature and trust evaluation succeeds. Is there a separate trust/policy path that sysextd consults beyond what spctl, codesign, and CodeSigningHelper verify?
Is there anything else I should be checking?
I have a sysdiagnose captured immediately after the failure, a minimal reproducer project, and full raw sysextd logs available on request.
aka MKLocalSearch.Request in Swift.
Today my users reported that our address auto-complete functionality was returning strange results. We narrowed the issue down to pointOfInterestFilter being set. Sample code below:
MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];
request.region = self.region;
request.naturalLanguageQuery = addressString;
request.resultTypes = MKLocalSearchResultTypeAddress;
request.pointOfInterestFilter = [MKPointOfInterestFilter filterIncludingAllCategories];
That last line is the problem. When I stopped setting request.pointOfInterestFilter the MKLocalSearch started working as it always had.
To further hammer home the point, with request.pointOfInterestFilter unset I set resultTypes to MKLocalSearchCompleterResultTypePointOfInterest (aka .pointOfInterest) and the issue returned.
It seems Apple made a change on their backend recently such that pointOfInterestFilter now overrides resultTypes.
Hi, Submitted Family Controls entitlement request a month ago for my main focus app, got approved within a day. Submitted 3 more requests for my extensions, and it has been 16 days without any word.
Saw advice to file a code-level support with DTS in this similar forum:
https://developer.apple.com/forums/thread/812934
Is there anything else I can do before filing a code-level support? Any extra info to provide? If not, can a DTS engineer please refer me for the code-level support?
Thanks!
Topic:
App & System Services
SubTopic:
General
Tags:
Family Controls
Managed Settings
Screen Time
Entitlements
Hello,
Our team submitted a request for Family Controls entitlements for our main app and four related extensions. It has now been a little over two weeks since submission, and the request is still pending review.
We wanted to check if there are any recommended steps we can take on our end to help move the process forward.
Any guidance or tips from anyone who have recently gone through this process would be greatly appreciated. Thank you.
I am developing a macOS application that depends on noticing when the user's computer switches WiFi association, and the SSID determines specific actions. I am currently testing on Tahoe and found that using CoreWLAN can even get notifications and discover the actual SSID inside an app, as long as the app is signed with a real certificate and a corresponding profile is installed on my development machine. The app, however, installs and launches a launchctl agent, which will always be running and hence the component to discover changes and act upon them.
Although app and agent both have their own bundle identifier, both configured in the portal, the agent always received a redacted SSID (nil), while the app does not.
The only app entitlement currently is "com.apple.security.get-task-allow = true", which I don't think has anything to do with this. The agent has: com.apple.application-identifier
com.apple.developer.team-identifier
com.apple.security.get-task-allow
com.apple.security.personal-information.location
Both have asked for permission, and both have location services enabled in system settings. The agent runs as an LSUIElement=1, headless/background configuration.
So, am I missing something, a step, or is there a fundamental restriction on an agent that makes this an impossible task? (Right now, it runs a shortcut to discover the name, but requires the user to create it, and it has side effects I'd rather not see, like the flashing indicator in the menu bar)
iOS App terminated by Watchdog (Signal 9) in Background state despite reporting call
Description
I have successfully implemented VoIP pushes for the Killed state, where CallKit triggers correctly. However, when the app is in the Background state (suspended), it consistently crashes with an NSInternalInconsistencyException.
The app process is killed by the iOS Watchdog because it fails to satisfy the requirement of posting an incoming call in the same run loop as the push receipt, or the completion handler is not being released fast enough by the JS bridge.
Environment
React Native Version: .78
React Native CallKeep Version: 4.3.14
React Native VoIP Push Notification Version: 3.3.3
iOS Version: 18.x
Device: Physical iPhone [iphone 13 pro]
The Issue
When a VoIP push arrives while the app is in the Background:
pushRegistry:didReceiveIncomingPushWithPayload: is called.
RNCallKeep.reportNewIncomingCall is triggered on the Main Thread.
The app is terminated by the system before the CallKit UI is fully established or before the completion() closure is executed.
Current Implementation (AppDelegate.swift)
func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) {
let payloadDict = payload.dictionaryPayload
let callerName = payloadDict["callerName"] as? String ?? "Unknown Caller"
let callUUIDString = payloadDict["uuid"] as? String ?? UUID().uuidString
let userGUID = payloadDict["guid"] as? String ?? "0"
RNCallKeep.reportNewIncomingCall(
callUUIDString,
handle: userGUID,
handleType: "generic",
hasVideo: false,
localizedCallerName: callerName,
supportsHolding: true,
supportsDTMF: true,
supportsGrouping: true,
supportsUngrouping: true,
fromPushKit: true,
payload: ["userGuid": userGUID],
withCompletionHandler: {
}
)
RNVoipPushNotificationManager.didReceiveIncomingPush(with: payload, forType: type.rawValue)
completion()
}
Logs
Exception Type: EXC_CRASH (SIGKILL)
Exception Note: EXC_CORPSE_NOTIFY
Termination Reason: TCC 1 |
[CoreFoundation] Killing app because it never posted an incoming call to the system after receiving a PushKit VoIP push.
Observed Behavior
Killed State: Works perfectly.
Foreground State: Works perfectly.
Background State: The phone may vibrate once, but the app process is killed before the CallKit UI appears.
Questions/Suspected Causes
Is RNVoipPushNotificationManager.addCompletionHandler causing a delay in the background run loop that triggers the Watchdog?
Should completion() be called immediately in Swift for the Background state, rather than waiting for VoipPushNotification.onVoipNotificationCompleted in JS?
Is there a known issue with RNCallKeep not being able to present the UI while the app is in a suspended background state?
Hi, I develop an ES client applying rule-engine evaluating ES events (mostly File-system events).
It is a bit non-standard not being deployed as a System-Extension, but rather as a global daemon.
On some Macs, I sometimes see "crash reports" for the ES process, all sharing
Termination Reason: Namespace ENDPOINTSECURITY, Code 2 EndpointSecurity client terminated because it failed to respond to a message before its deadline
All of these happen not while normal Mac usage, but rather right at Mac wakeup time after sleep.
My guess is, some ES_AUTH events (with deadline) arrive when Mac goes to sleep, and somehow my high-priority dispatch_queue handling them is "put to sleep" mid processing them, so when the Mac wakes up - event handling continues long after the deadline passed, and MacOS decides to kick the process.
Questions:
What is the recommended behavior with ES vs Sleep/Wake cycles? (we're not an antivirus, and we don't care much to clear events or go "blind" for such time)
Can I specify somewhere in the info.plist of my bundle (this is built like an App) that my process should't be put to sleep, or that the OS should sleep it only when it becomes idle, or some other way tells the OS it is "ready for sleep" ?
If not -- How do I observe the scenario so I can suspend my event handling IN TIME and resume on wake?
Thanks!
Not quite but maybe sorta related to the errOSAInternalTableOverflow problem I asked about in a different thread, this one deals with crashes our app gets (and much more frequently lately after recent OS updates (15.7.3) are OK'd by our IT department).
Our app can run multiple jobs concurrently, each in their own NSOperation. Each op creates its own SBApplication instance that controls unique instances of InDesignServer. What I'm seeing recently is lots of crashes happening while multiple ops are calling into ScriptingBridge. Shown at the bottom is one of the stack crawls from one of the threads. I've trimmed all but the last of our code. Other threads have a similar stack crawl.
In searching for answers, Google's AI overview mentions "If you must use multiple threads, ensure that each thread creates its own SBApplication instance…" Which is what we do. No thread can reach another thread's SBApplication instance. Is that statement a lie? Do I need to lock around every ScriptingBridge call (which is going to severely slow things down)?
0 AE 0x1a7dba8d4 0x1a7d80000 + 239828
1 AE 0x1a7d826d8 AEProcessMessage + 3496
2 AE 0x1a7d8f210 0x1a7d80000 + 61968
3 AE 0x1a7d91978 0x1a7d80000 + 72056
4 AE 0x1a7d91764 0x1a7d80000 + 71524
5 CoreFoundation 0x1a0396a64 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
6 CoreFoundation 0x1a03969f8 __CFRunLoopDoSource0 + 172
7 CoreFoundation 0x1a0396764 __CFRunLoopDoSources0 + 232
8 CoreFoundation 0x1a03953b8 __CFRunLoopRun + 840
9 CoreFoundation 0x1a03949e8 CFRunLoopRunSpecific + 572
10 AE 0x1a7dbc108 0x1a7d80000 + 246024
11 AE 0x1a7d988fc AESendMessage + 4724
12 ScriptingBridge 0x1ecb652ac -[SBAppContext sendEvent:error:] + 80
13 ScriptingBridge 0x1ecb5eb4c -[SBObject sendEvent:id:keys:values:count:] + 216
14 ScriptingBridge 0x1ecb6890c -[SBCommandThunk invoke:] + 376
15 CoreFoundation 0x1a037594c ___forwarding___ + 956
16 CoreFoundation 0x1a03754d0 _CF_forwarding_prep_0 + 96
17 RRD 0x1027fca18 -[AppleScriptHelper runAppleScript:withSubstitutionValues:usingSBApp:] + 1036
Hello,
I'm trying to figure out why an Int is being inferred over my explicit Double
I'm parsing a CSV that contains 2 tables. I don't own the data so I'm not able to change it.
The first row contains one cell that's used as a title for the document
The second row is empty
The third row contains one cell that's used as the header for the first table
There is a header row for the table
There's a dynamic number of rows for this table
The an empty spacer row
There is a row that's used as a title for the second table
There is a header row for the table
There's a dynamic number of rows for this table
Im able to separate and create two DataFrame's from the data without issue. And this is the initializer I'm using.
DataFrame(
csvData: csvData,
rows: rows,
types: types,
options: options
)
Column names and their CSV types looks like this
var types: [String: CSVType] {
[
// ...
"Column 38": .double,
// ...
]
}
The data in the CSV is
0
nil
nil
nil
2
And this is what the one of the columns in question looks like when printed
▿ 38 :
┏━━━━━━━━━━━┓
┃ Column 38 ┃
┃ <Int> ┃
┡━━━━━━━━━━━┩
│ 0 │
│ nil │
│ nil │
│ nil │
│ 2 │
└───────────┘
- name : "Column 38"
- count : 5
▿ contents : PackedOptionalsArray<Int>
▿ storage : <PackedOptionalsStorage<Int>: 0x600000206360>
The docs state
/// - types: A dictionary of column names and their CSV types.
/// The data frame infers the types for column names that aren't in the dictionary.
Since types contains the column name and it's still being inferred, my assumption is that the issue involves the renaming of the header row when it has empty cells occurs after the types are checked.
Edit:
After setting hasHeaderRow: false from true and adjusting my row offset, the types are now being assigned correctly.
I'd recommend opening a feedback enhancement where renaming columns occurs before type assignment.
From the Feb 24 news, I understand that for all Apple users in Brazil with iOS26.2 and newer, isEligibleForAgeFeatures will eventually return true. Brazil is a "nonregulated region", and developers will need to handle all three situations of ask first/always share/never share.
Please correct me if I'm wrong above. A few questions follow on the eligibility check:
What's the return value of IsEligibleForAgeFeatures for a Brazilian user who has NOT touched the age range feature at all, thus hasn't picked one of the three options?
How can we test these cases? From the updated sandbox doc, there's more information on declined/approved, will those the same behaviors as a future Brazilian user? The doc used to say Texas, now it doesn't say any region.
On which date will Apple START to return true for IsEligibleForAgeFeatures for Brazilian users? I cannot find the exact date anywhere.
Will ALL of Brazil return true overnight, or is there some ramp up that developers need to be aware of?
Thanks a lot for sharing the guidance, and thanks in advance for more guidance to come!
Some users have switched to wearing smart rings instead of an Apple Watch, but they still want their rings to close throughout the day in Apple Fitness to keep their streaks going.
I've noticed that the 3rd party smart ring apps do not affect the progress of the exercise and move rings unless the user puts on their Apple Watch and syncs with there iPhone throughout the day.
Is there a way to make the progress rings update throughout the day without having to connect an Apple Watch periodically?
iOS | 26.3 specific | Google Map hangs after sharing the location to other app which open the location in new app
Device: iPhone 13 Pro Max
iOS Version: iOS 26.3
Google Maps Version: 26.08.2
Steps to Reproduce:
Open Google Maps.
Select any location
Tap Share.
Share the location to another app (e.g., navigation app, co - pilot or any third party apps).
Return to Google Maps.
Expected Result:
Google Maps should continue functioning normally.
Actual Result:
Google Maps becomes unresponsive and hangs.
Topic:
App & System Services
SubTopic:
Maps & Location
I’m encountering a strange, sporadic error in FileManager.replaceItemAt(_:withItemAt:) when trying to update files that happen to be stored in cloud containers such as iCloud Drive or Dropbox. Here’s my setup:
I have an NSDocument-based app which uses a zip file format (although the error can be reproduced using any kind of file).
In my NSDocument.writeToURL: implementation, I do the following:
Create a temp folder using FileManager.url(for: .itemReplacementDirectory, in: .userDomainMask, appropriateFor: fileURL, create: true).
Copy the original zip file into the temp directory.
Update the zip file in the temp directory.
Move the updated zip file into place by moving it from the temp directory to the original location using FileManager.replaceItemAt(_:withItemAt:).
This all works perfectly - most of the time. However, very occasionally I receive a save error caused by replaceItemAt(_withItemAt:) failing. Saving can work fine for hundreds of times, but then, once in a while, I’ll receive an “operation not permitted” error in replaceItemAt.
I have narrowed the issue down and found that it only occurs when the original file is in a cloud container - when FileManager.isUbiquitousItem(at:) returns true for the original fileURL I am trying to replace. (e.g. Because the user has placed the file in iCloud Drive.) Although strangely, the permissions issue seems to be with the temp file rather than with the original (if I try copying or deleting the temp file after this error occurs, I’m not allowed; I am allowed to delete the original though - not that I’d want to of course).
Here’s an example of the error thrown by replaceItemAt:
Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “test-file.txt” in the folder “Dropbox”." UserInfo={NSFileBackupItemLeftBehindLocationKey=file:///var/folders/mt/0snrr8fx7270rm0b14ll5k500000gn/T/TemporaryItems/NSIRD_TempFolderBug_y3UvzP/test-file.txt, NSFileOriginalItemLocationKey=file:///var/folders/mt/0snrr8fx7270rm0b14ll5k500000gn/T/TemporaryItems/NSIRD_TempFolderBug_y3UvzP/test-file.txt, NSURL=file:///Users/username/Library/CloudStorage/Dropbox/test-file.txt, NSFileNewItemLocationKey=file:///Users/username/Library/CloudStorage/Dropbox/test-file.txt, NSUnderlyingError=0xb1e22ff90 {Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “test-file.txt” in the folder “NSIRD_TempFolderBug_y3UvzP”." UserInfo={NSURL=file:///var/folders/mt/0snrr8fx7270rm0b14ll5k500000gn/T/TemporaryItems/NSIRD_TempFolderBug_y3UvzP/test-file.txt, NSFilePath=/var/folders/mt/0snrr8fx7270rm0b14ll5k500000gn/T/TemporaryItems/NSIRD_TempFolderBug_y3UvzP/test-file.txt, NSUnderlyingError=0xb1e22ffc0 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}}}
And here’s some very simple sample code that reproduces the issue in a test app:
// Ask user to choose this via a save panel.
var savingURL: URL? {
didSet {
setUpSpamSave()
}
}
var spamSaveTimer: Timer?
// Set up a timer to save the file every 0.2 seconds so that we can see the sporadic save problem quickly.
func setUpSpamSave() {
spamSaveTimer?.invalidate()
let timer = Timer(fire: Date(), interval: 0.2, repeats: true) { [weak self] _ in
self?.spamSave()
}
spamSaveTimer = timer
RunLoop.main.add(timer, forMode: .default)
}
func spamSave() {
guard let savingURL else { return }
let fileManager = FileManager.default
// Create a new file in a temp folder.
guard let replacementDirURL = try? fileManager.url(for: .itemReplacementDirectory, in: .userDomainMask, appropriateFor: savingURL, create: true) else {
return
}
let tempURL = replacementDirURL.appendingPathComponent(savingURL.lastPathComponent)
guard (try? "Dummy text".write(to: tempURL, atomically: false, encoding: .utf8)) != nil else {
return
}
do {
// Use replaceItemAt to safely move the new file into place.
_ = try fileManager.replaceItemAt(savingURL, withItemAt: tempURL)
print("save succeeded!")
try? fileManager.removeItem(at: replacementDirURL) // Clean up.
} catch {
print("save failed with error: \(error)")
// Note: if we try to remove replaceDirURL here or do anything with tempURL we will be refused permission.
NSAlert(error: error).runModal()
}
}
If you run this code and set savingURL to a location in a non-cloud container such as your ~/Documents directory, it will run forever, resaving the file over and over again without any problems.
But if you run the code and set savingURL to a location in a cloud container, such as in an iCloud Drive folder, it will work fine for a while, but after a few minutes - after maybe 100 saves, maybe 500 - it will throw a permissions error in replaceItemAt.
(Note that my real app has all the save code wrapped in file coordination via NSDocument methods, so I don’t believe file coordination to be the problem.)
What am I doing wrong here? How do I avoid this error? Thanks in advance for any suggestions.
Hello,
I have a iOS app I was looking at porting to Mac.
I'm having an issue with both the Mac (Designed for iPad) and Mac Catalyst Destinations. I can't test Mac due to too many build issues.
I'm trying to assign a new NSManagedObject into a NSPersistentStore.
let object = MyObject(context: context)
context.assign(object, to: nsPersistentStore)
This works fine for iOS/iOS Simulator/iPhone/iPad. But on the Mac it's crashing with
FAULT: NSInvalidArgumentException: Can't assign an object to a store that does not contain the object's entity.; {
Thread 1: "Can't assign an object to a store that does not contain the object's entity."
Hello,
We are implementing in-app provisioning in our fintech app; the card issuer is a third party, so we have limited control and visibility. We have ruled out the causes we could investigate on our side and on the card issuer’s side.
We are reaching out to ask for your help in understanding what is going wrong so we can fix it.
What happens:
User taps “Add to Apple Wallet” → we present PKAddPaymentPassViewController → they tap Next → after a few seconds the flow fails with "Set Up Later" alert.
Device log:
ProvisioningOperationComposer: Step 'eligibility' failed with error <PKProvisioningError: severity: 'terminal'; internalDebugDescriptions: '(
"eligibility request failure",
"Received HTTP 500"
)'; underlyingError: 'Error Domain=PKPaymentWebServiceErrorDomain Code=0 "Unexpected error." UserInfo={PKErrorHTTPResponseStatusCodeKey=500, NSLocalizedDescription=Unexpected error.}'; userInfo: '{
PKErrorHTTPResponseStatusCodeKey = 500;
}';
Feedback Assistant ID: FB22007923 (Error during the In-App Provisioning process)
We're working on in-app provisioning for wallet access passes. When testing the in-app provisioning on a sandbox account, I get an error saying software update required. Please advise.
We have an app that controls InDesign Desktop and InDesignServer via hundreds of AppleScripts. Some macOS security updates a while back dictated that we start communicating with other apps via ScriptingBridge. We couldn't afford to convert the hundreds of AppleScripts into direct ScriptingBridge nomenclature, so we opted to keep them as is and instead tell the external apps to:
[app doScript:<the script text> language:InDesignScLgApplescriptLanguage withArguments:nil undoMode:InDesignESUMScriptRequest undoName:@"blah"]
There are a handful of scripts that we did convert to direct ScriptingBridge.
There are times (and under the right circumstances, it's repeatable) when a certain script will have run perfectly dozens of times, and then it will throw errOSAInternalTableOverflow.
We create a new SBApplication for every job (which could be a single instance of Desktop or the multiple instances of Server).
Why is this error happening seemingly randomly? Is there anything we can do to work around or prevent this?