Purchasely is a solution to ease the integration and boost your In-App Purchase & Subscriptions on the App Store, Google Play Store, and Huawei App Gallery.
npm install react-native-purchaselyAdd the following code in the root of your project (typically App.tsx in a React Native project):
import Purchasely, { LogLevels, RunningMode } from 'react-native-purchasely'
Purchasely.startWithAPIKey(
'afa96c76-1d8e-4e3c-a48f-204a3cd93a15',
['Google'], // List of stores for Android, accepted values: Google, Huawei, and Amazon
null, // Your user ID
LogLevels.DEBUG, // Log level, should be warning or error in production
RunningMode.FULL // Running mode
).then(
(configured) => {
if (!configured) {
console.log('Purchasely SDK not properly initialized')
return
}
console.log('Purchasely SDK is initialized')
setupPurchasely()
},
(error) => {
console.log('Purchasely SDK initialization error', error)
}
)import Purchasely, {
PLYPresentationType,
ProductResult,
} from 'react-native-purchasely'
try {
const result = await Purchasely.presentPresentationForPlacement({
placementVendorId: 'composer',
loadingBackgroundColor: '#FFFFFFFF',
})
console.log('Result is ' + result.result)
switch (result.result) {
case ProductResult.PRODUCT_RESULT_PURCHASED:
case ProductResult.PRODUCT_RESULT_RESTORED:
if (result.plan != null) {
console.log('User purchased ' + result.plan.name)
}
break
case ProductResult.PRODUCT_RESULT_CANCELLED:
break
}
} catch (e) {
console.error(e)
}import { Text, View } from 'react-native';
import { NativeStackScreenProps } from '@react-navigation/native-stack';
import { Header } from 'react-native/Libraries/NewAppScreen';
import { Section } from './Section.tsx';
import Purchasely, {
PLYPresentationView,
PresentPresentationResult,
ProductResult,
PurchaselyPresentation,
} from 'react-native-purchasely';
import { useEffect, useState } from 'react';
export const PaywallScreen: React.FC<NativeStackScreenProps<any>> = ({ navigation }) => {
const [purchaselyPresentation, setPurchaselyPresentation] = useState<PurchaselyPresentation>();
useEffect(() => {
fetchPresentation();
}, []);
const fetchPresentation = async () => {
try {
setPurchaselyPresentation(
await Purchasely.fetchPresentation({
placementId: 'ONBOARDING',
contentId: null,
})
);
} catch (e) {
console.error(e);
}
};
const callback = (result: PresentPresentationResult) => {
console.log('### Paywall closed');
console.log('### Result is ' + result.result);
switch (result.result) {
case ProductResult.PRODUCT_RESULT_PURCHASED:
case ProductResult.PRODUCT_RESULT_RESTORED:
if (result.plan != null) {
console.log('User purchased ' + result.plan.name);
}
break;
case ProductResult.PRODUCT_RESULT_CANCELLED:
console.log('User cancelled');
break;
}
navigation.goBack();
};
if (purchaselyPresentation == null) {
return (
<View>
<Text>Loading ...</Text>
</View>
);
}
return (
<View style={{ flex: 1 }}>
<Header />
<PLYPresentationView
placementId="ACCOUNT"
flex={7}
presentation={purchaselyPresentation}
onPresentationClosed={(res: PresentPresentationResult) => callback(res)}
/>
<View style={{ flex: 3, justifyContent: 'center', alignItems: 'center' }}>
<Section>
<Text>Your own React Native content</Text>
</Section>
</View>
</View>
);
};A complete documentation is available on our website: Purchasely Docs.
git clone https://github.com/Purchasely/Purchasely-ReactNative.git
cd repoyarn installyarn all:prepareyarn example:android
# after example:android is done building run:
yarn example:startIf you encounter issues with the example app, ensure that you have the latest version of Android Studio and that your Android SDK is up to date. You may also need to run yarn android:clean to clear any cached builds.
If it's about Hermes engine and node, check if you have a file .xcode.env.local in example/ios
If you do, remove it:
rm -rf example/ios/.xcode.env.localYou can also check the node link in /user/local/bin to ensure it points to the correct version of your node installation:
ls -l /usr/local/bin/nodeIf not, do the following:
rm -rf /usr/local/bin/node
ln -s $(which node) /usr/local/bin/node