Summary: Sonar->Flipper Reviewed By: passy Differential Revision: D10032191 fbshipit-source-id: 5e5230a02e34b9d1c7c355701daef984dc779f35
51 lines
1.6 KiB
Markdown
51 lines
1.6 KiB
Markdown
---
|
|
id: send-data
|
|
title: Sending Data to Plugins
|
|
sidebar_label: 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
|
|
|
|
```java
|
|
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
|
|
|
|
```objective-c
|
|
FlipperClient *client = [FlipperClient sharedClient];
|
|
MyFlipperPlugin *myPlugin = [client pluginWithIdentifier:@"MyFlipperPlugin"];
|
|
[myPlugin sendData:myData];
|
|
```
|
|
|
|
### C++
|
|
|
|
```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.
|