Files
flipper/docs/setup/navigation-plugin.mdx
John Knox 08b594db5c Upgrade static docs plugin
Summary:
Upgrade the static docs plugin.

You no longer need to import OssOnly and FbInternalOnly in markdown files, so removed those imports too.

Reviewed By: passy

Differential Revision: D26580059

fbshipit-source-id: 2763de2f5fbef41ec2ac7f7bdd147418badb78b6
2021-02-22 09:17:44 -08:00

89 lines
3.1 KiB
Plaintext

---
id: navigation-plugin
title: Navigation Plugin Setup
sidebar_label: Navigation
---
import FbNavigationPluginSetup from '../fb/Navigation-Plugin.mdx';
<FbInternalOnly>
## Adding the plugin using Buck
<FbNavigationPluginSetup />
## Adding the plugin to non-buck-based apps
</FbInternalOnly>
### Android
First, add the plugin to your Flipper client instance:
```java
import com.facebook.flipper.android.AndroidFlipperClient;
import com.facebook.flipper.plugins.navigation.NavigationFlipperPlugin;
final FlipperClient client = AndroidFlipperClient.getInstance(this);
client.addPlugin(NavigationFlipperPlugin.getInstance());
```
Navigation events in the app can then be recorded by calling `sendNavigationEvent` method of the `NavigationFlipperPlugin` instance from anywhere in the app. This allows for the Navigation Plugin to be integrated into existing navigation frameworks.
#### Using Android Deep Links
The Navigation Plugin can be used with built in [deep links for Android](https://developer.android.com/training/app-links/deep-linking).
To deep link to an activity, edit the AndroidManifest.xml and add the intent filter for the given activity.
```xml
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="flipper" android:host="deep_link_activity" />
</intent-filter>
```
This will allow the user to jump to `flipper://deep_link_activity` within Flipper.
To log that navigation event in flipper, we can send the navigation event in the Activity's `onCreate` method.
```java
public class DeepLinkActivity extends AppCompatActivity {
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
NavigationFlipperPlugin.getInstance().sendNavigationEvent("flipper://deep_link_activity/");
...
```
#### Third Party Solutions
The Navigation Plugin can easily be integrated into a third party navigation framework.
##### AirBnB Deep Link Dispatch
[Deep Link Dispatch](https://github.com/airbnb/DeepLinkDispatch) will work out of the box with Flipper for navigating to links, including support for url parameters. To add logging, simply add a BroadcastReceiver to your app that is called on any incoming deep links.
```java
public class DeepLinkReceiver extends BroadcastReceiver {
private static final String TAG = "DeepLinkReceiver";
@Override public void onReceive(Context context, Intent intent) {
String deepLinkUri = intent.getStringExtra(DeepLinkHandler.EXTRA_URI);
if (intent.getBooleanExtra(DeepLinkHandler.EXTRA_SUCCESSFUL, false)) {
NavigationFlipperPlugin.getInstance().sendNavigationEvent(deepLinkUri);
}
}
}
public class DeepLinkApplication extends Application {
@Override public void onCreate() {
super.onCreate();
IntentFilter intentFilter = new IntentFilter(DeepLinkHandler.ACTION);
LocalBroadcastManager.getInstance(this).registerReceiver(new DeepLinkReceiver(), intentFilter);
}
}
```
### iOS
iOS support is coming soon.