Just a quick follow-up to my previous post with a new discovery that unfortunately invalidates my "daemon caching/quarantine" theory.
It turns out the temporary Bundle ID test (.test) was a false positive. Because the temporary ID wasn't linked to our production backend services and entitlements (like RevenueCat, CloudKit, etc.), the extension crashed immediately upon launch, throwing a Public XPC connection invalidated error.
Because the XPC connection died so early in the lifecycle, liveactivitiesd simply never reached the stage where it attempts to resolve the asset provider. So, the No asset provider error didn't disappear because a cache was cleared; it disappeared because the process didn't survive long enough to trigger it.
We are officially back to square one.
To rule out a few other obscure Xcode build traps, I have also double-checked the following:
Info.plist Generation: Ensured Generate Info.plist File is not overwriting our manual NSSupportsLiveActivities flag. The flag is 100% making it into the compiled binaries for both the app and the widget.
Version/Build Strings: Verified that the Version and Build numbers between the main app and the widget are exact string matches (e.g., both "2.0" and "1"), with no hidden type mismatches.
NSExtension: Verified the widget's Info.plist correctly contains NSExtensionPointIdentifier set to com.apple.widgetkit-extension.
Given that the payload is tiny, the capabilities (including Push) are correct, the binary is embedded and signed, and the Simulator works flawlessly... what else could cause the physical device's OS to fail to link the extension to the host app's assets?
Still scratching my head over this one. Any deeper OS-level insights would be a lifesaver.
Topic:
App & System Services
SubTopic:
Widgets & Live Activities
Tags: