react-native-fluq
Version:
Firebase Dynamic Links alternative for React Native
162 lines (123 loc) • 4.1 kB
Markdown
for React Native applications.
- Generate dynamic links on the backend
- Pass parameters through the installation process
- Handle platform-specific behavior (iOS, Android, Web)
- Receive parameters after app installation
- Lightweight and easy to use
## Installation
```bash
npm install react-native-fluq --save
# or
yarn add react-native-fluq
```
### iOS Setup
1. Add the following to your `AppDelegate.m`:
```objc
#import <RNFluq.h>
// Add this method if it doesn't exist
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
return [RNFluq handleLink:url];
}
// For Universal Links
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
return [RNFluq handleLink:userActivity.webpageURL];
}
return NO;
}
```
2. Update your Info.plist to add URL Schemes:
```xml
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>your-app-scheme</string>
</array>
</dict>
</array>
```
1. Add the following to your `android/app/src/main/AndroidManifest.xml` within the `<activity>` tag:
```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="your-app-scheme" />
</intent-filter>
```
2. Update your MainActivity.java:
```java
import com.fluq.RNFluqPackage;
import android.content.Intent;
public class MainActivity extends ReactActivity {
// ...
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
((RNFluqModule) getReactNativeHost()
.getReactInstanceManager()
.getNativeModule("RNFluq"))
.onNewIntent(intent);
}
}
```
3. Make sure to add the package to your `MainApplication.java`:
```java
import com.fluq.RNFluqPackage;
// Inside the getPackages() method
@Override
protected List<ReactPackage> getPackages() {
@SuppressWarnings("UnnecessaryLocalVariable")
List<ReactPackage> packages = new PackageList(this).getPackages();
// Add the dynamic links package
packages.add(new RNFluqPackage());
return packages;
}
```
```javascript
import Fluq from 'react-native-fluq';
// In your component or app startup
async function checkInitialLink() {
const linkData = await Fluq.getInitialLink();
if (linkData) {
// App was opened with a dynamic link
console.log('App opened with link:', linkData.url);
console.log('Parameters:', linkData.params);
// Handle link parameters
if (linkData.params.referral) {
// Handle referral code
}
}
}
```
```javascript
import Fluq from 'react-native-fluq';
// Set up listener in your component
useEffect(() => {
const unsubscribe = Fluq.onLink((linkData) => {
// App received a dynamic link while running
console.log('Received link:', linkData.url);
console.log('Parameters:', linkData.params);
// Handle the link parameters
// ...
});
// Clean up listener
return () => unsubscribe();
}, []);
```
This library works with any backend that can generate appropriately formatted dynamic links. The backend should:
1. Generate a short URL that redirects to your app
2. Include platform-specific fallback URLs for web, iOS, and Android
3. Pass parameters through the installation process
See the C
MIT
A Firebase Dynamic Links alternative