I was recently made aware of a relatively new method on PTChannelManagerDelegate that allows the backend infrastructure to update the PTT service on a device.
incomingServiceUpdatePush(channelManager:channelUUID:pushPayload:isHighPriority:remainingHighPriorityBudget:completion:)
I remember the person stated that there was a specific format that the payload must have, but I am unable to find any documentation about it.
Can somebody point me to documentation on how to send this type of push notification for incomingServiceUpdatePush or give me an example payload? I believe it uses the same PTT push token, but if the headers are different, then please specify those differences too. Thanks!
Core OS
RSS for tagExplore the core architecture of the operating system, including the kernel, memory management, and process scheduling.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
A little bit of background: If you make an app with no compiled Arm64 binaries in the Content/MacOS folder, MacOS erroneously identifies it as an Intel based app. After launching the app, MacOS will prompt the user to install rosetta, despite the app running fine natively. I found a simple solution to this issue, either include a do-nothing compiled binary to Contents/MacOS, or add
<key>LSArchitecturePriority</key>
<array>
<string>arm64</string>
</array>
to the plist.
The problem is this change only fixes the issue if you also change the BundleID. If you run the app even once with the bad configuration, MacOS seems to cache the intel flag somewhere based on the BundleID. It does not seem to be cached in the usual places.
How to reproduce: (On apple silicon)
You probably already have rosetta, and it is a pain to remove, so a VM is likely needed.
Make an empty app with Script Editor, export with file format: Application.
Replace Example.app/Content/MacOS/applet with a script of the same name. Make sure the old applet is gone, don't rename it and leave it in the directory. I used:
#!/usr/bin/osascript
display dialog "Hello, world"
Make it executable sudo chmod +x ./Example.app/Content/MacOS/applet
Run the app and observe that it asks you to install rosetta
Add the previously mentioned fix to you plist, including the BundleID change
Run it again and observe that it now works
Change your BundleID back. Running this now raises the rosetta prompt despite the fact that it runs fine on a clean install of MacOS.
Things I have tried:
Rebooting, no effect
Reforming the app, no effect
Reboot in recovery mode, no effect
lsregister -delete, no effect
~/Library/Preferences, ~/Library/Caches, /Library/Preferences, and /Library/Caches, none contain an entry for the BundleId
defaults delete, domain not found
I
am developing a VisioPro application that requires Bluetooth function and needs to receive signals from external devices via Bluetooth in Unity6 with "Metal Rendering with Compositor Services".I have supplemented my info.plist file with the following line: Privacy-BluetoothAlwaysUsageDescription Uses BLE to communicate with devices. Despite this, when I launch the app on VisionPro, the prompt to use Bluetooth does not appear. What could be the issue? What additional settings do I need to configure to enable Bluetooth usage?
Some background:
We are developing an app that needs to scan NFC tags
We are following this documentation for our app
We (assume) we've gotten all the correct entitlements for our app
Our app correctly shows the NFC scanning prompt
We are using up-to-date iPhones to test
We tested scanning using a different NFC app on the app store and were able to successfully scan the tag
We're using NFC NDEF tags to test
The problem:
Nothing is being detected in the scan
Nothing in the example application when we downloaded it down and loaded it onto a test device (reminder that the app from the app store was able to read our tag)
When connected to the debugger, our delegate function is not firing (tested with breakpoints and print statements). The following is the signature of our delegate function:
func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage])
Is there something that we're missing to get the NFC scanning to work? Perhaps some kind of entitlement? If anyone has any ideas or paths to follow that'd be greatly appreciated. Thanks!
Logging in with my Apple ID anywhere in the system (feedback assistant, Xcode, iCloud, etc.) fails when running under virtualization. Is this a known 'issue'? (networking in general is working fine)
I installed the WWDC beta on UTM and I'm unable to find the option to disable the so-called "Natural Scrolling". Has this been removed and if so, can we get it put back?
I use a mouse with scroll wheel and everything is going opposite the direction I expect in the macOS 26 VM.
Hello,
As part of developing a DLP system, I need to block input devices upon detection of data leakage.
Could you advise if it's possible to temporarily disable the built-in keyboard and camera?
Thank you in advance,
Pavel
Given that I have enabled System Settings -> General -> Software Update -> Beta Updates -> macOS Tahoe 26 Developer Beta.
When I run the following command:
softwareupdate --list-full-installers
I'm not seeing macOS 26 within the resulting list:
➜ softwareupdate --list-full-installers
Finding available software
Software Update found the following full installers:
* Title: macOS Sequoia, Version: 15.5, Size: 15283299KiB, Build: 24F74, Deferred: NO
* Title: macOS Sequoia, Version: 15.4.1, Size: 15244333KiB, Build: 24E263, Deferred: NO
* Title: macOS Sequoia, Version: 15.4, Size: 15243957KiB, Build: 24E248, Deferred: NO
* Title: macOS Sequoia, Version: 15.3.2, Size: 14890483KiB, Build: 24D81, Deferred: NO
* Title: macOS Sequoia, Version: 15.3.1, Size: 14891477KiB, Build: 24D70, Deferred: NO
* Title: macOS Sonoma, Version: 14.7.6, Size: 13338327KiB, Build: 23H626, Deferred: NO
* Title: macOS Sonoma, Version: 14.7.5, Size: 13337289KiB, Build: 23H527, Deferred: NO
* Title: macOS Sonoma, Version: 14.7.4, Size: 13332546KiB, Build: 23H420, Deferred: NO
* Title: macOS Ventura, Version: 13.7.6, Size: 11910780KiB, Build: 22H625, Deferred: NO
* Title: macOS Ventura, Version: 13.7.5, Size: 11916960KiB, Build: 22H527, Deferred: NO
* Title: macOS Ventura, Version: 13.7.4, Size: 11915317KiB, Build: 22H420, Deferred: NO
* Title: macOS Monterey, Version: 12.7.4, Size: 12117810KiB, Build: 21H1123, Deferred: NO
Is there an issue with the softwareupdate utility?
"Rosetta was designed to make the transition to Apple silicon easier, and we plan to make it available for the next two major macOS releases – through macOS 27 – as a general-purpose tool for Intel apps to help developers complete the migration of their apps. Beyond this timeframe, we will keep a subset of Rosetta functionality aimed at supporting older unmaintained gaming titles, that rely on Intel-based frameworks."
What will happen to Rosetta 2 then? Most importantly, will the ability to emulate x86_64 containers and binaries in virtual machines persist? Will Rosetta 2 be blocked only from the App Store? Will apps be barred from Rosetta, only games be able to use it? Will it only support frameworks?
I have created an OpenDirectory module based on the template and docs here: https://developer.apple.com/library/archive/releasenotes/NetworkingInternetWeb/RN_OpenDirectory/chapters/chapter-1.xhtml.html
After I copy my module in place and I set my module's configuration (see Configuration APIs section), my module does not get loaded. Currently the way I am able to start/reload it is sending a TERM signal to "opendirectoryd". (Launchctl refuses to stop it.) Then launchd restarts it, and my module gets started fine. Problem is that on some macOS this leads to system inresponsiveness for long time (even minutes).
I have tried HUP signal, odutil reset cache etc, they do not help, my module does not get recognized.
Is there a recommended way how to notify opendirectoryd about a new module?
Repro: My example module can be found here: https://www.dropbox.com/scl/fi/qb8pa100yy56n5hangad0/MyODModule-250527-131702.tar.gz?rlkey=m96vb1rrxc6hml878jn64ybc8&st=h22tl4cy&dl=0
To reproduce the behaviour, uncomment line 12 in register_odmodule.sh: "/usr/bin/killall opendirectoryd", and compile and install the module with
"make && sudo make install". And observe that it does not get loaded. Then "killall opendirectoryd", and observe that it got loaded.
(To test for loaded or not, you can read on the node it creates with dscl: "dscl /MyExample -list /", or just see that it is not started as a process with "ps").
Thanks for any help in advance!
This has happened a few times, including out in the field; it's happened on macOS 14 and 15 I think.
"This" is: our app runs, activates the extension, it has to get user approval, and... the system dialogue window never appears. The extension stays waiting for user approval. I've got sysdiagnose from one of the systems, and I see the system log about it going into the user approval needed state, and... nothing else.
It's there in Settings, and can be approved then.
Has anyone run into this? Ever?
Hi everyone,
I'm working on a library application that uses ISO15693 NFC tags embedded in books to track checkout status. These tags are password-protected and require secure access in order to write the AFI (Application Family Identifier) field, which we use to mark books as checked out.
According to the tag spec (ST SL2S2602), the flow for writing to a protected AFI requires:
Sending Get Random Number (custom command 0xB2)
Sending Present Password (custom command 0xB3)
Writing AFI using Write AFI (0x27)
We’re using Core NFC's customCommand(requestFlags:customCommandCode:customRequestParameters:) on NFCISO15693Tag. While basic tag operations like getSystemInfo() and readSingleBlock() work fine, any customCommand immediately fails with this error:
Error Domain=NFCError Code=100 "Tag connection lost"
This only happens on tags that return ICRef = 0x01 in the system info response. The exact same tags and command sequence work fine on Android (transceive) and in desktop NFC tools. It looks like iOS is silently rejecting custom commands on these older tags.
Has anyone found a workaround for this? Or is this a known Core NFC limitation?
Would love to hear:
If customCommand works for you with tags reporting ICRef = 0x01
If Apple has documented ICRef restrictions for customCommand
If there’s a list of supported tag ICRefs or recommended replacements (e.g., ICRef ≥ 0x11?)
We’re happy to switch to a supported tag type if necessary — but we’d prefer an official answer or guidance before reconfiguring our whole tag supply chain.
Thanks in advance for any help!
We have a Network Extension system extension implementing NEFilterPacketProvider to inspect all incoming and outgoing network traffic.
We also want to monitor socket-level events such as connect(), bind(), and similar, by leveraging the Endpoint Security framework.
Does this require developing a separate system extension for Endpoint Security?
Additionally, what is the recommended approach for sharing context and data between the Network Extension and the Endpoint Security extensions?
Topic:
App & System Services
SubTopic:
Core OS
Tags:
Network Extension
System Extensions
Endpoint Security
In my app the user can select a source folder to be synced with a destination folder. The sync can also happen in response to a change in the source folder detected with FSEventStreamCreate.
If the user unzips an archive in the source folder and the sync process begins before the unzip operation has completed, the sync can fail because of a "Permission denied" error. I assume this is related to the posix permissions of the extracted folder being 420 during the unzip operation and (in my case) 511 afterwards.
Is there a way to detect than an unzip operation is in progress and wait until it has completed? I thought that using NSFileCoordinator would solve this issue, but unfortunately it's not the case. Since an unzip operation can last any amount of time, it's not ideal to just delay a sync by a fixed number of seconds and let the user deal with any error if the unzip operation takes longer.
let openPanel = NSOpenPanel()
openPanel.canChooseDirectories = true
if openPanel.runModal() == .cancel {
return
}
let url = openPanel.urls[0].appendingPathComponent("extracted", isDirectory: false)
var error: NSError?
NSFileCoordinator(filePresenter: nil).coordinate(readingItemAt: url, error: &error) { url in
do {
print(try FileManager.default.attributesOfItem(atPath: url.path).sorted(by: { $0.key.rawValue < $1.key.rawValue }).map({ ($0.key.rawValue, $0.value) }))
try FileManager.default.contentsOfDirectory(at: url, includingPropertiesForKeys: nil)
} catch {
print(error)
}
}
if let error = error {
print("file coordinator error:", error)
}
The online documentation for fs_snapshot_create, which is on a website which apparently I'm not allowed to link to on this forum, mentions that some entitlement is necessary, but doesn't specify which one. Searching online I found someone mentioning com.apple.developer.vfs.snapshot, but when adding this to my entitlement file and building my Xcode project, I get the error
Provisioning profile "Mac Team Provisioning Profile: com.example.myApp" doesn't include the com.apple.developer.vfs.snapshot entitlement.
Searching some more online, I found someone mentioning that one has to request this entitlement from DTS. Is this true? I couldn't find any official documentation.
I actually want to make a snapshot of a user-selected directory so that my app can sync it to another volume while avoiding that the user makes changes during the sync process that would make the copy inconsistent. Would fs_snapshot_create be faster than traversing the chosen directory and creating clones of each nested file with filecopy and the flag COPYFILE_CLONE? Although I have the impression that only fs_snapshot_create could make a truly consistent snapshot.
I'm pleased to share some significant updates that have recently been released for our Hypervisor and Virtualization frameworks. We've focused on enhancing efficiency, expanding capabilities, and addressing common developer needs. I believe these will be valuable for many of you.
Here’s a look at what’s new:
Hypervisor Updates
We've introduced support for configuring the intermediate physical address (IPA) memory granularity of a VM. This allows for more granular memory mappings, enabling granularity sizes down to 4KB. This is particularly useful for certain specialized device drivers requiring finer memory control.
Virtualization Framework Updates
More Efficient VM Image Storage with ASIF: We've integrated support for the Apple Sparse Image Format (ASIF). This results in a smaller disk footprint and optimized transfer for VM disk images when using VZDiskImageStorageDeviceAttachment, improving storage efficiency.
Custom Network Topologies with vmnet: We've added support for vmnet custom network topologies. This enables more flexible VM-to-VM communication based on logical networks with customized configurations, useful for complex testing or development environments. See VZVmnetNetworkDeviceAttachment to get started.
Simplified VM Queue Discovery: It's now easier to discover a VM’s on-process thanks to a new property on VZVirtualMachine. This should aid in development and debugging when interacting directly with the VM's queue.
These are some of the key highlights of the first beta, and I'm looking forward to seeing how these improvements will be utilized. I encourage you to explore the documentation for full details on these features.
Can the Xcode 26 code assist feature be used in a macOS 26 virtual machine? I am not seeing a way to enable it...
Also asking on https://github.com/insidegui/VirtualBuddy/discussions/524
We are seeing a kernel panic in nfsd when using vagrant synced folders. The issue started with macOS 15.4 and still occurs with macOS 15.5. It’s 100% reproducible when bringing up a new vagrant environment. The kernel panic does not occur when using smb instead of nfs.
https://developer.hashicorp.com/vagrant/docs/synced-folders/nfs
Other people have reported a similar issue when using nfs with Docker.
https://github.com/docker/for-mac/issues/7664
I filed this under FB17853906.
I spoke with an engineer at the Apps & Services WWDC lab and they recommended I post here to make sure the bug gets looked at and routed to the correct team.
I work on EdenFS, an open-source Virtual Filesystem that runs on macOS, Linux, and Windows. My team is very interested in using FSKit as the basis for EdenFS on macOS, but have found the documentation to be lacking and contains some mixed messaging on the future of FSKit. Below are a few questions that don’t seem to be fully covered by the current documentation:
Does FSKit support process attribution? Each FUSE request provides a requester Process ID (and other information) through the fuse_in_header structure. Does FSKit pass similar information along for each request?
Does the reclaimItem API function similarly to FUSE’s forget operation? If not, what are the differences? See #1 below for why forget/reclaimItem matters to us.
Is Apple committed to releasing and supporting FSKit? Is there any timeline for release that we can plan around?
Does FSKit have known performance/scalability limitations? We provide alternative methods that clients can use to make bulk requests to EdenFS, but some clients will necessarily be unable to use those and stress the default filesystem APIs. Throughput (on the order of tens of thousands of filesystem requests per minute) and request size are the main concerns, followed closely by directory size restrictions.
Why we’re interested in FSKit
As mentioned above, my team supports EdenFS on 3 platforms. On Linux, we utilize FUSE; on Windows, we utilize ProjectedFS; and on macOS, we’ve utilized a few different solutions in the past. We first utilized the macFUSE kext, which was great while it lasted. Due to (understandable) changes in supporting kernel extensions, we were forced to move to NFS version 3. NFS has been lackluster in comparison (and our initial investigations show that NFS version 4(.2) would be similar). We have had numerous scalability and reliability issues, some listed below:
NFS does not provide a forget API similar to FUSE. EdenFS is forced to remember all file handles that have been loaded because the kernel never informs us when all references to that file handle have been dropped. We can hackily infer that a file handle should never be referenced again in some cases, but a large number of file handles end up being remembered forever. Many of our algorithms scale with the number of file handles that Eden has to consider, and therefore performance issues are inevitable after some time.
NFS does not provide information about clients (requesters). We cannot tell which processes are sending EdenFS requests. This attribution is important due to issue #1. We are forced to work with tool owners to modify their applications to be VFS-friendly. If we can’t track down which tools are behaving poorly, they will continue to load excess file handles and cause performance issues.
NFS “Server connections interrupted:” dialog during heavy load. Under heavy load, either EdenFS or system-wide, our users experience this dialog pop-up and are confused as to how they should respond (Ignore or Disconnect All). They become blocked in their work, and will be further blocked if they click “Disconnect All” as that unmounts their EdenFS mount. This forces them to restart EdenFS or reboot their laptop to remediate the issue.
The above issues make us extremely motivated to use FSKit and partner with Apple to flesh out the final version of the FSKit API. Our use case likely mirrors what other user-space filesystems will be looking for in the FSKit API (albeit at a larger scale than most), and we’re willing to collaborate to work out any issues in the current FSKit offerings.
error on start of flutter app
Topic:
App & System Services
SubTopic:
Core OS