expo-rustore-subscriptions
v0.1.3
Published
Expo module for Ru Store subscriptions integration
Maintainers
Readme
expo-rustore-subscriptions
Expo модуль для интеграции подписок RuStore (VK) в React Native приложения.
📦 Установка
npm install expo-rustore-subscriptions
# или
yarn add expo-rustore-subscriptions⚙️ Конфигурация
1. Добавьте плагин в app.json или app.config.js
// app.config.js
module.exports = {
expo: {
plugins: ['expo-rustore-subscriptions'],
},
};2. Пересоберите нативный код
⚠️ Важно: После установки плагина обязательно выполните:
npx expo prebuild --clean
npx expo run:androidЭто необходимо для корректного добавления Maven-репозитория RuStore в проект.
🚀 Использование
Базовый пример
import ExpoRuStore from 'expo-rustore-subscriptions';
import { useEffect } from 'react';
function App() {
useEffect(() => {
// 1. Инициализация
ExpoRuStore.initialize('YOUR_PROJECT_ID')
.then(() => console.log('✅ RuStore initialized'))
.catch(err => console.error('❌ Init error:', err));
// 2. Подписка на события
const purchaseSubscription = ExpoRuStore.onPurchaseCompleted((data) => {
console.log('Покупка успешна:', data);
// data: { productId, purchaseToken, orderId, purchaseState }
});
const errorSubscription = ExpoRuStore.onPurchaseFailed((error) => {
console.error('Ошибка покупки:', error);
});
return () => {
purchaseSubscription.remove();
errorSubscription.remove();
};
}, []);
// 3. Кнопка покупки
const handlePurchase = async () => {
try {
await ExpoRuStore.purchaseSubscription('premium_monthly');
// Откроется нативное меню RuStore
} catch (error) {
console.error('Ошибка:', error);
}
};
return (
<Button title="Купить подписку" onPress={handlePurchase} />
);
}📚 API
Методы
initialize(projectId: string): Promise<void>
Инициализация RuStore Billing Client.
await ExpoRuStore.initialize('12345');purchaseSubscription(productId: string): Promise<void>
Открывает нативное меню покупки RuStore.
await ExpoRuStore.purchaseSubscription('premium_monthly');restorePurchases(): Promise<void>
Восстанавливает предыдущие покупки пользователя.
await ExpoRuStore.restorePurchases();getProducts(productIds: string[]): Promise<void>
Загружает информацию о продуктах.
await ExpoRuStore.getProducts(['premium_monthly', 'premium_yearly']);События
onPurchaseCompleted(callback)
Вызывается при успешной покупке.
ExpoRuStore.onPurchaseCompleted((data: PurchaseResult) => {
console.log(data.productId, data.purchaseToken);
});onPurchaseFailed(callback)
Вызывается при ошибке покупки.
ExpoRuStore.onPurchaseFailed((error: PurchaseError) => {
console.error(error.code, error.message);
});onPurchasesRestored(callback)
Вызывается после восстановления покупок.
ExpoRuStore.onPurchasesRestored((data) => {
console.log('Восстановлено покупок:', data.purchases.length);
});onProductsLoaded(callback)
Вызывается после загрузки информации о продуктах.
ExpoRuStore.onProductsLoaded((data) => {
data.products.forEach(product => {
console.log(product.title, product.price);
});
});📋 Требования
- Expo SDK: 54+
- React Native: 0.81+
- Android: minSdk 24+
- RuStore SDK: 7.0.0
🛠️ Устранение проблем
Ошибки сборки Android
Если возникают ошибки при сборке Android проекта:
Очистите кеш и пересоберите проект:
npx expo prebuild --clean cd android && ./gradlew clean cd .. && npx expo run:androidПроверьте, что Maven-репозиторий добавлен:
- Откройте
android/build.gradle - Убедитесь, что в блоке
repositoriesесть:
maven { url 'https://artifactory-external.vkpartner.ru/artifactory/maven' }- Откройте
Проверьте версию RuStore SDK:
- В
android/app/build.gradleдолжна быть зависимость:
implementation 'ru.rustore.sdk:billingclient:7.0.0'- В
🔧 Разработка
# Установка зависимостей
npm install
# Сборка TypeScript
npm run build
# Запуск примера
cd example
npm install
npx expo run:android📄 Лицензия
MIT
👤 Автор
Akimov Eugeney - GitHub
