My app is configured with the App Clip experiences, and a Clip App card pops up when an NFC tag is scanned—whether the host app is not launched, running in the background, or active in the foreground. I want to prevent the App Clip card from popping up when the host app is in the foreground; how can this be achieved?
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
We are using a java program as an installer for a software suite.
This program is bundled inside a signed and notarized Mac app, but it uses the system installed Java (from env).
For installing software, it requires the App Management permission (currently under System Settings › Privacy & Security › App Management).
Since the program runs via the system provided Java executable, that one is the executable, that needs said permission.
In the past, it was possible to add java to said permissions list. With macOS 26.2 it is no longer possible.
I think, this change happened with 26.2. It was definitely still working with macOS 15 (I can reproduce it there), and I am confident, that it also still worked under 26.1.
In Console.app I can see errors like this one
/AppleInternal/Library/BuildRoots/4~CCKzugBjdyGA3WHu9ip90KmiFMk4I5oJfOTbSBk/Library/Caches/com.apple.xbs/Sources/SecurityPref/Extension/Privacy/TCC+PrivacyServicesProvider.swift:227 add(record:to:) No bundle or no bundle ID found for record TCCRecord(identifier: "/opt/homebrew/Cellar/sdkman-cli/5.19.0/libexec/candidates/java/11.0.29-tem/bin/rmic", identifierType: SecurityPrivacyExtension.TCCIdentifierType.path, access: SecurityPrivacyExtension.TCCAccess.full, managed: false, allowStandardUserToSetSystemService: false, subjectIdentityBundleIdentifier: nil, indirectObjectIdentityBundleIdentifier: nil, indirectObjectIdentityFileProviderIdentifier: nil, tccAuthorization: <OS_tcc_authorization_record: 0xa97d0ba80>)
This is reproducible for various different Java installations.
I can also not add Java to the other permissions that I tried.
Since Java is not installed in a bundled app but instead as a UNIX executable in a bin-folder, the error No bundle or no bundle ID found for record makes sense.
I expect this to also affect other use cases where programs are provided as UNIX executables such as Python or C-Compilers like g++.
While it is possible to bundle an entire JRE inside each app, we intentionally chose not to as this massively increases app size.
If this issue is not resolved or a workaround can be found, this is the only option that remains for us.
I am however worried that there are other use cases where this is not an option.
Hi,
i programmed an app the uses MultipeerConnectivity to connect iOS-Devices to exchange Video-Files from the camera (https://pellepepper.my.canva.site/jumpcontrol). In general the solution works fine but I have some challenges:
The connection is pretty stable when there are only few other devices around. It seems to become more fragile when there are more other iOS-Devices in the area
Testing of the App worked with several meters of distance (up to 10). In real environments of athletics venues the solution is only stable in a region of about 2 meters
It seems that newer iOS-Releases make the connection more unstable. Last weekend we used it with iOS 18-Devices on older hardware, what worked fine. Integrating an iOS 26 device made trouble. Working on iPhone 13 with iOS 26 is hardly not usable.
What can I do to improve stability of the connection and therefore the App. What are the metrics to look for? Is there something I can do on the code base to make to connection more stable?
Many thx
Rainer
FB21772424
On any iPhone or iPad running 26.3 beta 3 with UIFileSharingEnabled enabled via Xcode, a file cannot be manually copied to/from macOS or manually deleted from Finder but 26.3 beta 2 works fine running on any iPhone or iPad.
The version of macOS is irrelevant as both macOS 26.2.1 and macOS 26.3 beta 3 are unable to affect file changes via macOS Finder on iPhone or iPad running 26.3 beta 3 but can affect file changes via macOS Finder on iPhone or iPad running 26.2.1
Thank you.
Tags
NetworkExtension, NEFilterManager, Content-Filter, TestFlight, iOS, Swift, Entitlements, App-Groups
Problem Summary
I'm experiencing a critical issue with a Network Extension Content Filter that works perfectly in debug mode but fails in TestFlight with:
```
-[NEFilterManager saveToPreferencesWithCompletionHandler:]_block_invoke_3:
failed to save the new configuration:
Error Domain=NEFilterErrorDomain Code=5 "permission denied"
UserInfo={NSLocalizedDescription=permission denied}
```
This is blocking completion of a client project and requires urgent assistance.
Environment
• Platform: iOS
• Minimum Deployment: iOS 16.0
• Development: Xcode with Flutter integration
• Testing Method: TestFlight (production build)
• Works in: Debug mode (direct device deployment)
• Fails in: TestFlight builds
What Works vs. What Fails
WORKS IN DEBUG MODE (✓):
• Network extension installs successfully
• System permission dialog appears correctly
• Filter starts and blocks content as expected
• All domain management functions work
FAILS IN TESTFLIGHT (✗):
• System permission dialog never appears
• NEFilterManager.saveToPreferences fails immediately
• Error Code 5: "permission denied"
• Cannot set up the filter at all
Implementation Details
ARCHITECTURE:
The implementation consists of:
Main App (Flutter) - handles UI and configuration
Network Extension Plugin (Swift) - bridges Flutter to NetworkExtension framework
FilterDataProvider (Swift) - implements content filtering logic
App Group - shared storage for configuration (group.app.v1.dev0)
PERMISSION REQUEST CODE:
```swift
func requestPermissions(completion: @escaping (Result<Bool, Error>) -> Void) {
NEFilterManager.shared().loadFromPreferences { error in
if let error = error {
DispatchQueue.main.async { completion(.failure(error)) }
return
}
let config = NEFilterProviderConfiguration()
config.organization = "Testing
config.filterBrowsers = true
config.filterSockets = true
let manager = NEFilterManager.shared()
manager.providerConfiguration = config
manager.localizedDescription = " Screen Shield"
manager.isEnabled = true
manager.saveToPreferences { saveError in
DispatchQueue.main.async {
completion(saveError == nil ? .success(true) : .failure(saveError!))
}
}
}
}
```
EXTENSION INFO.PLIST:
```xml
ENTITLEMENTS:
```xml
What I've Already Tried
VERIFIED ENTITLEMENTS (✓)
• Both main app and extension have matching entitlements
• App Group identifier is identical in both targets
• content-filter-provider capability is set
CHECKED PROVISIONING PROFILES (✓)
• Created distribution provisioning profiles with Network Extension capability
• App Group is included in all profiles
• All capabilities are enabled in App Store Connect
VERIFIED APP GROUP CONFIGURATION (✓)
• App Group exists in Apple Developer portal
• Added to both App ID and Extension App ID
• Regenerated provisioning profiles after adding
CODE SIGNING (✓)
• Both targets build and sign successfully
• No code signing errors during archive
• Extension is embedded in main app bundle
TESTFLIGHT REQUIREMENTS (✓)
• Using distribution certificate for archive
• Archive validation passes without warnings
• Upload to TestFlight successful
BUILD CONFIGURATION (✓)
• Minimum deployment target is iOS 16.0 for both targets
• Extension deployment target matches main app
• All required frameworks are properly linked
Specific Questions
Permission Dialog: In debug mode, the system permission dialog appears. In TestFlight, it never shows. Is there a TestFlight-specific permission issue with Network Extensions?
Entitlements Propagation: Are there known issues with entitlements not being properly included in TestFlight builds despite being present in the archive?
Distribution vs Development: Are there any differences in how Network Extensions are authorized between development builds and distribution builds?
Additional Context
• The extension works flawlessly when deployed directly from Xcode
• No console errors or warnings in TestFlight build
• UserDefaults(suiteName:) successfully accesses the App Group in both modes
• Filter logic itself is tested and working (confirmed in debug mode)
• This is urgent as it's blocking client project completion
I tested this with both adult acc and also with child app
What I Need
Specific steps to diagnose why NEFilterManager.saveToPreferences returns Code 5 in TestFlight
Confirmation of whether Network Extension entitlements require special handling for TestFlight
Any known issues or workarounds for this specific error in production builds
Debugging techniques that work in TestFlight environment (since console logs are limited)
System Information
• Xcode Version: Latest stable
• iOS Target: 16.0+
• Swift Version: 5.0
• Framework: Flutter with native iOS plugin
• Build Type: Distribution (Ad Hoc via TestFlight)
Thank you for any assistance. This is blocking critical client work and I need to resolve it urgently.
When I have to pull in hundreds of commits from upstream, I like to try to make sure things still compile - frequently, to try to limit how far I need to go to back fix things.
One issue is missing symbols in the kext, since you won't know until you try to load the kext. And loading the kext each commit is not realistic.
So I went and made up a call to something that does not exist, in my case, strqcmp(). I could not get the various tools like kmutil libraries --all-symbols to print out that this function was going to fail, so I wrote a little script (thanks ChatGPT);
./scripts/kpi_check.py --arch arm64e -k module/os/macos/zfs.kext/
First missing symbols:
_crfree
_crhold
_strqcmp
Hurrah.
But sadly, my brain was then curious as to why crhold() and crfree() work. Worked for years. Only dtrace calls them in XNU sources but otherwise not mentioned there, not listed in my frameworks, nm is not seeing it.
Somewhat of a rabbit hole.
I don't even need to know, it does work after all. I should just let it go right?
and yet... how does it work?
My best guess is a symbols.alias pointing it to kauth_cred_ref() somewhere? Maybe?
Anyway, pretty low priority but it's an itch...
Approx Dec 13th 2025 til now (Dec 29th) I noticed my APNS dropped off to nothing daily. When I try to send APNS alerts on the developer site tool it always returns "discarded as device was offline" for multiple devices which I know are online.
When I try pushing through my VPS (as I always have without any code changes for months) I get status codes of 400 and 403 mostly and a few 200's without it delivering also.
I created a new sandbox certificate just in case it was that but still no luck, I get the same results. Ive checked for any firewall issues and I see the following on my VPS:
nslookup gateway.push.apple.com
Server: 1.1.1.1
Address: 1.1.1.1#53
** server can't find gateway.push.apple.com: NXDOMAIN
This seems like a second issue but not the primary issue that the portal is reporting.
Any ideas what to check? Im at a loss as to why its not working at all through apples test notification portal on my developer account. It seems thats the initial issue I need to solve.
Thank you for any ideas/help
I'm implementing PurchaseIntent.intents for App Store in-app purchase promotions, following Apple's WWDC guidance. The API only works on cold launch (killed→launch), but fails on background→foreground transitions, making App Store promotions unusable.
Sample code as followed from WWDC23 video "What's new in StoreKit 2 and StoreKit Testing in Xcode".
In the StoreKitManager observable class, I have this function which is initialized in a listening task:
func listenForPurchaseIntent() -> Task<Void, Error> {
return Task { [weak self] in
for await purchase in PurchaseIntent.intents {
guard let self else { continue }
let product = purchase.product
await self.purchaseProduct(product)
}
}
}
where purchaseProduct() will perform the call to:
try await product.purchase()
ISSUE:
When the app is in background (after previously launched), and the purchase intent is initiated from Xcode Transaction Manager or using the "itms-services://?action=purchaseIntent" method, the system foregrounds my app but the purchase intent is never delivered to the waiting listener. The intent remains queued until the next cold launch (quit app and relaunch app). This could mean that if a user has installed the app, and has run the app, then tapped the promotional IAP from the App Store, the purchase intent will not show up until the next cold launch.
If the app is in quit state, then the system will foreground the app, and purchase intent is delivered correctly.
STEPS TO REPRODUCE
Launch app (listener starts in StoreKitManager.init())
Background app
Add purchase intent via Xcode Transaction Manager
Foreground app
Result: No purchase sheet appears, no intent delivered
Workaround attempts:
Using this either in a view or the main app:
func checkForPurchaseIntents() async {
for await purchaseIntent in PurchaseIntent.intents {
await storeKit.purchaseProduct(purchaseIntent.product)
}
}
Applied to .onChange(of: scenePhase) - Doesn't work, nothing happens.
Using UIApplication.willEnterForegroundNotification - Only works on the first time the app goes from background to foreground when purchase intent is sent. Doesn't work on second time or third time.
• Attempting to creating fresh listening task on each foreground - Does not work.
The question is:
How are we supposed to implement the PurchaseIntent API?
I have checked Apple sample projects like BackyardBirds, and sample projects from WWDC on StoreKit 2 but they never implemented Purchase Intent.
Hello!
We develop a SAS driver and a service application for DAS devices.
When users in our application create a RAID array on the device:
On the 1st step, our dext driver mounts a new volume. At this step DiskUtil automatically tries to mount it. As there is no file system on the new volume - the MacOS system popup appears "The disk you attached was not readable by the computer"
On the 2nd step our application creates the file system on this new volume.
So we do not need this MacOS system popup to appear (as it may frustrate our users).
We found a way to disable the global auto mount but this solution also impacts on other devices (which is not good).
Are there any other possibilities to prevent the popup "The disk you attached was not readable by the computer" from appearing?
Our app attempts to install a PDF workflow in ~/Library/PDF Services but on a clean install of newer macOS versions, that directory no longer exists. Attempting to create the folder requires prompting for user permission to access the ~/Library directory and then prompting the user to access the newly created ~/Library/PDF Services directory. This is annoying and awkward.
Creating the PDF Service in the sandbox Library directory does nothing useful since the PDF workflow does not show up in the PDF workflow list in the print dialog.
We would like to create both directories in one step, or have the OS create the folder like it used to.
Is there an entitlement that will allow our app access to the ~/Library directory without requiring Full Disk Access?
Is there a way to have the OS create a symlink in ~/Library for the PDF Services directory that works with macOS 14 and later?
I'm using SwiftData with CloudKit private database. I was able to identify the error on my device by debugging in Xcode with com.apple.CoreData.SQLDebug flag. However, in Production, I couldn't find a way to get the cause of errors.
I tried inspecting the error coming from eventChangedNotification. The NSPersistentCloudKitContainer.Event error does not contain any underlying error (neither CKError.userInfo nor in NSError.underlyingError). It only reports a partial failure with CKErrorDomain code 2.
If a user encounter an error, there seems to be no way to retrieve the error details.
Is there any way to access the error details or logs in Production?
Hi,
I’ve been struggling for a while with an issue around an auto-renewable subscription using StoreKit 2 and I’d like to double-check here whether I’m missing something, or if anyone has seen similar behavior.
Context
• iOS / iPadOS app, first release
• 1 auto-renewable subscription (only product in the app)
• Using StoreKit 2 only (Product, Transaction, AppStore)
• Review device according to the message: iPad Air 11” (M3), iPadOS 26.2
• I keep failing on Guideline 2.1 – App Completeness
• The App Review message is always the same:
“The In-App Purchase products in the app exhibited one or more bugs which create a poor user experience. Specifically, no action occurred when we tapped on the Continue to Purchase button.”
In App Store Connect, the subscription is properly configured, is in the state Ready for Review, and is correctly associated with this app version.
What I see (locally + TestFlight)
In TestFlight and local builds, the behavior looks correct:
• Product.products(for: […]) returns the product, the price and currency are displayed correctly on the paywall / subscription card.
• The user taps “Get PRO” → my overlay is shown (“Preparing purchase…” → then a screen with confirmation and price).
• After tapping the “Continue to Purchase” button in that overlay, I call await product.purchase().
• On my devices, the system StoreKit purchase sheet always appears.
• In the sandbox logs I can see:
• a successful result from purchase()
• a verified transaction via VerificationResult
• the “user has PRO” flag being set correctly after refreshing entitlements (Transaction.currentEntitlements + fallback Transaction.latest(for:)).
I’ve tested this on multiple real devices and with several sandbox Apple IDs – I cannot reproduce the “nothing happens after tapping” problem.
What App Review reports
App Review repeatedly claims that “no action occurred when we tapped on the Continue to Purchase button.”
From their screenshots and description, the flow is:
1. They open Settings → subscription card.
2. They see the loaded price, so the product has clearly been fetched successfully from the App Store.
3. They tap my “Get SalonFlow PRO” button.
4. My overlay appears with the subscription name and price.
5. They tap “Continue to Purchase” (in my UI this is “Pokračovat k nákupu”).
6. According to them, nothing happens – no system StoreKit confirmation, no error message, no visible action.
Important: this overlay did not appear as an extra complication, but as a reaction to their earlier feedback:
• Originally, I had a simple flow: button in the card → directly calling purchase().
• App Review at that time said that after tapping the button “nothing happens”.
• I added the overlay specifically to make it obvious that the button does react and that the app is preparing the system purchase: I show the product, the price, and a text explaining that a system App Store confirmation will appear next.
• Only from that overlay do I call purchase().
So: in their environment they obviously do reach the overlay (meaning the button definitely does “something”), but the actual StoreKit purchase sheet never shows up.
Additional changes and “safety belts”
From the App Review video it was clear they were tapping the purchase button roughly 3 seconds after launching the app. So I tightened the flow even more:
• The “Get SalonFlow PRO” button is now:
• disabled until the product has been loaded from the App Store,
• visually dimmed, with a spinner and a short text like “Loading subscription information, please wait…”.
• The button only becomes active once the product is actually loaded and ready.
• After that, the user goes through a two-step process:
1. tap “Get SalonFlow PRO” → overlay with details,
2. tap “Continue to Purchase” → this is where I call purchase().
On my devices, after that step the system purchase confirmation always appears. But App Review still says that after tapping “Continue to Purchase” nothing happens.
What I’d like to ask
1. Has anyone seen a situation where Product.purchase() with StoreKit 2 works fine in TestFlight and sandbox testing, but in the App Review environment the system purchase sheet never appears (no error, just “nothing”)?
2. Are there any known edge cases on iPad (iPadOS 26.2, iPad Air M3) where the StoreKit purchase sheet might fail to show even if:
• AppStore.canMakePayments == true,
• the product is valid and loaded,
• and no error is thrown from purchase()?
3. Could App Review consider my two-step flow (button → overlay → confirm button calling purchase()) problematic in itself, even though the overlay is there precisely because of their initial complaint that “nothing happens” after tapping the button?
4. Is there anything concrete you’d recommend:
• adding to the logs,
• changing in the timing/order of the purchase() call,
• or adjusting in the UI,
to make it absolutely clear what is happening in their environment if the system sheet never appears?
From my point of view, the implementation follows the StoreKit 2 documentation, everything works correctly in real tests and TestFlight, but the App Review environment behaves differently and I keep getting stuck on Guideline 2.1.
I’d really appreciate any experience, tips (“we had exactly this and fixed it by X”), or even a recommendation to radically simplify the flow back to a minimal “button → directly purchase()” without any intermediate overlay.
Thanks a lot for any help – this review loop has been going on for weeks and I’d really like to finally resolve it.
I've suddenly started seeing hundreds of the same block of four error messages (see attached image) when running my app on my iOS device through Xcode. I've tried Cleaning the Build folder, but I keep seeing these messages in the console but can't find anything about them.
Phone is running iOS 26.1. Xcode is at 16.4. Mac is on Sequoia 15.5. The app is primarily a MapKit SwiftUI based application.
Messages below:
Connection error: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service named com.apple.PerfPowerTelemetryClientRegistrationService was invalidated: Connection init failed at lookup with error 159 - Sandbox restriction." UserInfo={NSDebugDescription=The connection to service named com.apple.PerfPowerTelemetryClientRegistrationService was invalidated: Connection init failed at lookup with error 159 - Sandbox restriction.}
(+[PPSClientDonation isRegisteredSubsystem:category:]) Permission denied: Maps / SpringfieldUsage
(+[PPSClientDonation sendEventWithIdentifier:payload:]) Invalid inputs: payload={
isSPR = 0;
}
CAMetalLayer ignoring invalid setDrawableSize width=0.000000 height=0.000000
I'm also seeing the following error messages:
CoreUI: CUIThemeStore: No theme registered with id=0
In a class, I call the following (edited to simplify, but it matches the real case).
If I do this:
func getData() -> someClass? {
_ = someURL.startAccessingSecurityScopedResource()
if let data = NSData(contentsOf: someURL as URL) {
do {
let unarchiver = try NSKeyedUnarchiver(forReadingFrom: data as Data)
print((unarchiver.decodeObject(of: [NSArray.self, someClass.self /* and few others*/], forKey: oneKey) as? someClass)?.aProperty)
if let result = unarchiver.decodeObject(of: [NSArray.self, someClass.self /* same other types*/], forKey: oneKey) as? someClass {
unarchiver.finishDecoding()
print("unarchived success")
return result
} else {
unarchiver.finishDecoding()
print("unarchiving failed")
return someClass()
}
}
catch {
return nil
}
}
I get a failure on log : unarchiving failed
But if I comment out the print(unarchiver.decodeObject) - line 8, it works and I get unarchived success
// print((unarchiver.decodeObject(of: [NSArray.self, someClass.self /* and few others*/], forKey: oneKey) as? someClass)?.aProperty)
However, when I do exactly the same for another class (I've compared line by line to be sure), it works even with the print statement.
What could be happening here ?
I have noticed race conditions on macOS when tearing down and re-configuring an NEPacketTunnelProvider.
My goal is to handle switching out one VPN profile for another identical/near identical one (I'll add some context for this below).
The flow that I have tested was to wait for the NEVPNStatusDidChange notification to report a NEVPNStatus.disconnected state, and then start the process of re-configuring the VPN with a new profile.
In practice however, I have noticed that I must wait a couple of seconds between NEVPNStatus.disconnected state being reported and setting up a new tunnel. Otherwise, the system routing table gets messed up but the VPN reports being in NEVPNStatus.connected state, resulting in a tunnel that appears healthy but can't be accessed.
With this, I wanted to ask if you have any suggestions on any OS items I can observer, in order to deterministically know that the system has fully cleaned up my packet tunnel, and that I am safe to configure another? This would be much more optimal than a hard-coded delay.
Additional context:
Jamf is a common solution for deploying MDM configuration profiles. However, in my tests, it doesn't support Apple's recommended approach of using the PayloadIdentifier to mark profiles for replacement, as PayloadIdentifiers are automatically updated to match the PayloadUUID of that same profile on upload. Although given what I've observed, I'm not sure the Apple recommended approach would work here in any case.
Additionally, it would be nice to transition from non-MDM to MDM cleanly, however, this also requires an indeterminate wait time between the non-MDM configuration being disconnected and subsequently removed, and the MDM one being configured.
With these scenarios, we need to be able to add a second configuration, with possibly identical VPN settings, then remove the old one, allowing the system to transition to the new configuration.
For the MDM case, the pattern I've noticed on the system is that when the current profile is suddenly deleted, the connection will go into disconnected state, then NEVPNConfigurationChange will fire. The new profile can be configured from NEVPNConfigurationChange, however some time is needed to avoid races.
For non-MDM, I had experimented with an approach of polling for MDM configurations appearing. When they do, I'd remove my previous notification observers, and set up a new NEVPNStatusDidChange notification observer, to remove the non-MDM VPN configuration after. it enters a disconnected state. Following the removal, I would call a function to reconfigure the VPN with new configuration. When this logic is in place, the call to stopVPNTunnel() is made. Again, a hardcoded delay is required between stopping and removing the old configuration and setting up a new one.
Thanks!
I configured my app to show a Live Activity when an alarm rings using AlarmKit. However, if I dismiss the Live Activity by tapping somewhere other than the X button, and then long-press the Dynamic Island, a new Live Activity appears that is long but contains no information.
Currently, the only way I can remove this empty Live Activity is to press the X button while the alarm is in the snooze state. Pressing the X button on the initial alarm does not remove it.
Is there any way to prevent this behavior or properly handle / clean up this empty Live Activity?
As the title states, I’ve been trying to emulate some older Direct9 games, and rosetta can’t handle it because of that
https://github.com/WineAndAqua/rosettax87 I’ve had to use this, but it really seems like something that I shouldn’t have to do
I’ve tried Wineskin, wine, D9VK, MoltenVK, GPTk, and the only thing that’s close to working is using devel wine + d9vk with the xrosetta87 running like its a VPN, and then you play
Without xrosetta87 it’s 0-0.5 FPS? with it, it’s like a buttery smooth 60+
Topic:
App & System Services
SubTopic:
Core OS
Tags:
Graphics and Games
macOS
Hypervisor
Game Porting Toolkit
How should i write and not show this sensitive error?
Topic:
App & System Services
SubTopic:
General
There is an inconsistent issue when views are rendered from the Device Activity Report Extension. This issue is noticeable only on release versions and it works fine in debug mode.
Around 80% of the times, the Report Views return blank screen and this is only the case when a weekly/monthly filter is used. Although, it works as expected for daily report views.
My questions are:
How are all the Report Activity Views working fine in debug mode but not in release mode?
How the daily activity filter works fine in the release mode but the weekly/monthly filters don't work? Is this because of a memory limit issue in the extension?
As of now, I have the family-controls(distribution) entitlement only for the app and for the extensions I only have family-controls(development) entitlement. Do I need to request for family-controls(Distribution) entitlement even for the extensions?
I have seen threads on the forum mentioning the blank screen issue associated with the DeviceActivityReport but haven't found a solution to it. Any suggestions/feedback would be of great help, thanks.
Topic:
App & System Services
SubTopic:
General
Tags:
Extensions
Entitlements
Device Activity
Screen Time
The documentation says:
The caching behavior of the NSURL and CFURL APIs differ. For NSURL, all cached values (not temporary values) are automatically removed after each pass through the run loop. You only need to call the removeCachedResourceValueForKey: method when you want to clear the cache within a single execution of the run loop. The CFURL functions, on the other hand, do not automatically clear cached resource values. The client has complete control over the cache lifetimes, and you must use CFURLClearResourcePropertyCacheForKey or CFURLClearResourcePropertyCache to clear cached resource values.
https://developer.apple.com/documentation/foundation/nsurl/removeallcachedresourcevalues()?language=objc
Is this really true? In my experience I've had to explicitly remove cached resource values via -removeAllCachedResourceValues or removeCachedResourceValueForKey: otherwise the URL contains stale values.
For example on a URL that no longer exists I attempted to read NSURLIsHiddenKey and the last value was already cached. Instead of getting a NSFileNoSuchFileError I get the old cache value unless explicitly call -removeCachedResourceValueForKey: first and I'm fairly certain the value was cached on a previous run loop churn.