Referensi REACT Native Client SDK API
Penting
Visual Studio App Center dijadwalkan untuk dihentikan pada 31 Maret 2025. Meskipun Anda dapat terus menggunakan Visual Studio App Center hingga sepenuhnya dihentikan, ada beberapa alternatif yang direkomendasikan yang mungkin Anda pertimbangkan untuk bermigrasi.
Pelajari selengkapnya tentang garis waktu dukungan dan alternatif.
Plugin CodePush terdiri dari dua komponen:
Modul JavaScript, yang dapat diimpor/diperlukan, dan memungkinkan aplikasi berinteraksi dengan layanan selama runtime (misalnya memeriksa pembaruan, memeriksa metadata tentang pembaruan aplikasi yang sedang berjalan).
API asli (Objective-C dan Java) yang memungkinkan host aplikasi React Native melakukan bootstrap sendiri dengan lokasi bundel JS yang tepat.
Bagian berikut menjelaskan bentuk dan perilaku API ini secara rinci:
Referensi API JavaScript
Ketika Anda memerlukan react-native-code-push
, objek modul menyediakan metode tingkat atas berikut selain dekorator komponen tingkat akar:
allowRestart: Mulai ulang terprogram Reallows terjadi sebagai akibat dari pembaruan yang diinstal, dan secara opsional, segera menghidupkan ulang aplikasi jika pembaruan yang tertunda telah mencoba memulai ulang aplikasi saat menghidupkan ulang tidak diizinkan. Metode ini adalah API tingkat lanjut dan hanya diperlukan jika aplikasi Anda secara eksplisit tidak diizinkan memulai ulang melalui
disallowRestart
metode .checkForUpdate: Menanyakan layanan CodePush apakah penyebaran aplikasi yang dikonfigurasi memiliki pembaruan yang tersedia.
disallowRestart: Melarang restart terprogram untuk sementara terjadi sebagai akibat dari pembaruan CodePush yang diinstal. Metode ini adalah API tingkat lanjut, dan berguna ketika komponen dalam aplikasi Anda (misalnya proses onboarding) perlu memastikan bahwa tidak ada gangguan pengguna akhir yang dapat terjadi selama masa pakainya.
getCurrentPackage: Mengambil metadata tentang pembaruan yang saat ini diinstal (seperti deskripsi, waktu penginstalan, ukuran).
Catatan
v1.10.3-beta
Pada modul CodePush,getCurrentPackage
tidak digunakan lagi demigetUpdateMetadata
*.getUpdateMetadata: Mengambil metadata untuk pembaruan yang diinstal (seperti deskripsi, wajib).
notifyAppReady: Memberi tahu runtime CodePush bahwa pembaruan yang diinstal dianggap berhasil. Jika Anda memeriksa dan menginstal pembaruan secara manual (yang tidak menggunakan metode sinkronisasi untuk menangani semuanya untuk Anda), maka metode ini HARUS dipanggil; jika tidak, CodePush akan memperlakukan pembaruan sebagai gagal dan kembali ke versi sebelumnya saat aplikasi berikutnya dimulai ulang.
restartApp: Segera memulai ulang aplikasi. Jika ada pembaruan yang tertunda, pembaruan akan segera ditampilkan kepada pengguna akhir. Jika tidak, memanggil metode ini memiliki perilaku yang sama dengan pengguna akhir membunuh dan memulai ulang proses.
sync: Memungkinkan pemeriksaan pembaruan, mengunduhnya dan menginstalnya, semuanya dengan satu panggilan. Kecuali Anda memerlukan UI atau perilaku kustom, kami menyarankan sebagian besar pengembang untuk menggunakan metode ini saat mengintegrasikan CodePush ke dalam aplikasi mereka
codePush
// Wrapper function
codePush(rootComponent: React.Component): React.Component;
codePush(options: CodePushOptions)(rootComponent: React.Component): React.Component;
// Decorator; Requires ES7 support
@codePush
@codePush(options: CodePushOptions)
Digunakan untuk membungkus komponen React di dalam komponen React "urutan yang lebih tinggi" yang mengetahui cara menyinkronkan bundel JavaScript dan aset gambar aplikasi Anda saat dipasang. Secara internal, komponen berurutan lebih tinggi memanggil sync
di dalam handel siklus hidupnya componentDidMount
, yang menjalankan pemeriksaan pembaruan, mengunduh pembaruan jika ada, dan menginstal pembaruan untuk Anda.
Dekorator ini menyediakan dukungan untuk memungkinkan Anda menyesuaikan perilakunya agar dengan mudah mengaktifkan aplikasi dengan persyaratan yang berbeda. Di bawah ini adalah beberapa contoh cara Anda dapat menggunakannya (Anda dapat memilih satu atau bahkan menggunakan kombinasi):
Sinkronisasi senyap pada mulai aplikasi (perilaku default paling sederhana). Aplikasi Anda akan mengunduh pembaruan yang tersedia secara otomatis, dan menerapkannya di lain waktu saat aplikasi dimulai ulang (seperti OS atau pengguna akhir mematikannya, atau perangkat dimulai ulang). Dengan cara ini, seluruh pengalaman pembaruan "diam" untuk pengguna akhir, karena mereka tidak melihat permintaan pembaruan atau mulai ulang aplikasi "sintetis".
// Fully silent update that keeps the app in // sync with the server, without ever // interrupting the end user class MyApp extends Component {} MyApp = codePush(MyApp);
Sinkronisasi senyap setiap kali aplikasi dilanjutkan. Sama seperti 1, kecuali kami memeriksa pembaruan, atau menerapkan pembaruan jika ada setiap kali aplikasi kembali ke latar depan setelah "di latar belakang".
// Sync for updates every time the app resumes. class MyApp extends Component {} MyApp = codePush({ checkFrequency: codePush.CheckFrequency.ON_APP_RESUME, installMode: codePush.InstallMode.ON_NEXT_RESUME })(MyApp);
Interaktif. Saat pembaruan tersedia, minta izin kepada pengguna akhir sebelum mengunduhnya, lalu segera terapkan pembaruan. Jika pembaruan dirilis menggunakan
mandatory
bendera , pengguna akhir masih akan diberi tahu tentang pembaruan, tetapi mereka tidak akan memiliki pilihan untuk mengabaikannya.// Active update that lets the end user know // about each update, and displays it to them // immediately after downloading it class MyApp extends Component {} MyApp = codePush({ updateDialog: true, installMode: codePush.InstallMode.IMMEDIATE })(MyApp);
Kemajuan log/tampilan. Saat aplikasi menyinkronkan dengan server untuk pembaruan, gunakan
codePushStatusDidChange
ataucodePushDownloadDidProgress
kait peristiwa untuk mencatat berbagai tahap proses ini, atau bahkan menampilkan bilah kemajuan kepada pengguna.// Make use of the event hooks to keep track of // the different stages of the sync process. class MyApp extends Component { codePushStatusDidChange(status) { switch(status) { case codePush.SyncStatus.CHECKING_FOR_UPDATE: console.log("Checking for updates."); break; case codePush.SyncStatus.DOWNLOADING_PACKAGE: console.log("Downloading package."); break; case codePush.SyncStatus.INSTALLING_UPDATE: console.log("Installing update."); break; case codePush.SyncStatus.UP_TO_DATE: console.log("Up-to-date."); break; case codePush.SyncStatus.UPDATE_INSTALLED: console.log("Update installed."); break; } } codePushDownloadDidProgress(progress) { console.log(progress.receivedBytes + " of " + progress.totalBytes + " received."); } } MyApp = codePush(MyApp);
CodePushOptions
Dekorator codePush
menerima objek "opsi" yang memungkinkan Anda menyesuaikan banyak aspek perilaku default yang disebutkan di atas:
checkFrequency (codePush.CheckFrequency) - Menentukan kapan Anda ingin memeriksa pembaruan. Default ke
codePush.CheckFrequency.ON_APP_START
.CheckFrequency
Lihat referensi enum untuk deskripsi opsi yang tersedia dan apa yang mereka lakukan.deploymentKey (String) - Menentukan kunci penyebaran yang ingin Anda kueri untuk pembaruan. Secara default, nilai ini berasal dari file Info.plist (iOS) dan file MainActivity.java (Android), tetapi opsi ini memungkinkan Anda mengambil alihnya dari sisi skrip jika Anda perlu menggunakan penyebaran yang berbeda secara dinamis.
installMode (codePush.InstallMode) - Menentukan kapan Anda ingin menginstal pembaruan opsional (yang tidak ditandai sebagai wajib). Default ke
codePush.InstallMode.ON_NEXT_RESTART
.InstallMode
Lihat referensi enum untuk deskripsi opsi yang tersedia dan apa yang mereka lakukan.mandatoryInstallMode (codePush.InstallMode) - Menentukan kapan Anda ingin menginstal pembaruan, yang ditandai sebagai wajib. Default ke
codePush.InstallMode.IMMEDIATE
.InstallMode
Lihat referensi enum untuk deskripsi opsi yang tersedia dan apa yang mereka lakukan.minimumBackgroundDuration (Angka) - Menentukan jumlah detik minimum agar aplikasi berada di latar belakang sebelum memulai ulang aplikasi. Properti ini hanya berlaku untuk pembaruan yang diinstal menggunakan
InstallMode.ON_NEXT_RESUME
atauInstallMode.ON_NEXT_SUSPEND
, dan dapat berguna untuk mendapatkan pembaruan Anda di depan pengguna akhir lebih cepat, tanpa terlalu mengganggu. Default ke0
, yang menerapkan pembaruan segera setelah resume, atau kecuali penangguhan aplikasi cukup lama untuk tidak menjadi masalah, namun lama di latar belakang.updateDialog (UpdateDialogOptions) - Objek "opsi" yang digunakan untuk menentukan apakah dialog konfirmasi harus ditampilkan kepada pengguna akhir saat pembaruan tersedia, dan jika demikian, string apa yang akan digunakan. Default ke
null
, yang menonaktifkan dialog. Mengatur ini ke nilai apa puntrue
akan mengaktifkan dialog dengan string default, dan meneruskan objek ke parameter ini memungkinkan pengaktifan dialog serta menimpa satu atau beberapa string default. Sebelum mengaktifkan opsi ini dalam aplikasi terdistribusi App Store, lihat catatan ini.Daftar berikut ini mewakili opsi yang tersedia dan defaultnya:
appendReleaseDescription (Boolean) - Menunjukkan apakah Anda ingin menambahkan deskripsi rilis yang tersedia ke pesan pemberitahuan, yang ditampilkan kepada pengguna akhir. Default ke
false
.descriptionPrefix (String) - Menunjukkan string yang ingin Anda awali deskripsi rilisnya, jika ada, saat menampilkan pemberitahuan pembaruan kepada pengguna akhir. Default ke
" Description: "
mandatoryContinueButtonLabel (String) - Teks yang digunakan untuk tombol yang harus ditekan pengguna akhir untuk menginstal pembaruan wajib. Default ke
"Continue"
.mandatoryUpdateMessage (String) - Teks yang digunakan sebagai isi pemberitahuan pembaruan, ketika pembaruan ditentukan sebagai wajib. Default ke
"An update is available that must be installed."
.optionalIgnoreButtonLabel (String) - Teks yang digunakan untuk tombol yang dapat ditekan pengguna akhir untuk mengabaikan pembaruan opsional yang tersedia. Default ke
"Ignore"
.opsionalInstallButtonLabel (String) - Teks yang digunakan untuk tombol yang dapat ditekan pengguna akhir untuk menginstal pembaruan opsional. Default ke
"Install"
.opsionalUpdateMessage (String) - Teks yang digunakan sebagai isi pemberitahuan pembaruan, saat pembaruan bersifat opsional. Default ke
"An update is available. Would you like to install it?"
.judul (String) - Teks yang digunakan sebagai header pemberitahuan pembaruan yang ditampilkan kepada pengguna akhir. Default ke
"Update available"
.
rollbackRetryOptions (RollbackRetryOptions) - Mekanisme coba lagi rollback memungkinkan aplikasi untuk mencoba menginstal ulang pembaruan yang sebelumnya digulung balik (dengan pembatasan yang ditentukan dalam opsi). Ini adalah objek "opsi" yang digunakan untuk menentukan apakah percobaan kembali harus terjadi, dan jika demikian, pengaturan apa yang akan digunakan untuk coba kembali. Ini default ke null, yang memiliki efek menonaktifkan mekanisme coba lagi. Mengatur ini ke nilai kebenaran apa pun akan memungkinkan mekanisme coba lagi dengan pengaturan default, dan meneruskan objek ke parameter ini memungkinkan pengaktifan coba lagi kembali serta menimpa satu atau beberapa nilai default.
Daftar berikut ini mewakili opsi yang tersedia dan defaultnya:
delayInHours (Number) - Menentukan waktu minimum dalam jam yang akan ditunggu aplikasi setelah pemutaran kembali terbaru sebelum mencoba menginstal ulang paket rolled-back yang sama. Tidak boleh kurang dari
0
. Bisa berupa nomor float. Default ke24
.maxRetryAttempts (Angka) - Menentukan jumlah maksimum upaya coba lagi yang dapat dilakukan aplikasi sebelum berhenti mencoba. Tidak boleh kurang dari
1
. Default ke1
.
codePushStatusDidChange (kait peristiwa)
Dipanggil ketika proses sinkronisasi berpindah dari satu tahap ke tahap lainnya dalam proses pembaruan keseluruhan. Hook peristiwa dipanggil dengan kode status yang mewakili status saat ini, dan dapat menjadi salah SyncStatus
satu nilai.
codePushDownloadDidProgress (event hook)
Dipanggil secara berkala ketika pembaruan yang tersedia sedang diunduh dari server CodePush. Metode ini dipanggil dengan DownloadProgress
objek, yang berisi dua properti berikut:
totalByte (Angka) - Jumlah total byte yang diharapkan diterima untuk pembaruan ini (itulah ukuran kumpulan file, yang berubah dari rilis sebelumnya).
receivedBytes (Number) - Jumlah byte yang diunduh sejauh ini, yang dapat digunakan untuk melacak kemajuan unduhan.
codePush.allowRestart
codePush.allowRestart(): void;
Reallows mulai ulang terprogram terjadi, yang akan ditolak karena panggilan sebelumnya ke disallowRestart
. Jika disallowRestart
tidak pernah dipanggil di tempat pertama, maka memanggil metode ini menghasilkan no-op.
Jika pembaruan CodePush saat ini tertunda, yang mencoba menghidupkan ulang aplikasi (misalnya digunakan InstallMode.IMMEDIATE
), tetapi diblokir karena disallowRestart
telah dipanggil, maka panggilan allowRestart
akan segera menghasilkan mulai ulang segera. Mulai ulang ini memungkinkan pembaruan diterapkan sesegera mungkin, tanpa mengganggu pengguna akhir selama alur kerja penting (misalnya proses onboarding).
Misalnya, panggilan allowRestart
akan memicu mulai ulang segera jika salah satu dari tiga skenario yang disebutkan dalam disallowRestart
dokumen terjadi setelah disallowRestart
dipanggil. Namun, panggilan allowRestart
tidak akan memicu hidupkan ulang jika poin berikut benar:
Tidak ada pembaruan CodePush yang diinstal sejak terakhir kali
disallowRestart
dipanggil, jadi, tidak perlu menghidupkan ulang.Saat ini ada pembaruan CodePush yang tertunda, tetapi diinstal melalui
InstallMode.ON_NEXT_RESTART
, sehingga mulai ulang terprogram tidak diperlukan.Saat ini ada pembaruan CodePush yang tertunda, tetapi diinstal melalui
InstallMode.ON_NEXT_RESUME
dan aplikasi belum dimasukkan ke latar belakang, jadi tidak perlu memulai ulang secara terprogram.Tidak ada panggilan untuk
restartApp
dilakukan sejak terakhir kalidisallowRestart
dipanggil.
Perilaku ini memastikan bahwa tidak ada hidupkan ulang yang akan dipicu sebagai akibat dari panggilan allowRestart
kecuali ada yang diminta secara eksplisit selama periode yang tidak diizinkan. Dengan cara ini, allowRestart
mirip dengan panggilan restartApp(true)
, kecuali yang pertama hanya akan memicu mulai ulang jika pembaruan yang saat ini tertunda ingin dimulai ulang, tetapi yang terakhir akan dimulai ulang selama pembaruan tertunda.
Lihat disallowRestart untuk contoh bagaimana metode ini dapat digunakan.
codePush.checkForUpdate
codePush.checkForUpdate(deploymentKey: String = null, handleBinaryVersionMismatchCallback: (update: RemotePackage) => void): Promise<RemotePackage>;
Mengkueri layanan CodePush untuk melihat apakah penyebaran aplikasi yang dikonfigurasi memiliki pembaruan yang tersedia. Secara default, ini akan menggunakan kunci penyebaran yang dikonfigurasi dalam file Info.plist (iOS), atau file MainActivity.java (Android), tetapi Anda dapat mengambil alihnya dengan menentukan nilai melalui parameter opsional deploymentKey
. Ini dapat berguna ketika Anda ingin secara dinamis "mengalihkan" pengguna ke penyebaran tertentu, seperti mengizinkan "akses awal" melalui telur paskah atau sakelar pengaturan pengguna.
Parameter handleBinaryVersionMismatchCallback
opsional kedua adalah fungsi panggilan balik opsional yang dapat digunakan untuk memberi tahu pengguna jika ada pembaruan biner.
Misalnya, pertimbangkan kasus penggunaan di mana versi biner yang saat ini diinstal adalah 1.0.1 dengan label (label pendorongan kode) v1. Kemudian kode asli diubah dalam siklus dev dan versi biner diperbarui ke 1.0.2. Saat pemeriksaan pembaruan codepush dipicu, kami mengabaikan pembaruan yang tidak cocok dengan versi biner (karena pembaruan tidak menargetkan ke versi biner aplikasi yang saat ini diinstal). Dalam hal ini, aplikasi yang diinstal (1.0.1) akan mengabaikan pembaruan yang menargetkan versi 1.0.2. Anda dapat menggunakan handleBinaryVersionMismatchCallback
untuk menyediakan kait untuk menangani situasi seperti itu.
Penting
Berhati-hatilah untuk menggunakan Pemberitahuan dalam panggilan balik ini jika Anda mengembangkan aplikasi iOS, karena proses peninjauan App Store : Aplikasi tidak boleh memaksa pengguna untuk menilai aplikasi, meninjau aplikasi, mengunduh aplikasi lain, atau tindakan serupa lainnya untuk mengakses fungsionalitas, konten, atau penggunaan aplikasi.
Metode ini mengembalikan Promise
, yang diselesaikan ke salah satu dari dua nilai yang mungkin:
null
jika tidak ada pembaruan yang tersedia. Hal ini dapat terjadi dalam skenario berikut:- Penyebaran yang dikonfigurasi tidak berisi rilis apa pun, jadi, tidak ada yang perlu diperbarui.
- Rilis terbaru dalam penyebaran yang dikonfigurasi menargetkan versi biner yang berbeda dari yang saat ini Anda jalankan (yang lebih lama atau yang lebih baru).
- Aplikasi yang sedang berjalan sudah memiliki rilis terbaru dari penyebaran yang dikonfigurasi, sehingga, tidak memerlukannya lagi.
- Rilis terbaru dalam penyebaran yang dikonfigurasi saat ini ditandai sebagai dinonaktifkan, sehingga tidak diizinkan untuk diunduh.
- Rilis terbaru dalam penyebaran yang dikonfigurasi berada dalam status "peluncuran aktif", dan perangkat yang meminta tidak termasuk dalam persentase pengguna yang memenuhi syarat untuk itu.
RemotePackage
Instans, yang mewakili pembaruan yang tersedia yang dapat diperiksa atau diunduh nanti.
Contoh Penggunaan:
codePush.checkForUpdate()
.then((update) => {
if (!update) {
console.log("The app is up to date!");
} else {
console.log("An update is available! Should we download it?");
}
});
codePush.disallowRestart
codePush.disallowRestart(): void;
Melarang mulai ulang terprogram untuk sementara waktu terjadi sebagai akibat dari salah satu skenario berikut:
Pembaruan CodePush diinstal menggunakan
InstallMode.IMMEDIATE
Pembaruan CodePush diinstal menggunakan
InstallMode.ON_NEXT_RESUME
dan aplikasi dilanjutkan dari latar belakang (secara opsional dibatasi olehminimumBackgroundDuration
properti)Metode
restartApp
ini dipanggilCatatan
Langkah 1 dan 2 secara efektif berfungsi dengan memanggil
restartApp
Anda, sehingga Anda dapat menganggapnyadisallowRestart
sebagai memblokir panggilan apa pun kerestartApp
, baik aplikasi Anda memanggilnya secara langsung atau tidak langsung.
Setelah memanggil metode ini, setiap panggilan ke sync
masih akan diizinkan untuk memeriksa pembaruan, mengunduhnya dan menginstalnya, tetapi upaya untuk menghidupkan ulang aplikasi akan diantrekan hingga allowRestart
dipanggil. Dengan cara ini, permintaan hidupkan ulang ditangkap dan dapat "dibersihkan" setiap kali Anda ingin mengizinkannya terjadi.
Ini adalah API tingkat lanjut, dan terutama berguna ketika komponen individual dalam aplikasi Anda (seperti proses onboarding) perlu memastikan bahwa tidak ada gangguan pengguna akhir yang dapat terjadi selama masa pakainya, sambil terus memungkinkan aplikasi untuk terus menyinkronkan dengan server CodePush dengan kecepatannya sendiri dan menggunakan mode penginstalan apa pun yang sesuai. Ini memiliki manfaat memungkinkan aplikasi untuk menemukan dan mengunduh pembaruan yang tersedia sesegera mungkin, sekaligus mencegah gangguan selama pengalaman pengguna akhir utama.
Sebagai alternatif, Anda juga dapat menggunakan InstallMode.ON_NEXT_RESTART
setiap kali memanggil sync
(yang tidak akan pernah mencoba memulai ulang aplikasi secara terprogram), lalu secara eksplisit memanggil restartApp
di titik-titik di aplikasi Anda yang "aman" untuk melakukannya. disallowRestart
menyediakan pendekatan alternatif untuk ini ketika kode yang disinkronkan dengan server CodePush terpisah dari kode/komponen yang ingin memberlakukan kebijakan tanpa menghidupkan ulang.
Contoh Penggunaan:
class OnboardingProcess extends Component {
...
componentWillMount() {
// Ensure that any CodePush updates that are
// synchronized in the background can't trigger
// a restart while this component is mounted.
codePush.disallowRestart();
}
componentWillUnmount() {
// Reallow restarts, and optionally trigger
// a restart if one was currently pending.
codePush.allowRestart();
}
...
}
codePush.getCurrentPackage
Catatan
Metode ini dianggap tidak digunakan lagi pada v1.10.3-beta
modul CodePush. Jika Anda menjalankan versi ini (atau yang lebih baru), sebaiknya gunakan sebagai gantinya, karena memiliki perilaku yang lebih dapat diprediksi codePush.getUpdateMetadata
.
codePush.getCurrentPackage(): Promise<LocalPackage>;
Mengambil metadata tentang "paket" yang saat ini diinstal (seperti deskripsi, waktu penginstalan). Ini dapat berguna untuk skenario seperti menampilkan dialog "apa yang baru?" setelah pembaruan diterapkan atau memeriksa apakah ada pembaruan tertunda yang menunggu untuk diterapkan melalui resume atau restart.
Metode ini mengembalikan Promise
, yang diselesaikan ke salah satu dari dua nilai yang mungkin:
null
jika aplikasi saat ini menjalankan bundel JS dari biner dan bukan pembaruan CodePush. Ini terjadi dalam skenario berikut:- Pengguna akhir menginstal biner aplikasi dan belum menginstal pembaruan CodePush
- Pengguna akhir menginstal pembaruan biner (misalnya dari penyimpanan), yang menghapus pembaruan CodePush lama, dan memberikan prioritas kembali ke biner JS di biner.
LocalPackage
Instans, yang mewakili metadata untuk pembaruan CodePush yang sedang berjalan.
Contoh Penggunaan:
codePush.getCurrentPackage()
.then((update) => {
// If the current app "session" represents the first time
// this update has run, and it had a description provided
// with it upon release, let's show it to the end user
if (update.isFirstRun && update.description) {
// Display a "what's new?" modal
}
});
codePush.getUpdateMetadata
codePush.getUpdateMetadata(updateState: UpdateState = UpdateState.RUNNING): Promise<LocalPackage>;
Mengambil metadata untuk pembaruan yang diinstal (seperti deskripsi, wajib) yang statusnya cocok dengan parameter yang ditentukan updateState
. Ini dapat berguna untuk skenario seperti menampilkan dialog "apa yang baru?" setelah pembaruan diterapkan atau memeriksa apakah ada pembaruan tertunda yang menunggu untuk diterapkan melalui resume atau restart. Untuk informasi selengkapnya tentang kemungkinan status pembaruan, dan apa yang diwakilinya, lihat referensi UpdateState.
Metode ini mengembalikan Promise
, yang diselesaikan ke salah satu dari dua nilai yang mungkin:
null
jika pembaruan dengan status yang ditentukan saat ini tidak ada. Ini terjadi dalam skenario berikut:Pengguna akhir belum menginstal pembaruan CodePush apa pun, dan itulah sebabnya tidak ada metadata yang tersedia untuk pembaruan apa pun, apa pun yang Anda tentukan sebagai
updateState
parameter.Pengguna akhir menginstal pembaruan biner (misalnya dari penyimpanan), yang menghapus pembaruan CodePush lama, dan memberikan prioritas kembali ke biner JS di biner. Ini akan menunjukkan perilaku yang sama dengan #1
Parameter
updateState
diatur keUpdateState.RUNNING
, tetapi aplikasi saat ini tidak menjalankan pembaruan CodePush. Mungkin ada pembaruan yang tertunda, tetapi aplikasi belum dimulai ulang untuk membuatnya aktif.Parameter
updateState
diatur keUpdateState.PENDING
, tetapi aplikasi tidak memiliki pembaruan yang saat ini tertunda.
LocalPackage
Instans, yang mewakili metadata untuk pembaruan CodePush yang saat ini diminta (baik yang sedang berjalan atau tertunda).
Contoh Penggunaan:
// Check if there's currently a CodePush update running, and if
// so, register it with the HockeyApp SDK (https://github.com/slowpath/react-native-hockeyapp)
// so that crash reports will correctly display the JS bundle version the user was running.
codePush.getUpdateMetadata().then((update) => {
if (update) {
hockeyApp.addMetadata({ CodePushRelease: update.label });
}
});
// Check to see if there's still an update pending.
codePush.getUpdateMetadata(UpdateState.PENDING).then((update) => {
if (update) {
// There's a pending update, do we want to force a restart?
}
});
codePush.notifyAppReady
codePush.notifyAppReady(): Promise<void>;
Memberi tahu runtime CodePush bahwa pembaruan yang baru diinstal harus dianggap berhasil, sehingga, rollback sisi klien otomatis tidak diperlukan. Anda harus memanggil fungsi ini di suatu tempat dalam kode bundel yang diperbarui. Jika tidak, ketika aplikasi berikutnya dimulai ulang, runtime CodePush akan mengasumsikan bahwa pembaruan yang diinstal telah gagal dan kembali ke versi sebelumnya. Perilaku ini ada untuk membantu memastikan bahwa pengguna akhir Anda tidak diblokir oleh pembaruan yang rusak.
Jika Anda menggunakan fungsi , sync
dan melakukan pemeriksaan pembaruan pada aplikasi dimulai, maka Anda tidak perlu memanggilnya notifyAppReady
secara manual karena sync
akan memanggilnya untuk Anda. Perilaku ini ada karena asumsi bahwa ketika sync
dipanggil di aplikasi Anda, perilaku ini mewakili perkiraan yang baik dari startup yang berhasil.
Catatan
Metode ini juga dinamai sebagai notifyApplicationReady
(untuk kompatibilitas mundur).
codePush.restartApp
codePush.restartApp(onlyIfUpdateIsPending: Boolean = false): void;
Segera menghidupkan ulang aplikasi. Jika nilai kebenaran diberikan ke onlyIfUpdateIsPending
parameter , maka aplikasi hanya akan dimulai ulang jika sebenarnya ada pembaruan tertunda yang menunggu untuk diterapkan.
Metode ini untuk skenario lanjutan, dan terutama berguna ketika kondisi berikut ini benar:
Aplikasi Anda menentukan nilai mode penginstalan atau
ON_NEXT_RESTART
ON_NEXT_RESUME
saat memanggilsync
metode atauLocalPackage.install
. Ini tidak menerapkan pembaruan Anda sampai aplikasi dimulai ulang (oleh pengguna akhir atau OS) atau dilanjutkan, sehingga, pembaruan tidak akan segera ditampilkan kepada pengguna akhir.Anda memiliki peristiwa pengguna khusus aplikasi (seperti pengguna akhir yang dinavigasi kembali ke rute rumah aplikasi) yang memungkinkan Anda menerapkan pembaruan dengan cara yang tidak mengganggu, dan berpotensi mendapatkan pembaruan ke pengguna akhir lebih cepat daripada menunggu hingga mulai ulang atau lanjutkan berikutnya.
codePush.sync
codePush.sync(options: Object, syncStatusChangeCallback: function(syncStatus: Number), downloadProgressCallback: function(progress: DownloadProgress), handleBinaryVersionMismatchCallback: function(update: RemotePackage)): Promise<Number>;
Menyinkronkan bundel JavaScript dan aset gambar aplikasi Anda dengan rilis terbaru ke penyebaran yang dikonfigurasi. Tidak seperti metode checkForUpdate, yang memeriksa keberadaan pembaruan, dan mari kita kontrol apa yang harus dilakukan selanjutnya, sync
menangani pemeriksaan pembaruan, unduhan, dan pengalaman penginstalan untuk Anda.
Metode ini menyediakan dukungan untuk dua "mode" yang berbeda (tetapi dapat disesuaikan) untuk dengan mudah mengaktifkan aplikasi dengan persyaratan yang berbeda:
Mode senyap (perilaku default) secara otomatis mengunduh pembaruan yang tersedia, dan menerapkannya saat berikutnya aplikasi dimulai ulang (misalnya OS atau pengguna akhir mematikannya, atau perangkat dimulai ulang). Dengan cara ini, seluruh pengalaman pembaruan "diam" untuk pengguna akhir, karena mereka tidak melihat permintaan pembaruan atau mulai ulang aplikasi "sintetis".
Mode aktif, yang ketika pembaruan tersedia, meminta izin kepada pengguna akhir sebelum mengunduhnya, lalu segera menerapkan pembaruan. Jika pembaruan dirilis menggunakan
mandatory
bendera , pengguna akhir masih akan diberi tahu tentang pembaruan, tetapi mereka tidak akan memiliki pilihan untuk mengabaikannya.
Contoh Penggunaan:
// Fully silent update that keeps the app in
// sync with the server, without ever
// interrupting the end user
codePush.sync();
// Active update, which lets the end user know
// about each update, and displays it to them
// immediately after downloading it
codePush.sync({ updateDialog: true, installMode: codePush.InstallMode.IMMEDIATE });
Tip
Jika Anda ingin memutuskan apakah Anda memeriksa atau mengunduh pembaruan yang tersedia berdasarkan tingkat baterai perangkat pengguna akhir, kondisi jaringan, dll. maka bungkus panggilan ke sync
dalam kondisi yang memastikan Anda hanya memanggilnya saat diinginkan.
SyncOptions
sync
Meskipun metode mencoba memudahkan untuk melakukan pembaruan diam dan aktif dengan konfigurasi kecil, metode ini menerima objek "opsi" yang memungkinkan Anda menyesuaikan banyak aspek perilaku default yang disebutkan di atas. Opsi yang tersedia identik dengan CodePushOptions, dengan pengecualian checkFrequency
opsi:
deploymentKey (String) - Lihat
CodePushOptions
.installMode (codePush.InstallMode) - Lihat
CodePushOptions
.mandatoryInstallMode (codePush.InstallMode) - Lihat
CodePushOptions
.minimumBackgroundDuration (Angka) - Lihat
CodePushOptions
.updateDialog (UpdateDialogOptions) - Lihat
CodePushOptions
.rollbackRetryOptions (RollbackRetryOptions) - Lihat
CodePushOptions
.
Contoh Penggunaan:
// Use a different deployment key for this
// specific call, instead of the one configured
// in the Info.plist file
codePush.sync({ deploymentKey: "KEY" });
// Download the update silently, but install it on
// the next resume, as long as at least 5 minutes
// has passed since the app was put into the background.
codePush.sync({ installMode: codePush.InstallMode.ON_NEXT_RESUME, minimumBackgroundDuration: 60 * 5 });
// Download the update silently, and install optional updates
// on the next restart, but install mandatory updates on the next resume.
codePush.sync({ mandatoryInstallMode: codePush.InstallMode.ON_NEXT_RESUME });
// Changing the title displayed in the
// confirmation dialog of an "active" update
codePush.sync({ updateDialog: { title: "An update is available!" } });
// Displaying an update prompt which includes the
// description for the CodePush release
codePush.sync({
updateDialog: {
appendReleaseDescription: true,
descriptionPrefix: "\n\nChange log:\n"
},
installMode: codePush.InstallMode.IMMEDIATE
});
// Shortening the retry delay and increasing
// the number of maximum retry attempts
// in comparison to defaults
codePush.sync({
rollbackRetryOptions: {
delayInHours: 8,
maxRetryAttempts: 3
}
});
Selain opsi, metode ini sync
juga menerima beberapa parameter fungsi opsional, yang memungkinkan Anda berlangganan siklus sync
hidup "alur" untuk menampilkan UI tambahan sesuai kebutuhan (seperti "memeriksa modal pembaruan atau modal kemajuan unduhan):
syncStatusChangedCallback ((syncStatus: Number) => void) - Dipanggil saat proses sinkronisasi berpindah dari satu tahap ke tahap lainnya dalam proses pembaruan keseluruhan. Metode ini dipanggil dengan kode status, yang mewakili status saat ini, dan dapat menjadi salah
SyncStatus
satu nilai.downloadProgressCallback ((progress: DownloadProgress) => void) - Dipanggil secara berkala ketika pembaruan yang tersedia sedang diunduh dari server CodePush. Metode ini dipanggil dengan
DownloadProgress
objek, yang berisi dua properti berikut:totalByte (Angka) - Jumlah total byte yang diharapkan diterima untuk pembaruan ini (itulah ukuran kumpulan file, yang berubah dari rilis sebelumnya).
receivedBytes (Number) - Jumlah byte yang diunduh sejauh ini, yang dapat digunakan untuk melacak kemajuan unduhan.
handleBinaryVersionMismatchCallback ((update: RemotePackage) => void) - Dipanggil ketika ada pembaruan biner yang tersedia. Metode ini dipanggil dengan
RemotePackage
objek. Lihat bagian codePush.checkForUpdate untuk detail selengkapnya.
Contoh Penggunaan:
// Prompt the user when an update is available
// and then display a "downloading" modal
codePush.sync({ updateDialog: true },
(status) => {
switch (status) {
case codePush.SyncStatus.DOWNLOADING_PACKAGE:
// Show "downloading" modal
break;
case codePush.SyncStatus.INSTALLING_UPDATE:
// Hide "downloading" modal
break;
}
},
({ receivedBytes, totalBytes, }) => {
/* Update download modal progress */
}
);
Metode ini mengembalikan Promise
, yang diselesaikan ke SyncStatus
kode yang menunjukkan mengapa sync
panggilan berhasil. Kode ini bisa menjadi salah satu nilai berikut SyncStatus
:
codePush.SyncStatus.UP_TO_DATE (4) - Aplikasi sudah diperbarui dengan server CodePush.
codePush.SyncStatus.UPDATE_IGNORED (5) - Aplikasi memiliki pembaruan opsional, yang dipilih pengguna akhir untuk diabaikan. (Ini hanya berlaku ketika
updateDialog
digunakan)codePush.SyncStatus.UPDATE_INSTALLED (6) - Pembaruan telah diinstal dan akan dijalankan segera setelah
syncStatusChangedCallback
fungsi kembali atau lain kali aplikasi dilanjutkan/dimulai ulang, tergantung padaInstallMode
yang ditentukan dalamSyncOptions
.codePush.SyncStatus.SYNC_IN_PROGRESS (7) - Ada operasi yang sedang
sync
berlangsung yang mencegah panggilan saat ini dijalankan.
Metode sync
ini dapat dipanggil di mana saja Anda ingin memeriksa pembaruan. Itu bisa berada dalam componentWillMount
peristiwa siklus hidup komponen akar Anda, penanganan onPress komponen <TouchableHighlight>
, dalam panggilan balik timer berkala, atau apa pun yang masuk akal untuk kebutuhan Anda. Seperti metode , checkForUpdate
ia melakukan permintaan jaringan untuk memeriksa pembaruan di latar belakang, sehingga tidak akan berdampak pada utas UI atau responsivitas utas JavaScript Anda.
Objek paket
Metode checkForUpdate
dan getUpdateMetadata
mengembalikan Promise
objek, yang ketika diselesaikan, menyediakan akses ke objek "paket". Paket mewakili pembaruan kode Anda dan metadata tambahan apa pun (seperti deskripsi, wajib?). CODEPush API memiliki perbedaan antara jenis paket berikut:
LocalPackage: Mewakili pembaruan yang diunduh yang sudah berjalan, atau telah diinstal dan sedang menunggu mulai ulang aplikasi.
RemotePackage: Mewakili pembaruan yang tersedia di server CodePush yang belum diunduh.
LocalPackage
Berisi detail tentang pembaruan yang telah diunduh secara lokal atau sudah diinstal. Anda bisa mendapatkan referensi ke instans objek ini baik dengan memanggil metode tingkat getUpdateMetadata
modul, atau sebagai nilai janji yang dikembalikan oleh RemotePackage.download
metode .
Properti
- appVersion: Versi biner aplikasi yang bergantung pada pembaruan ini. Ini adalah nilai yang ditentukan melalui
appStoreVersion
parameter saat memanggil perintah CLIrelease
. (String) - deploymentKey: Kunci penyebaran yang digunakan untuk mengunduh pembaruan ini awalnya. (String)
- deskripsi: Deskripsi pembaruan. Ini adalah nilai yang sama dengan yang Anda tentukan di CLI saat Anda merilis pembaruan. (String)
- failedInstall: Menunjukkan apakah pembaruan ini telah diinstal sebelumnya tetapi digulung balik. Metode ini
sync
akan secara otomatis mengabaikan pembaruan, yang sebelumnya gagal, jadi Anda hanya perlu khawatir tentang properti ini jika menggunakancheckForUpdate
. (Boolean) - isFirstRun: Menunjukkan apakah ini pertama kalinya pembaruan dijalankan setelah diinstal. Ini berguna untuk menentukan apakah Anda ingin menunjukkan "Apa yang Baru?" UI ke pengguna akhir setelah menginstal pembaruan. (Boolean)
- isMandatory: Menunjukkan apakah pembaruan dianggap wajib. Ini adalah nilai yang ditentukan dalam CLI saat pembaruan dirilis. (Boolean)
- isPending: Menunjukkan apakah pembaruan ini dalam status "tertunda". Ketika
true
, itu berarti pembaruan telah diunduh dan diinstal, tetapi aplikasi menghidupkan ulang yang diperlukan untuk menerapkannya belum terjadi, dan itulah sebabnya perubahannya saat ini tidak terlihat oleh pengguna akhir. (Boolean) - label: Label internal secara otomatis diberikan ke pembaruan oleh server CodePush, seperti
v5
. Nilai ini secara unik mengidentifikasi pembaruan dalam penyebarannya. (String) - packageHash: Nilai hash SHA dari pembaruan. (String)
- packageSize: Ukuran kode yang terkandung dalam pembaruan, dalam byte. (Angka)
Metode
- install(installMode: codePush.InstallMode = codePush.InstallMode.ON_NEXT_RESTART, minimumBackgroundDuration = 0): Janji<batal>: Menginstal pembaruan dengan menyimpannya ke lokasi pada disk di mana runtime mengharapkan untuk menemukan versi terbaru aplikasi. Parameter
installMode
mengontrol kapan perubahan disajikan kepada pengguna akhir. Nilai defaultnya adalah menunggu hingga aplikasi berikutnya dimulai ulang untuk menampilkan perubahan, tetapi Anda dapat merujuk keInstallMode
referensi enum untuk deskripsi opsi yang tersedia dan apa yang mereka lakukan.installMode
Jika parameter diatur keInstallMode.ON_NEXT_RESUME
, makaminimumBackgroundDuration
parameter memungkinkan Anda mengontrol berapa lama aplikasi harus berada di latar belakang sebelum memaksa penginstalan setelah dilanjutkan.
RemotePackage
Berisi detail tentang pembaruan yang tersedia untuk diunduh dari server CodePush. Anda mendapatkan referensi ke instans objek ini dengan memanggil checkForUpdate
metode saat pembaruan tersedia. Jika Anda menggunakan sync
API, Anda tidak perlu khawatir tentang RemotePackage
, karena akan menangani proses pengunduhan dan penginstalan secara otomatis untuk Anda.
Properti
Mewarisi RemotePackage
semua properti yang sama dengan LocalPackage
, tetapi mencakup satu properti tambahan:
- downloadUrl: URL tempat paket tersedia untuk diunduh. Properti ini hanya diperlukan untuk penggunaan tingkat lanjut, karena
download
metode akan secara otomatis menangani akuisisi pembaruan untuk Anda. (String)
Metode
- download(downloadProgressCallback?: Function): Promise<LocalPackage>: Mengunduh pembaruan yang tersedia dari layanan CodePush.
downloadProgressCallback
Jika ditentukan, itu akan dipanggil secara berkala denganDownloadProgress
objek ({ totalBytes: Number, receivedBytes: Number }
) yang melaporkan kemajuan unduhan hingga selesai. Mengembalikan Janji yang diselesaikan denganLocalPackage
.
Enums
CODEPush API menyertakan enum berikut, yang dapat digunakan untuk menyesuaikan pengalaman pembaruan:
InstallMode
Enum ini menentukan kapan Anda ingin pembaruan yang diinstal benar-benar diterapkan, dan dapat diteruskan ke sync
metode atau LocalPackage.install
. Ini termasuk nilai-nilai berikut:
codePush.InstallMode.IMMEDIATE (0) - Menunjukkan bahwa Anda ingin menginstal pembaruan dan segera memulai ulang aplikasi. Nilai ini sesuai untuk skenario penelusuran kesalahan serta saat menampilkan permintaan pembaruan kepada pengguna, karena mereka berharap untuk melihat perubahan segera setelah menerima penginstalan. Selain itu, mode ini dapat digunakan untuk memberlakukan pembaruan wajib, karena menghapus latensi yang berpotensi tidak diinginkan antara penginstalan pembaruan dan lain kali pengguna akhir memulai ulang atau melanjutkan aplikasi.
codePush.InstallMode.ON_NEXT_RESTART (1) - Menunjukkan bahwa Anda ingin menginstal pembaruan, tetapi tidak menghidupkan ulang aplikasi secara paksa. Ketika aplikasi "secara alami" dimulai ulang (karena OS atau pengguna akhir membunuhnya), pembaruan akan diambil dengan mulus. Nilai ini sesuai saat melakukan pembaruan senyap, karena mungkin mengganggu pengguna akhir jika aplikasi tiba-tiba dimulai ulang entah dari mana. Mereka tidak akan menyadari pembaruan bahkan diunduh. Ini adalah mode default yang digunakan untuk
sync
metode danLocalPackage.install
.codePush.InstallMode.ON_NEXT_RESUME (2) - Menunjukkan bahwa Anda ingin menginstal pembaruan, tetapi tidak ingin menghidupkan ulang aplikasi hingga kali berikutnya pengguna akhir melanjutkannya dari latar belakang. Dengan cara ini, Anda tidak mengganggu sesi mereka saat ini, tetapi Anda bisa mendapatkan pembaruan di depannya lebih cepat daripada harus menunggu hidupkan ulang alami berikutnya. Nilai ini sesuai untuk penginstalan senyap yang dapat diterapkan saat dilanjutkan dengan cara yang tidak invasif.
codePush.InstallMode.ON_NEXT_SUSPEND (3) - Menunjukkan bahwa Anda ingin menginstal pembaruan saat berada di latar belakang, tetapi hanya setelah berada di latar belakang selama
minimumBackgroundDuration
detik (0 secara default), sehingga konteks pengguna tidak hilang kecuali penangguhan aplikasi cukup lama untuk tidak menjadi masalah.
CheckFrequency
Enum ini menentukan kapan Anda ingin aplikasi Anda disinkronkan dengan server untuk pembaruan, dan dapat diteruskan ke codePushify
dekorator. Ini termasuk nilai-nilai berikut:
codePush.CheckFrequency.ON_APP_START (0) - Menunjukkan bahwa Anda ingin memeriksa pembaruan setiap kali proses aplikasi dimulai.
codePush.CheckFrequency.ON_APP_RESUME (1) - Menunjukkan bahwa Anda ingin memeriksa pembaruan setiap kali aplikasi dibawa kembali ke latar depan setelah "di latar belakang" (pengguna menekan tombol beranda, aplikasi meluncurkan proses pembayaran terpisah, dan sebagainya).
codePush.CheckFrequency.MANUAL (2) - Nonaktifkan pemeriksaan otomatis untuk pembaruan, tetapi hanya periksa kapan
codePush.sync()
dipanggil dalam kode aplikasi.
SyncStatus
Enum ini disediakan untuk syncStatusChangedCallback
fungsi yang dapat diteruskan ke sync
metode , untuk menghubungkan ke proses pembaruan keseluruhan. Ini termasuk nilai-nilai berikut:
- codePush.SyncStatus.CHECKING_FOR_UPDATE (0) - Server CodePush sedang dikueri untuk pembaruan.
- codePush.SyncStatus.AWAITING_USER_ACTION (1) - Pembaruan tersedia, dan dialog konfirmasi ditampilkan kepada pengguna akhir. (Ini hanya berlaku ketika
updateDialog
digunakan) - codePush.SyncStatus.DOWNLOADING_PACKAGE (2) - Pembaruan yang tersedia sedang diunduh dari server CodePush.
- codePush.SyncStatus.INSTALLING_UPDATE (3) - Pembaruan yang tersedia diunduh dan akan diinstal.
- codePush.SyncStatus.UP_TO_DATE (4) - Aplikasi sepenuhnya diperbarui dengan penyebaran yang dikonfigurasi.
- codePush.SyncStatus.UPDATE_IGNORED (5) - Aplikasi memiliki pembaruan opsional, yang dipilih pengguna akhir untuk diabaikan. (Ini hanya berlaku ketika
updateDialog
digunakan) - codePush.SyncStatus.UPDATE_INSTALLED (6) - Pembaruan yang tersedia telah diinstal dan akan dijalankan segera setelah
syncStatusChangedCallback
fungsi kembali atau lain kali aplikasi dilanjutkan/dimulai ulang, tergantung padaInstallMode
yang ditentukan diSyncOptions
. - codePush.SyncStatus.SYNC_IN_PROGRESS (7) - Ada operasi yang sedang
sync
berlangsung yang mencegah panggilan saat ini dijalankan. - codePush.SyncStatus.UNKNOWN_ERROR (-1) - Operasi sinkronisasi menemukan kesalahan yang tidak diketahui.
UpdateState
Enum ini menentukan status pembaruan saat ini, dan dapat ditentukan saat memanggil getUpdateMetadata
metode . Ini termasuk nilai-nilai berikut:
codePush.UpdateState.RUNNING (0) - Menunjukkan bahwa pembaruan mewakili versi aplikasi yang saat ini berjalan. Ini dapat berguna untuk mengidentifikasi atribut tentang aplikasi, untuk skenario seperti menampilkan deskripsi rilis dalam dialog "apa yang baru?" atau melaporkan versi terbaru ke analitik atau layanan pelaporan crash.
codePush.UpdateState.PENDING (1) - Menunjukkan bahwa pembaruan telah diinstal, tetapi aplikasi belum dimulai ulang untuk menerapkannya. Ini dapat berguna untuk menentukan apakah ada pembaruan yang tertunda, yang mungkin ingin Anda paksa mulai ulang terprogram (melalui
restartApp
) untuk diterapkan.codePush.UpdateState.LATEST (2) - Menunjukkan bahwa pembaruan mewakili rilis terbaru yang tersedia, dan dapat berjalan atau tertunda saat ini.
Referensi API Objective-C (iOS)
OBJECTIVE-C API tersedia dengan mengimpor CodePush.h
header ke file AppDelegate.m Anda, dan terdiri dari satu kelas publik bernama CodePush
.
CodePush
Berisi metode statis untuk mengambil NSURL
yang mewakili file bundel JavaScript terbaru, dan dapat diteruskan ke RCTRootView
metode 's initWithBundleURL
saat bootstrapping aplikasi Anda di file AppDelegate.m .
Metode CodePush
kelas dapat dianggap sebagai pemecah masalah komposit, yang selalu memuat bundel yang sesuai, untuk mengakomodasi skenario berikut:
Saat pengguna akhir menginstal aplikasi Anda dari toko (seperti
1.0.0
), mereka akan mendapatkan bundel JS yang terkandung dalam biner. Ini adalah perilaku yang akan Anda dapatkan tanpa menggunakan CodePush, tetapi kami memastikannya tidak rusak :)Segera setelah Anda mulai merilis pembaruan CodePush, pengguna akhir Anda akan mendapatkan bundel JS yang mewakili rilis terbaru untuk penyebaran yang dikonfigurasi. Ini adalah perilaku yang memungkinkan Anda untuk melakukan iterasi di luar apa yang Anda kirim ke toko.
Segera setelah Anda merilis pembaruan ke penyimpanan aplikasi (seperti
1.1.0
), dan pengguna akhir Anda memperbaruinya, mereka akan sekali lagi mendapatkan bundel JS yang terkandung dalam biner. Perilaku ini memastikan bahwa pembaruan CodePush yang menargetkan versi biner sebelumnya tidak digunakan (karena kami tidak tahu itu akan berfungsi), dan pengguna akhir Anda selalu memiliki versi aplikasi yang berfungsi.Ulangi #2 dan #3 saat rilis CodePush dan rilis app store berlanjut ke infinity (dan seterusnya?)
Karena perilaku ini, Anda dapat menyebarkan pembaruan dengan aman ke penyimpanan aplikasi dan CodePush seperlunya, dan yakinlah bahwa pengguna akhir Anda akan selalu mendapatkan versi terbaru.
Metode
(NSURL *)bundleURL - Mengembalikan bundel
NSURL
JS terbaru seperti yang dijelaskan di atas. Metode ini mengasumsikan bahwa nama bundel JS yang terkandung dalam biner aplikasi Anda adalahmain.jsbundle
.(NSURL *)bundleURLForResource:(NSString *)resourceName - Setara dengan
bundleURL
metode, tetapi juga memungkinkan penyesuaian nama bundel JS yang dicari dalam biner aplikasi. Ini berguna jika Anda tidak memberi nama filemain
ini (yang merupakan konvensi default). Metode ini mengasumsikan bahwa ekstensi bundel JS adalah*.jsbundle
.(NSURL *)bundleURLForResource:(NSString *)resourceName withExtension:(NSString *)resourceExtension: Setara dengan
bundleURLForResource:
metode, tetapi juga memungkinkan penyesuaian ekstensi yang digunakan oleh bundel JS yang dicari dalam biner aplikasi. Ini berguna jika Anda tidak memberi nama file*.jsbundle
ini (yang merupakan konvensi default).(void)overrideAppVersion:(NSString *)appVersionOverride - Mengatur versi antarmuka biner aplikasi, yang akan default ke versi App Store yang ditentukan sebagai
CFBundleShortVersionString
di Info.plist. Ini harus disebut satu kali, sebelum URL bundel dimuat.(void)setDeploymentKey:(NSString *)deploymentKey - Mengatur kunci penyebaran yang harus digunakan aplikasi saat mengkueri pembaruan. Ini adalah alternatif dinamis untuk mengatur kunci penyebaran di Info.plist Anda atau menentukan kunci penyebaran di JS saat memanggil
checkForUpdate
atausync
.
Referensi Java API (Android)
API untuk versi React Native 0.60 ke atas
Karena autolinking
menggunakan react-native.config.js
untuk menautkan plugin, konstruktor ditentukan dalam file tersebut. Tetapi Anda dapat mengambil alih variabel kustom untuk mengelola plugin CodePush dengan menempatkan nilai-nilai ini dalam sumber daya string.
Kunci Umum - digunakan untuk verifikasi bundel di Fitur Penandatanganan Kode. Lihat bagian Penandatanganan Kode untuk detail selengkapnya tentang Fitur Penandatanganan Kode. Untuk mengatur kunci publik, Anda harus menambahkan konten kunci publik ke
strings.xml
dengan namaCodePushPublicKey
. CodePush secara otomatis mendapatkan properti ini dan mengaktifkan fitur Penandatanganan Kode. Contohnya:<string moduleConfig="true" name="CodePushPublicKey">your-public-key</string>
Url Server - digunakan untuk menentukan Url Server CodePush. Nilai Default: "https://codepush.appcenter.ms/" ditimpa dengan menambahkan jalur Anda ke
strings.xml
dengan namaCodePushServerUrl
. CodePush secara otomatis mendapatkan properti ini dan akan menggunakan jalur ini untuk mengirim permintaan. Contohnya:<string moduleConfig="true" name="CodePushServerUrl">https://yourcodepush.server.com</string>
API untuk React Native lebih rendah dari 0,60
Java API tersedia dengan mengimpor kelas ke com.microsoft.codepush.react.CodePush
file MainActivity.java Anda, dan terdiri dari satu kelas publik bernama CodePush
.
CodePush
Membuat runtime klien CodePush dan mewakili instans ReactPackage
yang Anda tambahkan ke daftar paket aplikasi Anda.
Konstruktor
CodePush(String deploymentKey, Activity mainActivity) - Membuat instans baru runtime CodePush, yang akan digunakan untuk mengkueri layanan untuk pembaruan melalui kunci penyebaran yang disediakan. Parameter
mainActivity
harus selalu diatur kethis
saat mengonfigurasi daftar paket React Anda diMainActivity
dalam kelas. Konstruktor ini menempatkan runtime CodePush ke dalam "mode rilis", jadi jika Anda ingin mengaktifkan perilaku penelusuran kesalahan, gunakan konstruktor berikut sebagai gantinya.CodePush(String deploymentKey, Activity mainActivity, bool isDebugMode) - Setara dengan konstruktor sebelumnya, tetapi memungkinkan Anda menentukan apakah Anda ingin runtime CodePush berada dalam mode debug atau tidak. Saat menggunakan konstruktor ini,
isDebugMode
parameter harus selalu diatur keBuildConfig.DEBUG
untuk tetap disinkronkan dengan jenis build Anda. Saat memasukkan CodePush ke dalam mode debug, perilaku berikut diaktifkan:Pembaruan CodePush lama tidak dihapus dari penyimpanan setiap kali biner baru disebarkan ke emulator/perangkat. Perilaku ini memungkinkan Anda untuk menyebarkan biner baru, tanpa menabrak versi selama pengembangan, dan tanpa terus mendapatkan pembaruan yang sama setiap kali aplikasi Anda memanggil
sync
.Cache lokal yang dikelola runtime React Native dalam mode debug dihapus setiap kali pembaruan CodePush diinstal. Ini memastikan bahwa ketika aplikasi dimulai ulang setelah pembaruan diterapkan, dimungkinkan untuk melihat perubahan yang diharapkan. Segera setelah PR ini digabungkan, kita tidak perlu melakukan ini lagi.
CodePush(String deploymentKey, Konteks konteks, boolean isDebugMode, Integer publicKeyResourceDescriptor) - Setara dengan konstruktor sebelumnya, tetapi memungkinkan Anda menentukan deskriptor sumber daya kunci publik yang diperlukan untuk membaca konten kunci publik. Lihat bagian Penandatanganan Kode untuk detail selengkapnya tentang Fitur Penandatanganan Kode.
CodePush(String deploymentKey, Konteks konteks, boolean isDebugMode, String serverUrl) - Konstruktor memungkinkan Anda menentukan Url CodePush Server. Nilai Default:
"https://codepush.appcenter.ms/"
ditimpa oleh nilai yang ditentukan dalamserverUrl
.
Metode Statis
getBundleUrl() - Mengembalikan jalur ke versi terbaru file bundel JS aplikasi Anda, dengan asumsi bahwa nama sumber daya adalah
index.android.bundle
. Jika aplikasi Anda menggunakan nama bundel yang berbeda, gunakan versi metode ini yang kelebihan beban, yang memungkinkan menentukannya. Metode ini memiliki perilaku resolusi yang sama dengan yang setara Objective-C yang dijelaskan di atas.getBundleUrl(String bundleName) - Mengembalikan jalur ke versi terbaru file bundel JS aplikasi Anda, menggunakan nama sumber daya yang ditentukan (seperti
index.android.bundle
). Metode ini memiliki perilaku resolusi yang sama dengan yang setara Objective-C yang dijelaskan di atas.overrideAppVersion(String appVersionOverride) - Mengatur versi antarmuka biner aplikasi, yang akan default ke versi Play Store yang ditentukan sebagai
versionName
dalam build.gradle. Ini harus disebut satu kali, sebelum instans CodePush dibangun.