Android Instant App (Google Play Instant) — فناوریای که اجرای برنامههای بومی Android را بدون نصب امکانپذیر میکند. وقتی کاربر دکمه «امتحان کنید» را در Google Play میزند یا از طریق یک لینک عمیق عبور میکند، برنامه instant فقط ماژول لازم را دانلود کرده و فوراً اجرا میشود. این کار مانع نصب را از بین میبرد و مسیر از کشف تا اولین تعامل را کوتاه میکند.
نکات اصلی مقاله
Android Instant App — یک برنامه بومی Android است که بلافاصله پس از کلیک روی لینک یا دکمه «امتحان کنید»، بدون نصب اجرا میشود. این فناوری که توسط Google در سال ۲۰۱۷ معرفی شد، فقط ماژول مورد نیاز برای سناریوی فعلی (ثبت سفارش، مرحله بازی، رزرو هتل) را دانلود کرده و آن را به عنوان یک فرآیند بومی کامل با دسترسی به تمام قابلیتهای دستگاه اجرا میکند.
این مفهوم یک مشکل اساسی بازار موبایل را حل میکند: مانع کشف. تحقیقات نشان میدهد که ۶۰–۸۰٪ کاربرانی که صفحه یک برنامه را مشاهده میکنند، هرگز آن را نصب نمیکنند، و ۲۵٪ برنامههای نصبشده هرگز باز نمیشوند. برنامههای instant این مانع را با ارائه تجربه بومی فوری از بین میبرند. در عین حال، یک پایگاه کد واحد هم به نسخه لحظهای و هم به نسخه کامل خدمات میدهد که هزینههای توسعه را کاهش میدهد.
تا سال ۲۰۲۶، Google Play Instant از بازیها، تجارت الکترونیک، رزرو سفر، خرید بلیط و ابزارهای کاربردی پشتیبانی میکند. از جمله استقرارهای بزرگ — Skyscanner (+۲۵٪ رزرو)، NYTimes Crossword (+۱۵٪ اشتراک) و Red Bull (+۳۰٪ تعامل). این فناوری به ویژه در سناریوهای «قبل از خرید امتحان کنید» مؤثر است، زمانی که کاربر میخواهد برنامه را قبل از نصب ارزیابی کند.
Google Play Instant بر روی فرمت Android App Bundle و مکانیزم Dynamic Delivery ساخته شده است. وقتی کاربر یک تجربه فوری را شروع میکند، Google Play ماژول پایه و یک feature-module خاص را دانلود میکند، امضای دیجیتال را بررسی کرده و activity را در عرض چند ثانیه اجرا میکند. کل فرآیند بدون دیالوگ نصب انجام میشود — برنامه فقط روی صفحه ظاهر میشود.
// build.gradle.kts — پیکربندی ماژول instant
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("com.google.android.instantapps")
}
android {
namespace = "com.example.instantapp"
compileSdk = 35
defaultConfig {
applicationId = "com.example.instantapp"
minSdk = 26
targetSdk = 35
versionCode = 1
versionName = "1.0"
}
dynamicFeatures = setOf(
":feature_checkout",
":feature_catalog"
)
}
// AndroidManifest.xml برای instant-app — پرچم "dist:module dist:instant="true""
// <dist:module dist:instant="true" />// Feature module — صفحه ثبت سفارش برای instant
class CheckoutActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_checkout)
// Instant app: اندازه feature-module نباید از ۴ مگابایت تجاوز کند
// تصاویر کوچک را بارگذاری میکنیم، سپس تصاویر کامل را بارگذاری میکنیم
// از حداقل وابستگیها در feature-module استفاده میکنیم
}
fun upgradeToInstalledApp() {
// به کاربر پیشنهاد نصب نسخه کامل را میدهیم
InstantApps.showInstallPrompt(this, "com.example.instantapp", 123)
}
}نیاز کلیدی پیکربندی — پرچم مانیفست instant: هر feature-module که در تجربه فوری شرکت میکند باید <dist:module dist:instant="true" /> را در مانیفست خود داشته باشد. ماژول پایه نیز به وابستگی Play Instant SDK نیاز دارد. Google Play Console به پیکربندی جداگانه برای انتشارهای instant نیاز دارد و خود برنامه باید در قالب Android App Bundle (.aab) منتشر شود.
Feature modules — بلوکهای ساختمانی برنامههای instant. هر feature-module یک سناریوی کاربری جداگانه را نشان میدهد — ثبت سفارش، جستجو، کارت محصول، مرحله بازی — و میتواند به طور مستقل دانلود شود. ماژول پایه شامل کد مشترک، منابع و زیرساخت ناوبری است، و feature-modules عملکرد خاصی را پیادهسازی میکنند. چنین معماری هم برای نسخه instant و هم برای نسخه نصبشده مفید است.
// settings.gradle.kts — ساختار پروژه با feature-modules
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
rootProject.name = "InstantAppExample"
include(":app") // ماژول پایه
include(":feature_checkout") // ثبت سفارش (instant-ready)
include(":feature_catalog") // کاتالوگ محصولات (instant-ready)
include(":feature_profile") // پروفایل کاربر (فقط نسخه نصبشده)
// build.gradle.kts (feature module) — instant-enabled
plugins {
id("com.android.dynamic-feature")
id("org.jetbrains.kotlin.android")
}
android {
namespace = "com.example.feature.checkout"
}
dependencies {
implementation(project(":app"))
implementation("androidx.appcompat:appcompat:1.7.0")
}Feature-modules با ماژول پایه از طریق Navigation Component و رابطهای مشترک تعامل دارند. کامپوننت ناوبری از لینکهای عمیق مستقیماً در feature-modules پشتیبانی میکند که به برنامههای instant اجازه میدهد URLها را پردازش کنند. برای تبادل داده، feature-modules میتوانند از ViewModel مشترک، سرویسهای مکانیاب (Dagger/Hilt) یا گذرگاه رویداد استفاده کنند. ماژول پایه گراف ناوبری را اعلام میکند و هر feature-module destination خود را ثبت میکند.
محدودیتهای اندازه برنامههای instant — بحرانیترین محدودیت فنی. اندازه کل دانلود (ماژول پایه + feature-modules لازم) نباید از ۱۰ مگابایت تجاوز کند. برای اولین اجرا، یک feature-module همراه با پایه نباید بیش از ۴ مگابایت باشد تا راهاندازی در کمتر از ۲ ثانیه تضمین شود. تجاوز از محدودیتها منجر به خطاهای دانلود و از دست دادن کاربران میشود.
| روش بهینهسازی | صرفهجویی | پیادهسازی |
|---|---|---|
| فشردهسازی منابع | ۲۰–۴۰٪ | shrinkResources = true + resConfigs برای فیلتر کردن زبانها |
| فشردهسازی کد (R8) | ۳۰–۵۰٪ | minifyEnabled = true با قوانین ProGuard برای انتشار |
| بارگذاری ناهمگام | متغیر | بارگذاری تصاویر پس از راهاندازی، نه درون ماژول |
| تصاویر WebP | ۲۵–۳۵٪ | تبدیل PNG/JPEG به WebP (کیفیت ۸۵–۹۰٪) |
| تجزیه ماژولها | ماژول به ماژول | feature-modules کوچک — کاربر فقط مورد نیاز را دانلود میکند |
| Android App Bundle | متغیر | AAB فقط منابع مربوط به دستگاه خاص را تحویل میدهد |
ابزارهای تحلیل اندازه: APK Analyzer در Android Studio (برای .apk) و bundletool (برای .aab). Google Play Console گزارش «Instant App Size Report» با اندازههای دانلود برای هر پیکربندی دستگاه ارائه میدهد. در CI ارزش افزودن بررسی بودجه اندازه را دارد — اگر bundle اولیه از ۸ مگابایت تجاوز کند، بیلد باید رد شود.
لینکهای عمیق برنامههای instant — URLهای HTTP/HTTPS هستند که برنامه instant را مستقیماً راهاندازی میکنند. وقتی کاربر روی لینکی در وبسایت، تبلیغات یا شبکههای اجتماعی کلیک میکند، Android بررسی میکند که آیا برنامه instant آن الگوی URL را پردازش میکند یا خیر. اگر بله — ماژول برنامه instant دانلود و اجرا میشود و کاربر به جای صفحه وب موبایل، محتوای بومی را میبیند.
// AndroidManifest.xml — پردازش لینکهای عمیق در feature-module
<activity
android:name=".CatalogActivity"
android:excludeFromRecents="true">
<intent-filter
android:autoVerify="true">
<action
android:name="android.intent.action.VIEW" />
<category
android:name="android.intent.category.DEFAULT" />
<category
android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="www.example.com"
android:pathPrefix="/catalog" />
</intent-filter>
<!-- مورد نیاز برای برنامههای instant -->
<meta-data
android:name="default-url"
android:value="https://www.example.com/catalog" />
</activity>تأیید لینکهای عمیق از طریق Digital Asset Links انجام میشود — یک فایل JSON که در آدرس https://yoursite/.well-known/assetlinks.json منتشر میشود. این تأیید میکند که مالک وبسایت برنامه Android را کنترل میکند. بدون تأیید، لینکها در مرورگر باز میشوند، نه در برنامه instant. Google Search Console به آزمایش و بررسی پیکربندی لینکهای عمیق برای نمایهسازی برنامههای instant کمک میکند.
برنامههای instant بیشترین کارایی را دارند در سناریوهایی که کاربر میخواهد بدون تعهد، ارزش فوری دریافت کند: خرید (مشاهده فوری کاتالوگ)، سفر (جستجوی بلیط هواپیما بدون نصب)، بازیها (امتحان مرحله)، بلیط (خرید با ۳ کلیک)، تحویل غذا (انتخاب منو و سفارش) و ابزارهای کاربردی (ماشین حساب، مترجم، اسکنر بارکد). الگوی کلی — یک تجربه متمرکز و هدفمند که برای عملکرد کامل به نصب تبدیل میشود.
مناسب نیست برای: برنامههای با سرویسهای پسزمینه (پیامرسانها، ردیابهای تناسب اندام)، برنامههای با راهاندازی پیچیده (بانکداری، پروندههای پزشکی) یا مواردی که نسخه instant نمیتواند ارزش قابل توجهی ارائه دهد (ویرایشگرهای ویدئو، بستههای اداری). دادههای Google نشان میدهد که بازیها، تجارت الکترونیک و سفر بالاترین نرخ تبدیل از instant به نصب را دارند — اغلب بیش از ۳۰٪.
سوالات متداول
محدودیت برنامههای instant — ۱۰ مگابایت برای دانلود کل (پایه + feature-modules). Google توصیه میکند اولین feature-module را در محدوده ۴ مگابایت برای راهاندازی در کمتر از ۲ ثانیه نگه دارید. محدودیتها هنگام انتشار بررسی میشوند — Google Play Console بیلدهای بیش از حد را رد میکند.
بله. برنامههای instant دسترسی کامل به Android API از جمله دوربین، GPS، بلوتوث، NFC و حسگرها دارند — مانند برنامههای نصبشده. تنها محدودیت: برخی مجوزهای حساس (SMS، تماسها، مخاطبین) تا نصب نسخه کامل در دسترس نیستند.
برنامههای instant — برنامههای بومی Android (Kotlin/Java) هستند که بدون نصب کار میکنند. PWA — برنامههای وب با Service Workers هستند. برنامههای instant دسترسی کامل به APIهای بومی و عملکرد بهتر دارند، اما فقط روی Android کار میکنند. PWA روی همه پلتفرمها (iOS، Android، desktop) کار میکنند، اما دسترسی محدودی به سختافزار دارند، به ویژه در iOS.
خیر. یک پایگاه کد به هر دو نسخه خدمات میدهد. Feature-modules در مانیفست به عنوان instant-ready علامتگذاری میشوند و ماژول پایه شامل کد مشترک است. Google Play فقط آنچه لازم است را تحویل میدهد. برای بررسی محیط میتوان از InstantApps.isInstantApp() استفاده کرد و در صورت لزوم رفتار را تغییر داد.
برای انتشار نیاز است: Android App Bundle (.aab) با feature-modules آماده instant، حساب Google Play Console با دسترسی به برنامههای instant و بیلد instant امضاشده. بخش «Instant Apps» در Play Console انتشارات، تأیید لینکهای عمیق و بررسی اندازه را مدیریت میکند. فرآیند بررسی برای برنامههای instant از فهرست اصلی برنامهها جدا است.
Google Play Instant در تمام دستگاههای با Android 5.0 (API 21) و بالاتر که Google Play Store روی آنها نصب است، پشتیبانی میشود. تا سال ۲۰۲۶، این بیش از ۹۵٪ دستگاههای فعال Android است. ممکن است تولیدکنندگان برای دستگاههای ارزانقیمت محدودیت اعمال کنند، اما در عمل پشتیبانی گسترده است.
بله. برنامههای instant از Google Play Billing برای خریدهای درونبرنامهای پشتیبانی میکنند. تبلیغات از طریق AdMob نیز کار میکند. با این حال، مدلهای اشتراک کمتر مؤثر هستند زیرا کاربر متعهد نیست — برای اشتراکها، درآمدزایی از طریق خریدهای یکباره یا تبلیغات با انتقال به نصب توصیه میشود.
آنچه باید به خاطر بسپارید
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید