به روزرسانی های بومی OTA با نمایشگاه EAS: راهنمای گام به گام و بهترین روشها

توسعه برنامه موبایل وارد دوره ای شده است که چابکی و سرعت آن مهم است. روشهای سنتی ، که برای ارسال نسخه های جدید به فروشگاه های برنامه برای بررسی و در انتظار بارگیری کاربر نیاز دارند ، می توانند منجر به تاخیرهای قابل توجهی شوند.
به روزرسانی های خارج از هوا (OTA) یک راه حل تحول آمیز را ارائه می دهد و به شما امکان می دهد تغییرات کد را مستقیماً به دستگاه های کاربران مانند اصلاحات ضروری ، پیشرفت رابط کاربری و ویژگی های جدید فشار دهید ، از این طریق باعث کاهش خرابی و تقویت تجربه کلی کاربر می شود.
در این مقاله ، ما به چگونگی کار به روزرسانی های OTA ، بحث در مورد مزایا و چالش های آنها پرداختیم و یک راهنمای گام به گام در مورد اجرای آن در اکوسیستم نمایشگاه ارائه می دهیم.
تجزیه و تحلیل عمیق به روزرسانی های OTA: قابلیت ها ، مزایا و محدودیت ها
📌 قابلیت های به روزرسانی OTA
-
رفع اشکال فوری: به سرعت مسائل مهم را برطرف کرده و بدون انتظار برای فرآیند بررسی فروشگاه App ، رفع مشکلات را برطرف کنید. این کار خرابی را به حداقل می رساند و خطر تأثیر طولانی مدت کاربر را کاهش می دهد.
-
تحویل سریع ویژگی: ویژگی های جدید را در زمان واقعی بچرخانید ، یک چرخه توسعه چابک تر و جمع آوری بازخورد کاربر را زودتر انجام دهید. این روند تکراری را تسریع می کند و کیفیت کلی محصول را بهبود می بخشد.
-
Swift UI/UX ترفندها (JS Side): تنظیمات جزئی را در رابط کاربری انجام دهید یا مستقیماً در بسته JS تجربه کنید. کاربران این تغییرات را فوراً در راه اندازی برنامه بعدی خود دریافت می کنند ، و اطمینان حاصل می کنند که برنامه به روز می شود.
-
بهبود عملکرد فوری: پیشرفت های عملکرد را بلافاصله مستقر کنید ، و مستقیماً از تجربه کاربر نهایی بدون به روزرسانی دستی بهره مند شوید.
📌 مزایای به روزرسانی های OTA
-
سرعت و انعطاف پذیری: کاربران بلافاصله رفع و ویژگی های جدید را دریافت می کنند ، و می توانید هرچه بیشتر نیاز را به روز کنید ، و بدون انتظار برای بررسی فروشگاه های برنامه ، محصول خود را به طور مداوم بهبود می بخشید.
-
تجربه کاربر پیشرفته: با به روزرسانی های OTA ، کاربران همیشه آخرین نسخه برنامه شما را دارند. نیازی به انجام هر کاری نیست ، که این تجربه را صاف و سازگار نگه می دارد.
-
مقرون به صرفه: با به حداقل رساندن نیاز به ارسال های مکرر فروشگاه های برنامه ، شما در وقت ، پول و منابع صرفه جویی می کنید ، شما را آزاد می کنید تا در ایجاد چیزهای بهتر تمرکز کنید.
-
خرابی به حداقل رساندن: این به روزرسانی ها در پس زمینه سکوت اتفاق می افتد! بنابراین کاربران می توانند بدون وقفه ، استفاده از برنامه را ادامه دهند و دفعه بعد که برنامه را باز می کنند ، پیشرفت ها را مشاهده می کنند.
📌 محدودیت های به روزرسانی OTA
-
محدودیت های کد بومی: در حالی که به روزرسانی های OTA برای JavaScript و دارایی بسیار عالی است ، هرگونه تغییر که قسمت های بومی برنامه شما را لمس می کند ، هنوز هم نیاز به بروزرسانی کامل از طریق فروشگاه برنامه دارد.
-
پیچیدگی در Rollback: در حالی که فشار به روزرسانی ها سریع است ، بازگشت به نسخه قبلی با OTA می تواند در مقایسه با به روزرسانی های معمولی فروشگاه برنامه پیچیده تر باشد. کنترل نسخه مناسب برای کاهش این خطر ضروری است.
-
راه اندازی اولیه سربار: به روزرسانی های OTA در وهله اول ، تنظیمات دقیق و دانش لازم را انجام می دهد. راه اندازی اولیه می تواند زمان آور باشد و ممکن است برای صاف نگه داشتن روند به روزرسانی نیاز به نگهداری مداوم داشته باشد.
-
کنترل محدود بر زمان به روزرسانی کاربر: از آنجا که به روزرسانی های OTA در راه اندازی برنامه بعدی اعمال می شود ، ممکن است کاربران برای مدتی از نسخه قدیمی استفاده کنند ، که برای رفع فوری ایده آل نیست.
-
موارد شبکه: تحویل موفقیت آمیز به روزرسانی های OTA به اتصال شبکه قابل اعتماد بستگی دارد. اگر شبکه لکه دار باشد ، ممکن است به روزرسانی ها به تأخیر بیفتد یا بارگیری شود و منجر به یک تجربه متناقض شود.
-
امنیت مهم است: در حالی که به روزرسانی های OTA با فعال کردن استقرار سریع پچ ، امنیت را تقویت می کنند ، آنها همچنین به اقدامات امنیتی قوی نیاز دارند تا اطمینان حاصل شود که فرایند بروزرسانی به خطر نمی افتد.
به روزرسانی EAS را پیکربندی کنید
پیش نیازها:
1- یک حساب کاربری نمایشگاه
2- مطمئناً پروژه بومی React شما.
3- اگر پروژه شما یک بومی Bare React است ، باید از Expo CLI استفاده کند و پیکربندی Metro Expo را گسترش دهد. 👉🏻 نصب راهنمای ماژول های نمایشگاه.
4- پروژه شما باید به جای RegisterComponent از عملکرد RegisterRootComponent استفاده کند.
اکنون ، این مراحل را برای تنظیم به روزرسانی EAS (EXPO Application) دنبال کنید:
1- به روزرسانی EAS را تنظیم کنید
آخرین EAS CLI را نصب کنید
EAS CLI برنامه خط فرمان است که شما برای تعامل با خدمات EAS از ترمینال خود استفاده خواهید کرد. آن را در سطح جهانی نصب کنید:
npm install --global eas-cli
وارد حساب نمایشگاه خود شوید
اگر قبلاً با استفاده از Expo CLI به یک حساب Expo وارد شده اید ، می توانید از این مرحله پرش کنید. اگر نیستید ، دستور زیر را برای ورود به سیستم اجرا کنید:
- eas login
// then check whether you are logged:
- eas whoami
پروژه خود را پیکربندی کنید
با اجرای برنامه خود به دایرکتوری پروژه خود بروید ، به روزرسانی EAS را برای پروژه خود آغاز کنید:
eas update:configure
این دستور شما را به روز می کند app.json
پرونده با runtimeVersion
وت updates.url
خواص ، و اضافه کردن extra.eas.projectId
اگر پروژه شما قبلاً از خدمات EAS استفاده نمی کرد ، زمینه را انجام داد.
تغییرات زیر را در پروژه های بومی خود مشاهده خواهید کرد:
➡ اندرویدی
در داخل android/app/src/main/AndroidManifest.xml
پرونده ، موارد اضافی زیر را مشاهده خواهید کرد:
در EXPO_UPDATE_URL
ارزش باید حاوی شناسه پروژه شما باشد.
درون android/app/src/main/res/values/strings.xml
، شما خواهید دید expo_runtime_version
ورود رشته در شی منابع:
MyApp
+ 1.0.0
➡ iOS
درون ios/project-name/Supporting/Expo.plist
، موارد اضافی زیر را مشاهده خواهید کرد:
EXUpdatesRuntimeVersion
1.0.0
EXUpdatesURL
https://u.expo.dev/your-project-id
در EXUpdatesURL
ارزش باید حاوی شناسه پروژه شما باشد.
2. پیکربندی یک کانال
به صورت دستی
اگر ترجیح می دهید از EAS BUILD برای پیکربندی کانال استفاده نکنید ، می توانید با به روزرسانی هر دو خود ، کانال را به صورت دستی تنظیم کنید androidmanifest.xml وت expo.plist پرونده ها
تنظیمات اندرویدی
در AndroidManifest.xml (واقع در Android/App/SRC/Main/AndroidManifest.xml) خود ، برچسب متا داده های زیر را اضافه کنید:
<!--
This meta-data tag configures the Expo Updates module.
It tells the app to include a custom request header ("expo-channel-name")
with every update check, ensuring that the correct update channel is used.
-->
<meta-data android:name="expo.modules.updates.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY" android:value="{"expo-channel-name":"your-channel-name"}"/>
این خط کانال سفارشی را تنظیم می کند (“نام کانال شما” را با نام کانال واقعی خود جایگزین کنید) که برنامه هنگام بررسی به روزرسانی ها از آن استفاده می کند.
تنظیمات iOS
برای iOS ، فایل expo.plist خود را (واقع در iOS/name-name/پشتیبانی/expo.plist) خود به روز کنید:
<!--
This configuration in Expo.plist sets up the request headers for updates.
The key "expo-channel-name" is set to "your-channel-name", ensuring that the app
contacts the correct update channel on your server.
-->
<key>EXUpdatesRequestHeaderskey>
<dict>
<key>expo-channel-namekey>
<string>your-channel-namestring>
dict>
این تضمین می کند که ماژول به روزرسانی Expo در iOS از کانال مشخص شده استفاده می کند.
➡ جایگزین: پیکربندی از طریق app.json
اگر ترجیح می دهید Expo به طور خودکار این پیکربندی را تولید کند ، می توانید ویژگی RequestHreaders را در App.json خود تنظیم کنید. به عنوان مثال:
{
"expo": {
"updates": {
// The URL where your app will fetch the OTA update manifest.
// This is an Expo hosted URL
"url": " ...",
// Enables or disables OTA updates for the app.
// Set to true to allow updates; false will disable OTA functionality.
"enabled": true,
// Specifies the amount of time (in milliseconds) the app should wait
// for an update to be downloaded before falling back to a cached version.
// A value of 0 means the app will immediately use the cached update if available.
"fallbackToCacheTimeout": 0,
// Determines when the app checks for new updates.
// "ON_LOAD" instructs the app to check for updates every time it launches.
"checkAutomatically": "ON_LOAD",
// Additional HTTP headers that will be sent when the app requests an update.
// In this case, the "expo-channel-name" header is used to designate the update channel,
// allowing you to manage different release streams (e.g., test vs. production).
"requestHeaders": {
"expo-channel-name": "your-channel-name"
}
}
}
}
توضیح:
- “URL” به نقطه پایانی شما اشاره می کند.
- “FallbackTocacheTimeOut”: 0 تضمین می کند که اگر به روزرسانی بلافاصله در دسترس نباشد ، برنامه صبر نمی کند.
- “checkautomatical”: “on_load” به برنامه دستور می دهد هر بار که راه اندازی می شود ، به روزرسانی ها را بررسی کند.
- خاصیت “درخواست های” به شما امکان می دهد یک کانال را مشخص کنید (به عنوان مثال ، تست یا تولید).
سپس اجرا کنید:
npx expo prebuild
این دستور پیکربندی مناسب را به androidmanifest.xml و expo.plist تزریق می کند.
توجه: به طور معمول ، شما ممکن است از دو کانال استفاده کنید: آزمایش و تولید.
3. مرجع فرمان به روزرسانی EAS
در زیر لیستی از دستورات متداول برای مدیریت به روزرسانی ها ، کانال ها و شاخه ها آورده شده است.
به روزرسانی ها را مدیریت کنید
بروزرسانی جدید را ایجاد و منتشر کنید:
eas update --branch [branch-name] --message "Your update message"
مثال:
eas update --branch version-1.0 --message "Fixes typo"
مشاهده یک به روزرسانی خاص:
eas update:view [update-group-id]
بازپرداخت به روزرسانی
بازگشت به بروزرسانی قبلی:
eas update:rollback
یک به روزرسانی قبلی را در یک شعبه دوباره منتشر کنید
مجدداً توسط گروه شناسه گروه:
eas update:republish --group [update-group-id]
مجدداً توسط شعبه:
eas update:republish --branch [branch-name]
مثالها:
eas update:republish --group dbfd479f-d981-44ce-8774-f2fbcc386aa
eas update:republish --branch version-1.0
کانال ها و شاخه ها را مدیریت کنید
در به روزرسانی EAS ، a کانال به عنوان “خط لوله توزیع” عمل می کند که به روزرسانی ها را به برنامه شما ارائه می دهد ، در حالی که یک شعبه حالت یا جریان نسخه را نشان می دهد – مانند تست یا تولیداز کدام به روزرسانی ها تهیه می شوند.
با پیوند یک شعبه به یک کانال ، شما کنترل می کنید که به روزرسانی ها به گروه های خاص کاربر می رسد. به عنوان مثال:
- بوها شاخه تست متصل به یک کانال آزمایش به روزرسانی های داخلی یا بتا را ارائه می دهد.
- بوها شاخه تولید گره خورده به یک کانال تولید ، به روزرسانی هایی را برای کاربران زنده ارسال می کند. این جدایی تضمین می کند که تغییرات تجربی محدود به محیط های آزمایش ، محافظت از مخاطبان تولید شما در عین حال امکان تکرار سریع و بازخورد در توسعه است.
کانال ها:
مشاهده یک کانال:
eas channel:view production
لیست همه کانال ها:
eas channel:list
شاخه ها:
لیست همه شاخه ها:
eas branch:list
یک شاخه خاص و به روزرسانی های آن را مشاهده کنید:
eas branch:view version-1.0
یک شاخه را حذف کنید:
eas branch:delete [branch-name]
تغییر نام یک شاخه:
eas branch:rename --from version-1.0 --to version-1.0-new
4. برای بررسی به روزرسانی ها ، قلاب اضافه کنید
از زمان تنظیم اختیاری است "checkAutomatically": "ON_LOAD",
بشر
import { useEffect } from "react";
import * as Updates from "expo-updates";
export function useisHasUpdates(): void {
useEffect(() => {
async function update(): Promise<void> {
try {
const { isAvailable } = await Updates.checkForUpdateAsync();
if (isAvailable) {
await Updates.fetchUpdateAsync();
}
} catch {
console.error("Error; checking for updates");
}
}
if (!__DEV__) {
update();
}
}, []);
}
5. برای پروژه خود یک ساخت ایجاد کنید
با نسخه Runtime و نام کانال ، APK برای Android و TestFlight برای iOS یک تولید تولید ایجاد کنید.
6. در محلی تغییراتی ایجاد کنید
پس از ایجاد ساخت ، شما آماده تکرار پروژه هستید. هرگونه تغییر دلخواه در JS ، یک ظاهر طراحی شده یا دارایی های تصویر خود را ایجاد کنید.
7. به روزرسانی را منتشر کنید
از eas update
همانطور که قبلاً صحبت کردیم ، فرمان را برای کانال و یک پیام برای توصیف بروزرسانی مشخص کنید.
📱 اما انتشار به روزرسانی چگونه کار می کند؟
وقتی به روزرسانی را با eas update
فرمان ، یک بسته به روزرسانی جدید ایجاد می کند و آن را در سرورهای EAS بارگذاری می کند.
سپس شعبه صحیح را برای انتشار یک به روزرسانی جدید با توجه به نام کانال پیدا می کند. این شبیه به نحوه کار GIT است ، جایی که هر تعهد در یک شعبه GIT است.
8. آزمون
برای بارگیری و استفاده از بروزرسانی می توانید به صورت دستی به روزرسانی را با بسته شدن نیرو و بازگشایی مجدد برنامه خود تا دو بار آزمایش کنید.
به روزرسانی های ساختهای غیر توسعه به طور خودکار هنگام شروع برنامه به طور خودکار در پس زمینه بارگیری می شوند و درخواست هرگونه به روزرسانی جدید را ارائه می دهند. این بروزرسانی پس از بارگیری و برنامه ریزی مجدد برنامه اعمال می شود.
و voilà ، شما اکنون تمام شده اید !! 🥂
در بعضی موارد ، کنترل بیشتری در مورد نحوه ارسال به روزرسانی به یک برنامه ممکن است مورد نیاز باشد ، و یکی از گزینه ها اجرای یک سرور به روزرسانی سفارشی است که به منظور ارائه بروزرسانی و دارایی ها به مشخصات پایبند است. 👇🏻
یک سرور به روزرسانی نمایشگاه سفارشی را پیکربندی کنید
برای به دست آوردن کنترل کامل بر توزیع به روزرسانی برنامه خود می توانید سرور به روزرسانی های سفارشی خود را تنظیم کنید. در زیر مراحل اجرای:
مراحل اجرا
- یک سرور سفارشی ایجاد کنید و نقاط پایانی را به روز کنید
پروژه را اولیه کنید:
مخزن رسمی برای سرور به روزرسانی نمایشگاه سفارشی:
git clone https://github.com/expo/custom-expo-updates-server.git
cd custom-expo-updates-server
این repo حاوی یک اجرای سرور اساسی است که با Next.js. ساخته شده است. نقاط پایانی API کلیدی در:
- صفحات/API/مانیفست. js – تولید پرونده مانیفست را کنترل می کند.
- صفحات/API/ASSETS.JS – در خدمت بسته های دارایی.
این نقاط پایانی به پروتکل به روزرسانی نمایشگاه پایبند هستند و به برنامه شما این امکان را می دهد تا آخرین بسته های بروزرسانی را واگذار کند.
- امضای کد به روزرسانی EAS را تنظیم کنید
💡 امضای کد:
برای اطمینان از امنیت و تأیید به روزرسانی های خود ، با دنبال کردن مستندات نمایشگاه در امضای کد به روزرسانی EAS ، امضای کد را تنظیم کنید.
این شامل تولید گواهی امضای و پیکربندی سرور و برنامه شما برای استفاده از آن است که از بسته های بروزرسانی شما در برابر دستکاری محافظت می کند.
💡 بارگذاری اعتبارنامه به صورت دستی
برای بارگذاری اعتبار از پرونده های محلی خود. json و آنها را توسط EAS مدیریت کنید ، این مراحل را دنبال کنید:
- ترمینال خود را در فهرست اصلی پروژه خود باز کنید.
- دستور را اجرا کنید:
eas credentials
- در صورت درخواست ، پلت فرم مورد نظر را انتخاب کنید.
- گزینه را انتخاب کنید: “Credentials.json: اعتبارنامه بارگذاری/بارگیری بین سرورهای EAS و JSON محلی خود”.
- سپس انتخاب کنید: “اعتبارنامه ها را از Credentials.Json به EAS” بارگذاری کنید.
- در صورت لزوم با اجرای دوباره دستور ، فرآیند را برای یک سکوی دیگر تکرار کنید.
این رویکرد تضمین می کند که اعتبار شما با خیال راحت توسط EAS مدیریت می شود و روند ساخت و استقرار شما را ساده تر می کند.
- برنامه موبایل بومی React خود را پیکربندی کنید
- پیکربندی را در App.json به روز کنید
{
"expo": {
"updates": {
// This can be an Expo hosted URL or your custom server's endpoint.
"url": "https://your-custom-server.com/manifest/",
"enabled": true,
"fallbackToCacheTimeout": 0,
"checkAutomatically": "ON_LOAD",
// Path to the code signing certificate that is used to verify the authenticity
// of the OTA update bundle. This file should be placed in your project’s directory.
"codeSigningCertificate": "./certs/certificate.pem",
// Metadata related to the code signing process.
// "keyid" should correspond to the identifier of the signing key.
// "alg" specifies the cryptographic algorithm used for signing (e.g., RSA with SHA-256).
"codeSigningMetadata": {
"keyid": "main",
"alg": "rsa-v1_5-sha256"
},
"requestHeaders": {
"expo-channel-name": "channel"
}
}
}
}
توضیح:
- قسمتهای امضای کد به روزرسانی های شما را تضمین می کنند.
نکته: اگر پس از تنظیم ویژگی RequestHeaders ، Prebuild NPX Expo را اجرا کنید ، پیکربندی لازم به طور خودکار به AndroidManifest.xml و expo.plist تزریق می شود.
- برای بارگذاری بسته های بروزرسانی اسکریپت ها را اضافه کنید
{
"scripts": {
"expo-publish-alt": "node ./scripts/publish.js",
"expo-rollback-alt": "node ./scripts/rollback.js"
}
}
این اسکریپت ها بارگذاری بسته های جدید به روزرسانی را به سرور سفارشی شما انجام می دهند. در این تنظیم ، در حالی که اسکریپت انتشار به درستی کار می کرد ، Rollout (توزیع به روزرسانی تدریجی) در سمت سرور اجرا نشد. پس از درک کانال ها و مدیریت شعب ، ممکن است در صورتی که بهتر باشد به گردش کار شما متناسب باشد ، به بروزرسانی EAS مهاجرت کنید.
💾 تنظیم یک سرور به روزرسانی های نمایشگاه سفارشی به شما کنترل گرانول را بر توزیع به روزرسانی ، امضای کد و استراتژی های چرخشی می دهد. با پیکربندی دستی هم سرور و هم برنامه React Native خود ، می توانید فرآیند به روزرسانی OTA را مطابق با نیازهای خاص خود تنظیم کنید. با این حال ، هنگامی که رویکرد خود را اصلاح می کنید ، ممکن است متوجه شوید که قابلیت های کانال و شعبه ارائه شده توسط EAS Update یک راه حل ساده تر ارائه می دهند – به ویژه اگر تصمیم دارید از ساخت EAS استفاده نکنید.
📚 منابع اضافی:
👉 اسناد و مدارک به روزرسانی Expo
👉 اسناد به روزرسانی EXTO EAS
bood بسته های بروزرسانی خود را با دنبال کردن بهترین شیوه ها برای امضای کد نمایشگاه برای به روزرسانی های OTA ایمن کنید
👉 نمایشگاه سفارشی مخزن سرور را به روز می کند
خلاصه
به روزرسانی های خارج از هوا (OTA) از طریق به روزرسانی EAS EXPO ، با فعال کردن استقرار سریع رفع اشکال ، بهینه سازی عملکرد و ویژگی های جدید ، با عبور از تاخیر در بررسی های سنتی فروشگاه برنامه ، توسعه برنامه موبایل را متحول می کند. با دنبال کردن بهترین شیوه ها ، مانند مدیریت کانال و شعبه مؤثر ، امضای کد امن و آزمایش دقیق ، می توانید محدودیت های OTA را کاهش داده و یک تجربه کاربر با کیفیت و با کیفیت را ارائه دهید.
ساختمان مبارک! راه حل های عالی تجربیات استثنایی. 🚀