تكرار السؤال: …
الإجابة المختصرة
باستخدام منصة ومكتبة RevenueCat (react-native-purchases) لإدارة الاشتراكات عبر iOS و Android بواجهة برمجية موحدة تتكفل بالتحقق من الإيصالات، وتجديد الاشتراكات، والتعامل مع فترات السماح.
الشرح
تعتبر إدارة الاشتراكات مباشرة مع Apple StoreKit و Google Play Billing من أصعب المهام لكثرة الحالات المعقدة (الإلغاء، الاسترجاع، انتهاء البطاقة، الترقية). توفر RevenueCat خطافات مسبقة الصنع واستجابات مشفرة من السيرفر، مع فحص حالة الصلاحية entitlement فورياً لتفعيل الميزات المدفوعة للمستخدم.
مثال بالكود
import Purchases from 'react-native-purchases';
async function initIAP(userId: string) {
Purchases.configure({ apiKey: "public_revcat_key", appUserID: userId });
}
async function buyProSubscription(packageToBuy: any) {
try {
const { customerInfo } = await Purchases.purchasePackage(packageToBuy);
if (customerInfo.entitlements.active['pro_access']) {
// تفعيل ميزات الحساب المدفوع بنجاح
}
} catch (e: any) {
if (!e.userCancelled) console.error(e);
}
}أخطاء شائعة
- الاعتماد على إيصال الشراء المباشر من جهاز المستخدم دون التحقق منه عبر خادم خلفي آمن لمنع الشراء الوهمي عبر أدوات الاختراق.