آفرینگ، placement و نمایش پکیج
دریافت آفرینگ جاری، انتخاب با placement یا شناسه، تفاوت current و default و رفرش محدود اتریبیوت و آفرینگ.
پس از پیکربندی و هویت، انتخاب پیشنهاد را به SDK بسپارید. اولین عضو لیست لزوماً پیشنهاد مناسب مشتری نیست.
سه حالت انتخاب
| نیاز | ورودی | رفتار |
|---|---|---|
| پیشنهاد جاری مشتری | بدون placement | current انتخابشده؛ در نبود آن default |
| محل نمایش مثل upgrade | placementIdentifier: 'upgrade' | انتخاب placement و fallback جاری/default |
| یک آفرینگ مشخص | getOffering('special_offer') | جستوجوی دقیق؛ نبود آن null است، نه جایگزینی |
placement شناسه محل نمایش است؛ offeringIdentifier شناسه پیشنهاد است. Current میتواند بهدلیل targeting با پیشفرض پروژه فرق کند. در موبایل انتخاب از پاسخ سرور است؛ در وب resolver خود فراهمکننده قواعد و fallback وب را اعمال میکند.
Flutter
متدهای ساده getOfferings()، getCurrentOffering(placementIdentifier: ...) و getOffering(id) مدل nullable میدهند. وجود نتیجه Success با data برابر null برای جستوجوی آفرینگ، خطای شبکه نیست.
Kotlin
helperهای روی مجموعه شبکه نمیفرستند. all در Kotlin/Flutter یک map از شناسه به آفرینگ است. پکیج کامل را برای خرید نگه دارید؛ آن را از نام یا قیمت بازسازی نکنید.
JavaScript
catalog.all در JS آرایه است. حالت object قدیمی getCurrentOffering({placementIdentifier: 'upgrade'}) برای سازگاری باقی است؛ در کد جدید فرم ساده بالا کافی است.
رفرش دستی
در Kotlin و Flutter موبایل، syncAttributesAndOfferingsIfNeeded() را await کنید و از مجموعه برگشتی انتخاب کنید. متد صف ویژگیها را پیش از آفرینگ تازه همگام میکند و با صف خالی نیز در سهمیه، آفرینگ تازه میگیرد. مثال کامل در ویژگیها است.
سقف هر client ۵ اجرای پذیرفتهشده در ۶۰ ثانیه شناور است؛ شکست پذیرفتهشده نیز حساب میشود و تغییر حساب سهمیه را صفر نمیکند. بالاتر از سقف، شبکه اجرا نمیشود: کش همان نشست برمیگردد یا RATE_LIMITED_NO_CACHE و زمان انتظار در جزئیات خطا. SDK را برای دورزدن محدودیت دوباره نسازید.
خواندن عادی از کش استفاده میکند. روی Android، رفرش خودکار آفرینگ در foreground با پنجره پنج دقیقه و فاصله خطای سی ثانیه انجام میشود؛ این زمانبندی از سهمیه رفرش دستی مستقل است. در شروع اپ نیازی به پیشگرمکردن جداگانه نیست.
getCurrentOffering موبایل پارامتر refresh، forceRefresh یا context ندارد. خود متد combined sync در پل Flutter Web 0.2.1 پیاده نشده، هرچند JS 0.2.0 آن را دارد. جدول پلتفرمها را رعایت کنید.
نبود پیشنهاد یا محصول
نام placement و شناسه آفرینگ، عضویت محصول/پکیج، کلید همان اپ، SKU فروشگاه و شرایط targeting را بررسی کنید. شکست دریافت را از مجموعه موفق خالی جدا کنید. پکیج ساختگی یا جایگزینی مخفی آفرینگ صریح، راهحل نبود پیشنهاد نیست.