I'm building a Safari content blocker extension. The app is able to use SFContentBlockerManager.reloadContentBlocker
to update the content blocker's JSON rules.
However, I'm also trying to update the rules in the background through a daemon. The daemon app is embedded inside the main app, and is registered by the main app through SMAppService
.
The issue I'm running into is I can't get both the GUI app and the daemon to both update the content blocker:
- If I embed the Safari extension inside the main app and not the daemon, the main app is able to update the extension, but the daemon fails with an "operation couldn’t be completed" error (supposedly because it isn't the owner of the app)
- Alternatively, if I embed the extension inside the daemon, the main GUI app can no longer update the extension (also failing with "operation couldn't be completed"
- If I try to embed the extension inside both the main app and the daemon, it works fine when running from Xcode, but App Store Connect verification fails because it won't allow an bundle ID with two periods after the main app ID (e.g. the main app is
com.example.App
, the daemon iscom.example.App.daemon
, and the extension iscom.example.App.daemon.extension
)
I'm wondering if I'm missing something here? Is there a way to get Safari to recognize both the main app and the daemon as "owners" of the extension?
Thanks in advance!