Fix: Add "rocketchat://" scheme for macOS application #2446
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue
Rocket.chat installed from Mac App Store(MAS) not handling
rocketchat://
URL schemeTo Reproduce:
rocketchat://invite
in Safari/ChromeExpected result: Rocket.chat opens
Actual result: Error
Why is this happening
MacOS applications are required to specify handled protocols inside
Info.plist
Electron:
Official documentation:
But it works on my machine!
app.setAsDefaultProtocolClient
) works only outside of the sandbox (it uses deprecatedLSSetDefaultHandlerForURLScheme
). Scheme is registered even if you delete the app. You can check this by deleting app and running:On machine that never launched Rocket.chat before and just installed it from MAS
app.setAsDefaultProtocolClient('rocketchat')
does not work without URL schemes in Info.plist (issue electron/electron#21319)Another point - check
Slack.app/Contents/Info.plist
, it contains supported URI schemes (search forCFBundleURLSchemes
) (Rocket.chat does not)How to fix
According to
electron-builder
's documentation we can use protocols:https://www.electron.build/configuration/configuration.html#PlatformSpecificBuildOptions-protocols
As a result
Info.plist
will contain new entry: