@fitcal/sdk-react-native
v1.1.0
Published
SDK para integração com Monety - Analytics, Feature Flags, Paywalls e In-App Purchases
Maintainers
Readme
@monety/sdk-react-native
SDK oficial para integração com Monety em aplicações React Native. Oferece Analytics, Feature Flags, Paywalls dinâmicas e gerenciamento de In-App Purchases.
Instalação
npm install @monety/sdk-react-nativePeer Dependencies
O SDK requer as seguintes dependências instaladas no seu projeto:
npm install @react-native-async-storage/async-storage @react-native-community/netinfo react-native-iap react-native-device-infoPersistência de Device ID (Recomendado)
Para melhor persistência do device ID entre reinstalações do app (especialmente no iOS), instale também:
npm install react-native-keychainEsta dependência é opcional, mas altamente recomendada. Com ela:
- iOS: Device ID persiste no Keychain mesmo após desinstalar o app
- Android: Device ID é armazenado de forma segura no Keystore
Sem ela, o SDK usa AsyncStorage como fallback (funciona, mas não persiste após desinstalação).
Para iOS:
cd ios && pod installQuick Start
1. Configure o Provider
import { PanelProvider } from '@monety/sdk-react-native';
export default function App() {
return (
<PanelProvider
config={{
appKey: 'sua_app_key',
debug: __DEV__,
}}
>
<YourApp />
</PanelProvider>
);
}2. Use os Hooks
import { usePanel, useSubscription } from '@monety/sdk-react-native';
function MyComponent() {
const { presentPaywall, hasActiveSubscription } = usePanel();
const { subscription } = useSubscription();
const handlePurchase = async () => {
const hasAccess = await hasActiveSubscription();
if (!hasAccess) {
await presentPaywall('default');
}
};
return (
<Button onPress={handlePurchase}>
{subscription ? 'Premium' : 'Upgrade'}
</Button>
);
}API Principal
PanelProvider
Provider que inicializa o SDK e disponibiliza o contexto para toda a aplicação.
<PanelProvider config={PanelConfig}>
{children}
</PanelProvider>usePanel()
Hook principal com acesso a todas as funcionalidades:
isInitialized- Se o SDK foi inicializadodistinctId- ID único do usuáriopresentPaywall(placement)- Apresenta uma paywallhasActiveSubscription()- Verifica se há assinatura ativagetSubscription()- Obtém dados da assinaturarestorePurchases()- Restaura compras anteriores
useSubscription()
Hook para gerenciamento de assinaturas:
subscription- Dados da assinatura atualisLoading- Estado de carregamentorefresh()- Atualiza dados da assinatura
Panel (API Imperativa)
Para uso fora de componentes React:
import { Panel } from '@monety/sdk-react-native';
// Identificar usuário
await Panel.identify('user_123', { email: '[email protected]' });
// Rastrear evento
await Panel.track('purchase_completed', { product: 'premium' });
// Feature Flags
const variant = await Panel.getVariant('new_feature');Tipos
interface PanelConfig {
appKey: string;
baseUrl?: string;
debug?: boolean;
environment?: 'Production' | 'Sandbox';
}
interface Subscription {
productId: string;
status: 'active' | 'expired' | 'cancelled' | 'in_grace_period';
expiresAt: Date | null;
platform: 'ios' | 'android';
autoRenewEnabled: boolean;
}
interface PaywallResult {
presented: boolean;
purchased: boolean;
restored: boolean;
cancelled: boolean;
error?: Error;
}Suporte
Para dúvidas ou problemas, entre em contato com o suporte Monety.
Licença
MIT
