مرجع متدها، ورودی‌ها و پیش‌فرض‌ها

مرجع سریع امضای متدهای Kotlin، Flutter و JavaScript با ورودی اجباری، حالت اختیاری، پیش‌فرض و تفاوت پلتفرم.

نسخه مرجع: Kotlin/Flutter 0.2.1 و JavaScript 0.2.0. جدول‌ها برای انتخاب API عمومی‌اند؛ پشتیبانی پلتفرم پیش از فراخوانی بررسی شود. حالت‌های نمونه جایگزین هم‌اند و دستور اجرای همه متدها پشت‌سرهم نیستند.

نشست

KotlinFlutterپارامتر و خروجی
configure(InappifyOptions(apiKey))configure(apiKey: key) / configureResult(...)کلید اجباری؛ شناسه مشتری null پیش‌فرض؛ Kotlin Result، Flutter ساده bool
configure(InappifyOptions(apiKey, userId))configure(apiKey: key, appUserIdentifier: id)حساب معتبر موجود؛ context بازار/نسخه ورودی نیست
logIn(id)logIn(id) / logInResult(id)فقط String شناسه؛ مخصوص موبایل
logOut()logOut() / logOutResult()بدون پارامتر
isCustomerAnonymous(identifier)isCustomerAnonymous(appUserIdentifier: identifier)helper رشته‌ای؛ جای وضعیت نشست نیست

در JavaScript، InAppify.configure(options) client می‌دهد، client.logIn({identityTicket}) یا ({challengeId, code}) ورود و client.logOut() خروج است. Flutter Web از helper احرازشده، ticket exchange یا OTP استفاده می‌کند.

آفرینگ

نیازKotlinFlutterJavaScript
مجموعهgetOfferings()getOfferings() / getOfferingsResult()getOfferings()
جاریgetCurrentOffering()getCurrentOffering() / getCurrentOfferingResult()getCurrentOffering()
placementgetCurrentOffering("upgrade")getCurrentOffering(placementIdentifier: 'upgrade') و ResultgetCurrentOffering('upgrade')
شناسه دقیقgetOffering("special_offer")getOffering('special_offer') و ResultgetOffering('special_offer')
رفرش دستیsyncAttributesAndOfferingsIfNeeded()همان نام، خودش Resultهمان نام، Promise

placement پیش‌فرض null است؛ موبایل forceRefresh ندارد. متد sync در پل Flutter Web فعلی پیاده نشده. helperهای current، getOffering(id) و getCurrentOfferingForPlacement(id) روی مجموعه بدون شبکه‌اند؛ all موبایل map و JS آرایه است.

CustomerInfo

client.getCustomerInfo() و InappifySdk.getCustomerInfo() موبایل cachedOrFetched هستند؛ نسخه Result فلاتر همان fetchPolicy: اختیاری را دارد.

حالتKotlinFlutterJS
کش یا دریافتInappifyCacheFetchPolicy.CACHED_OR_FETCHEDInappifyCacheFetchPolicy.cachedOrFetchedCacheFetchPolicy.CACHED_OR_FETCHED
فقط کشCACHE_ONLYcacheOnlyCACHE_ONLY
سرورFETCH_CURRENTfetchCurrentFETCH_CURRENT؛ پیش‌فرض وب
کش تازه یا سرورNOT_STALE_CACHED_OR_CURRENTnotStaleCachedOrCurrentNOT_STALE_CACHED_OR_CURRENT

Flutter Web ورودی policy را عبور نمی‌دهد. helperهای hasEntitlement(id)، isActiveEntitlement(id) و getEntitlement(id) بدون شبکه‌اند. موبایل entitlements.active/all و JS آرایه entitlements دارد.

ویژگی و تخفیف

متدپارامترها و پیش‌فرض
Kotlin setAttributes(map) / Flutter setAttributes(map) و Result / JS setAttributes(object)کلید String، مقدار String یا null؛ null/خالی حذف
setEmail، setDisplayName، setPhoneNumber، setApnsToken، setFcmToken، setIdfa، setIdfv، setCampaign، setKeywordیک String؛ محدوده نوشتن/پلتفرم بررسی شود
Kotlin/Flutter setIp(value)یک String؛ فعلاً iOS رد می‌کند و وب این helper را ندارد
canSetReservedAttribute(key)کلید دقیق مثل $email؛ Flutter Result variant نیز دارد
Kotlin setReservedAttribute(request)InappifyReservedAttributeRequest(attribute, value)
Flutter setReservedAttributeResult(attribute:, value:)enum و String اجباری؛ رشته خالی برای حذف
Kotlin getDiscountedPaymentLinks(code)فقط کد؛ Result لینک پرداخت
Flutter getDiscountedPaymentLinks(code, offeringIdentifier: id) و Resultشناسه اختیاری/null؛ فقط وب آن را برای انتخاب مصرف می‌کند
JS validateDiscountCode(code) / (code, offeringId)انتخاب current یا صریح؛ Promise آفرینگ قیمت‌گذاری‌شده

خرید، تاریخچه و تحویل

متدورودی و محدودیت
Kotlin purchase(InappifyPurchaseParams.Builder(activity, package).build())استور تازه به Activity نیاز دارد؛ Builder(package) برای Direct
Flutter purchase(InappifyPurchaseParams(packageToPurchase: package)) و ResultPackage اجباری؛ key/paywallId/paywallRevision null پیش‌فرض؛ Activity را پل می‌دهد
JS purchase({package}, {redirect: false})Package اجباری؛ key/code/context اختیاری؛ redirect پیش‌فرض true
Kotlin/Flutter getPurchaseAttempt(id)، getPurchaseAttempts()فقط Android این نسخه؛ lookup null یعنی نامشخص
Flutter purchaseUpdates / Kotlin addEventListenerنتیجه هم‌بسته Android؛ پاک‌سازی observer با مالک
syncStorePurchases()بدون ورودی؛ Android دستی؛ iOS فقط Direct
restoreStorePurchases()بدون ورودی؛ restore صریح Android؛ iOS StoreKit ندارد
setConsumableDeliveryHandler(handler)Android و JS مستقیم؛ callback نتیجه delivered یا retryLater
syncPendingConsumables()native و JS مستقیم؛ Flutter Web ندارد
confirmDelivery(deliveryId)پس از commit؛ Kotlin Long، Flutter int، JS number
handleDeepLink(url)فقط مسیر بومی Android و return شناخته‌شده

قیمت، نوع محصول و شناسه‌ها از Package معتبر می‌آیند. اطلاعات اختیاری paywall باید جفت باشند. خرید نامشخص با key جدید تکرار نمی‌شود. جزئیات خرید و تحویل بخشی از قرارداد این متدها هستند.

روش‌های مخصوص وب در Flutter

متدورودی
configureAuthenticatedWebSessionResult و نسخه boolapiKey و identityTicketProvider اجباری؛ expectedCustomerIdentifier/country/appVersion/cancellation اختیاری
loginWithIdentityTicketResult یا exchangeIdentityTicketResult و نسخه nullableidentityTicket اجباری، cancellation اختیاری؛ یک ticket فقط یک بار
createOtpCaptchaResult() و نسخه nullablecancellation اختیاری
requestOtpResult(phone:, captchaKey:, captchaAnswer:) و نسخه nullablephone اجباری؛ بقیه و cancellation اختیاری
verifyOtpResult(challengeId:, code:) و نسخه nullableدو String اجباری؛ cancellation اختیاری
createCheckout(...)product/offering/package identifier اجباری؛ discountCode/country/appVersion/key/cancellation null؛ گزینه قدیمی Web isCrypto=false
getCheckoutStatus(checkoutId:)شناسه اجباری؛ cancellation اختیاری؛ یک query
getPendingCheckoutIdResult() و نسخه nullableبدون ورودی
handlePaymentReturnResult(...) و نسخه nullablecheckoutId null → pending؛ timeoutMs=60000، intervalMs=1500، cancellation اختیاری

اینجا isCrypto صرفاً گزینه قدیمی قرارداد Web checkout است؛ به purchase موبایل اضافه نشود. نمونه امن درخواست‌ها در راهنمای وب آمده است.

کنترل و مشاهده پیشرفته موبایل

Kotlin customerInfo(policy) / offerings(policy) و Flutter customerInfoWithPolicy(policy) / offeringsWithPolicy(policy) enum جداگانه cacheOnly/cacheFirst/networkFirst/networkOnly دارند؛ آن را با چهار policy معنایی CustomerInfo اشتباه نگیرید. setNetworkEnabled(bool) شبکه موبایل را کنترل می‌کند و پرداخت ناتمام را حذف نمی‌کند. isPaymentUrlAllowed(url) سیاست مقصد Direct را بررسی می‌کند. این helperهای موبایل در Flutter Web پشتیبانی نمی‌شوند.

Flutter getConfiguration()/getConfigurationResult() و snapshot، events و sessionStateChanges داده مشاهده‌ای می‌دهند؛ از setterهای mutable قدیمی برای تغییر مالک نشست استفاده نکنید. Kotlin observer ثبت‌شده را close و Flow stateUpdates() را مطابق عمر UI جمع‌آوری می‌کند.

پیش‌فرض کش و بازیابی · تفاوت پلتفرم‌ها