تفاوت Android، iOS و وب

جدول واقعی قابلیت‌های Kotlin و Flutter 0.2.1 و Web 0.2.0؛ هویت، کش، استور، بازیابی و تحویل.

وجود نام متد در facade فلاتر به معنی پیاده‌سازی آن روی هر backend نیست. این جدول مبنای نسخه‌های منتشرشده Flutter/Kotlin 0.2.1 و JS 0.2.0 است؛ برای نسخه دیگر source و lockfile را بررسی کنید.

قابلیتKotlin / Flutter AndroidFlutter iOSFlutter WebJavaScript مستقیم
مالک نشستKotlin بومیDart GoV2 + Keychainفراهم‌کننده JS از طریق پلclient همان JS
پرداختDirect، بازار، مایکتDirectWeb checkoutWeb checkout
logIn با شناسه مشتریداردداردنداردندارد؛ Ticket/OTP
Ticket و OTPنداردندارددارددارد
current / placement / exact offeringدارددارددارد؛ exact از helper مجموعهدارد
combined attribute/offering syncدارد؛ ۵/۶۰دارد؛ ۵/۶۰ندارددارد؛ ۵/۶۰
چهار سیاست CustomerInfoداردداردورودی عبور نمی‌کنددارد
پیش‌فرض CustomerInfocachedOrFetchedcachedOrFetchedFETCH_CURRENT فراهم‌کنندهFETCH_CURRENT
history و purchaseUpdates هم‌بستهداردنداردنداردندارد
sync/restore استورداردفقط Direct delivery؛ بدون StoreKitنداردندارد
delivery handlerداردنداردندارددارد، با API مخصوص JS
sync/confirm مصرفیداردDirect دستینداردDirect
checkout status / payment-return pollingAPI عمومی نداردندارددارددارد
isPaymentUrlAllowed / setNetworkEnabledداردداردنداردسیاست/تنظیمات وب مستقل
نوشتن reserved $ipداردvalidator رد می‌کندنداردندارد

انتخاب درست معماری

روی Android، Kotlin مالک خرید، کش و زمان‌بندی بازیابی است؛ پل فلاتر یک pipeline دوم نمی‌سازد. در iOS مسیر Direct در Dart اجرا می‌شود و ورودی‌های استور قابلیت StoreKit ایجاد نمی‌کنند. در وب، JS مالک توکن و browser storage است؛ دست‌کاری snapshot فلاتر یا ساخت client دوم، روش رفع unsupportedOperation نیست.

تفاوت‌های مهم کش

Android کش CustomerInfo را پنج دقیقه foreground/۲۵ ساعت background تازه می‌داند؛ iOS فعلی پنج دقیقه. JS پنج دقیقه visible/۲۵ ساعت hidden دارد، اما Flutter Web این policyها را forward نمی‌کند. native کش تأییدشده ماندگار دارد؛ snapshot مشتری JS memory-only است، حتی اگر refresh token در IndexedDB ذخیره شود.

تفاوت تلاش خرید

Android 0.2.1 تاریخچه رمز‌شده تلاش و نتیجه هم‌بسته با idempotencyKey را حتی پس از restart می‌دهد و Direct جدید را با سرویس سازگار پیگیری می‌کند. iOS API تاریخچه ندارد و key درخواست Direct به سرور ارسال نمی‌شود. Web به checkout ID و status endpoint تکیه می‌کند. این سه ضمانت را یکی فرض نکنید.

مرجع متدها · راهنمای خرید · Skill