Opacity Networks library for React Native.
yarn add @opacity-labs/react-native-opacity
If you are using an Expo app, the native configuration changes below have been abstracted into an expo-plugin, just add it to the plugins section in you app.json
:
{
// In the plugins sectino add the following
"plugins": [
// ...,
"@opacity-labs/react-native-opacity"
]
}
You need to bump your minimum deployment target to iOS 14. On the latest versions of RN this should be the default target, if not you can do it via:
Xcode → Project Explorer → [YOUR TARGET] → General → Deployment Target
Do a pod install
Module is a Turbo Module, therefore you need to enable the new arch. Again, on the latest RN versions the new architecture should be turned on by default if not run:
cd ios && RCT_ENABLE_NEW_ARCH=1 pod install
Or modify the top of your podfile and do a pod install:
env['RCT_ENABLE_NEW_ARCH'] = '1'
If you are pulling on the latest version the package, sometimes cocoapods refuses to update it's main repo specs. You can force an update via:
rm -rf ~/.cocoapods/repos/trunk
pod repo update
RCT_ENABLE_NEW_ARCH=1 pod install --repo-update
First add the necessary repos to download the dependencies. On your root android/build.gradle
add:
allprojects {
repositories {
google()
mavenCentral()
// If you already have allprojects->respositories just make sure you have these two added
maven { url "https://maven.mozilla.org/maven2/" }
maven { url 'https://jitpack.io' }
}
}
On your apps AndroidManifest.xml
add an activity:
// Put this on the same level as other activities
<activity
android:name="com.opacitylabs.opacitycore.InAppBrowserActivity"
android:theme="@style/Theme.AppCompat.DayNight"
/>
Indenpendtly of Expo or a bare React Native app.l You need to make sure react-native.config.js
is properly set up for code generation to work:
module.exports = {
project: {
android: {
packageName: 'your.package.name', // must match your android apps package name, take a look into your apps build.gradle
},
},
};
Once everything is setup you can call the init method on your JS:
// Create an OpacityInstance.ts file
import {
init,
get,
OpacityEnvironment,
} from '@opacity-labs/react-native-opacity';
try {
init('Your API key', false, OpacityEnvironment.PRODUCTION);
} catch (e) {
console.error(`Could not start opacity SDK: ${e}`);
}
export async function getUberRiderProfile() {
try {
let profileResponse = await get('flow:uber_rider:profile');
console.log(profileResponse);
} catch (e) {
console.error(`Could not get profile ${e}`);
}
}
Then somewhere on your app you can just call the functions:
// App.tsx
import { getUberRiderProfile } from './OpacityInstance';
return <Button onPress={getUberRiderProfile} title="Get Uber Rider Profile" />;