Thanks for looking into this. Here is a complete summary of our setup and what we have confirmed so far.
App configuration:
macOS app distributed via Developer ID (PKG installer) — not the Mac App Store
Host app runs as a menu bar agent (LSUIElement = YES in Info.plist) NSApplicationActivationPolicy = .accessory
The app runs continuously as a login item — it is always alive
Network Extension is a System Extension (NEAppProxyProvider), always running alongside the host app
What we have implemented:
MXMetricManager.shared().addSubscriber(self) is called in applicationDidFinishLaunching in the host app — as early as possible
A separate MXMetricManagerSubscriber is registered inside the Network Extension process at tunnel start
Both didReceiveMetricPayloads: and didReceiveDiagnosticPayloads: are implemented
On startup we also drain pastPayloads and pastDiagnosticPayloads to catch anything queued while the process was not running
The subscriber object is kept alive for the full lifetime of both processes
What we have confirmed:
Xcode's "Simulate MetricKit Payloads" works correctly in the host app. Our delegates fire, payloads are received. The code is correct.
Real production payloads: zero callbacks after 24+ hours in both processes i.e Host app and NE process
Our questions:
Does MetricKit's real 24h payload delivery require App Store or TestFlight distribution? We are using Developer ID — does metrickitd require an App Store receipt to mark an app eligible for delivery?
Does metrickitd deliver payloads to LSUIElement = YES menu bar agents (.accessory activation policy)? Since these apps never become the "active application" in the OS sense, we are concerned the delivery trigger may never fire for our process.
If both of the above are blockers — is there any supported path to get real MetricKit payload delivery for a Developer ID distributed, LSUIElement menu bar app with a System Extension?