I was able to set up the Native Messaging
https://developer.chrome.com/docs/apps/nativeMessaging
But there is a catch:
In order for the messaging to work, i need to create a json here (referencing an executable intended to listen to messages from an extension): $HOME/Library/Application\ Support/Google/Chrome/NativeMessagingHosts
.
https://developer.chrome.com/docs/apps/nativeMessaging#native-messaging-host-location
Unfortunately you can not bundle it with a Chrome plugin so it automatically gets added there.
Basically the json looks like this:
{
"name": "com.kopyl.tabfidnder.nativehost",
"description": "Tab Finder Chrome",
"path": "/usr/local/bin/native_host.py",
"type": "stdio",
"allowed_origins": [
"chrome-extension://jcbclkhailmoenaeddooicbemefilmje/"
]
}
(for rapid prototyping i used Python, but eventually i guess it would be better to utilize an XPC service)
Of course i could make a .pkg installer which would add that json config to the file system, but in terms of user experience i don't think it's optimal. And i doubt App Store will approve an application which requires external installations for it to work properly.
I tried copying the json on macOS app launch, but with enabled App Sandboxing Entitlement, the path turns to this (and hence becomes invalid):
$HOME/Library/Containers/kopyl.tab-finder-chrome-app/Data/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.kopyl.tabfidnder.nativehost.json
Without the App Sandboxing the macOS app can't be published to the App Store.