diff --git a/docs/extending/deeplinks.mdx b/docs/extending/deeplinks.mdx new file mode 100644 index 000000000..123e9d91d --- /dev/null +++ b/docs/extending/deeplinks.mdx @@ -0,0 +1,34 @@ +--- +id: deeplinks +title: Using deeplinks +--- + +Flipper supports opening Flipper through deeplinks, by using the `flipper://` protocol. + +## open-plugin + +The follow link format can be used to open Flipper, and open a specific plugin: + +`flipper://open-plugin?plugin-id=&client=&devices=&payload=` + +The parameters are specified as follows: + +* `plugin-id` (required) the identifier of the plugin that needs to be opened, as specified by the `id` field in `package.json`. +* `client` (optional) the name of the application that should be opened. For device plugins, this doesn't need to be specified. If not set, the user will be prompted to select a client. +* `devices` (optional) comma separated list of device types that are acceptable. E.g. `iOS,Android` or `Metro`. If set, `client` and `plugin-id` must be running on this type of device. +* `payload` (optional) any additional string argument to pass to the plugin. Note that this argument should be properly URL encoded. + + +Using this deeplink format will make sure that: + +* [FB-ONLY] The user is logged in & connected to Facebook. +* Verify that Flipper is up to date. +* [FB-ONLY] Install the specified plugin if not installed already. +* Make sure the plugin is available on the provided client / device, or will prompt the user for a valid device / client selection is made on which the plugin is available. +* Enable the plugin if not enabled already. + +### Handling deeplinks in the plugin + +If a plugin is opened through a deeplink, for which a `payload` was set, the [`onDeepLink`](flipper-plugin#ondeeplink) handler will be triggered directly after initializing and rendering the plugin. + +Note that the same payload format can also be used to open other plugins programmatically from inside another plugin, by passing the payload as second argument to [`selectPlugin`](flipper-plugin#selectplugin). diff --git a/website/sidebars.js b/website/sidebars.js index 6b41744dc..5adc1eb56 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -105,6 +105,7 @@ module.exports = { 'Desktop plugin APIs': [ 'extending/flipper-plugin', 'extending/styling-components', + 'extending/deeplinks', ...fbInternalOnly([ { 'QPL linting': ['fb/building-a-linter', 'fb/active-linters'],