مرجع متدها، ورودیها و پیشفرضها
مرجع سریع امضای متدهای Kotlin، Flutter و JavaScript با ورودی اجباری، حالت اختیاری، پیشفرض و تفاوت پلتفرم.
نسخه مرجع: Kotlin/Flutter 0.2.1 و JavaScript 0.2.0. جدولها برای انتخاب API عمومیاند؛ پشتیبانی پلتفرم پیش از فراخوانی بررسی شود. حالتهای نمونه جایگزین هماند و دستور اجرای همه متدها پشتسرهم نیستند.
نشست
| Kotlin | Flutter | پارامتر و خروجی |
|---|---|---|
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 استفاده میکند.
آفرینگ
| نیاز | Kotlin | Flutter | JavaScript |
|---|---|---|---|
| مجموعه | getOfferings() | getOfferings() / getOfferingsResult() | getOfferings() |
| جاری | getCurrentOffering() | getCurrentOffering() / getCurrentOfferingResult() | getCurrentOffering() |
| placement | getCurrentOffering("upgrade") | getCurrentOffering(placementIdentifier: 'upgrade') و Result | getCurrentOffering('upgrade') |
| شناسه دقیق | getOffering("special_offer") | getOffering('special_offer') و Result | getOffering('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: اختیاری را دارد.
| حالت | Kotlin | Flutter | JS |
|---|---|---|---|
| کش یا دریافت | InappifyCacheFetchPolicy.CACHED_OR_FETCHED | InappifyCacheFetchPolicy.cachedOrFetched | CacheFetchPolicy.CACHED_OR_FETCHED |
| فقط کش | CACHE_ONLY | cacheOnly | CACHE_ONLY |
| سرور | FETCH_CURRENT | fetchCurrent | FETCH_CURRENT؛ پیشفرض وب |
| کش تازه یا سرور | NOT_STALE_CACHED_OR_CURRENT | notStaleCachedOrCurrent | NOT_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)) و Result | Package اجباری؛ 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 و نسخه bool | apiKey و identityTicketProvider اجباری؛ expectedCustomerIdentifier/country/appVersion/cancellation اختیاری |
loginWithIdentityTicketResult یا exchangeIdentityTicketResult و نسخه nullable | identityTicket اجباری، cancellation اختیاری؛ یک ticket فقط یک بار |
createOtpCaptchaResult() و نسخه nullable | cancellation اختیاری |
requestOtpResult(phone:, captchaKey:, captchaAnswer:) و نسخه nullable | phone اجباری؛ بقیه و 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(...) و نسخه nullable | checkoutId 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 جمعآوری میکند.