--- id: navigation-plugin title: Navigation Plugin Setup sidebar_label: Navigation --- import {FbInternalOnly} from 'internaldocs-fb-helpers'; import FbNavigationPluginSetup from '../fb/Navigation-Plugin.mdx'; ## Adding the plugin using Buck ## Adding the plugin to non-buck-based apps ### 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 ``` 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.