Added docs for open source Navigation Plugin
Summary: Added docs for the Navigation Plugin. I've added instructions on how to use the plugin with vanilla Android, or how to integrate it with a third party solution. Reviewed By: danielbuechele Differential Revision: D16856614 fbshipit-source-id: e99cb94318820bd926f50bd4ba205fb11396a9d8
This commit is contained in:
committed by
Facebook Github Bot
parent
8f6740bb01
commit
6b93cd15c2
76
docs/setup/navigation-plugin.md
Normal file
76
docs/setup/navigation-plugin.md
Normal file
@@ -0,0 +1,76 @@
|
||||
---
|
||||
id: navigation-plugin
|
||||
title: Navigation Plugin Setup
|
||||
sidebar_label: Navigation
|
||||
---
|
||||
|
||||
## 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.
|
||||
Reference in New Issue
Block a user