Summary: Per title. The controller you requested could not be found. Reviewed By: priteshrnandgaonkar Differential Revision: D9966768 fbshipit-source-id: 224ff9d02d6a01a6f7ee28788ddd9167d15aafee
1.6 KiB
1.6 KiB
id, title, sidebar_label
| id | title | sidebar_label |
|---|---|---|
| send-data | Sending Data to Plugins | Send Data |
It is often useful to get an instance of a Flipper plugin to send data to it. Flipper makes this simple with built-in support.
Plugins should be treated as singleton instances as there can only be one SonarClient and each SonarClient can only have one instance of a certain plugin. The Flipper API makes this simple by offering a way to get the current client and query it for plugins.
Plugins are identified by the string that their identifier method returns, in this example, "MySonarPlugin":
Android
final SonarClient client = AndroidFlipperClient.getInstance(context);
// Client may be null if AndroidFlipperClient.createInstance() was never called
// which is the case in production builds.
if (client != null) {
final MySonarPlugin plugin = client.getPlugin("MySonarPlugin");
plugin.sendData(myData);
}
iOS
SonarClient *client = [SonarClient sharedClient];
MySonarPlugin *myPlugin = [client pluginWithIdentifier:@"MySonarPlugin"];
[myPlugin sendData:myData];
C++
auto &client = SonarClient::instance();
// "MySonarPlugin is the return value of MySonarPlugin::identifier()
auto aPlugin = client.getPlugin("MySonarPlugin");
// aPlugin is a std::shared_ptr<SonarPlugin>. Downcast to expected type.
auto myPlugin = std::static_pointer_cast<MySonarPlugin>(aPlugin);
// Alternatively, use the templated version
myPlugin = client.getPlugin<MySonarPlugin>("MySonarPlugin");
myPlugin->sendData(myData);
Here, sendData is an example of a method that might be implemented by the Flipper plugin.