Bagikan melalui


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:

  1. 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).

  2. 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 demi getUpdateMetadata*.

  • 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):

  1. 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);
    
  2. 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);
    
  3. 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);
    
  4. Kemajuan log/tampilan. Saat aplikasi menyinkronkan dengan server untuk pembaruan, gunakan codePushStatusDidChange atau codePushDownloadDidProgress 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 atau InstallMode.ON_NEXT_SUSPEND, dan dapat berguna untuk mendapatkan pembaruan Anda di depan pengguna akhir lebih cepat, tanpa terlalu mengganggu. Default ke 0, 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 pun true 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 ke 24.

    • maxRetryAttempts (Angka) - Menentukan jumlah maksimum upaya coba lagi yang dapat dilakukan aplikasi sebelum berhenti mencoba. Tidak boleh kurang dari 1. Default ke 1.

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:

  1. Tidak ada pembaruan CodePush yang diinstal sejak terakhir kali disallowRestart dipanggil, jadi, tidak perlu menghidupkan ulang.

  2. Saat ini ada pembaruan CodePush yang tertunda, tetapi diinstal melalui InstallMode.ON_NEXT_RESTART, sehingga mulai ulang terprogram tidak diperlukan.

  3. 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.

  4. Tidak ada panggilan untuk restartApp dilakukan sejak terakhir kali disallowRestart 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:

  1. null jika tidak ada pembaruan yang tersedia. Hal ini dapat terjadi dalam skenario berikut:

    1. Penyebaran yang dikonfigurasi tidak berisi rilis apa pun, jadi, tidak ada yang perlu diperbarui.
    2. Rilis terbaru dalam penyebaran yang dikonfigurasi menargetkan versi biner yang berbeda dari yang saat ini Anda jalankan (yang lebih lama atau yang lebih baru).
    3. Aplikasi yang sedang berjalan sudah memiliki rilis terbaru dari penyebaran yang dikonfigurasi, sehingga, tidak memerlukannya lagi.
    4. Rilis terbaru dalam penyebaran yang dikonfigurasi saat ini ditandai sebagai dinonaktifkan, sehingga tidak diizinkan untuk diunduh.
    5. 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.
  2. 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:

  1. Pembaruan CodePush diinstal menggunakan InstallMode.IMMEDIATE

  2. Pembaruan CodePush diinstal menggunakan InstallMode.ON_NEXT_RESUME dan aplikasi dilanjutkan dari latar belakang (secara opsional dibatasi oleh minimumBackgroundDuration properti)

  3. Metode restartApp ini dipanggil

    Catatan

    Langkah 1 dan 2 secara efektif berfungsi dengan memanggil restartApp Anda, sehingga Anda dapat menganggapnya disallowRestart sebagai memblokir panggilan apa pun ke restartApp, 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:

  1. null jika aplikasi saat ini menjalankan bundel JS dari biner dan bukan pembaruan CodePush. Ini terjadi dalam skenario berikut:

    1. Pengguna akhir menginstal biner aplikasi dan belum menginstal pembaruan CodePush
    2. Pengguna akhir menginstal pembaruan biner (misalnya dari penyimpanan), yang menghapus pembaruan CodePush lama, dan memberikan prioritas kembali ke biner JS di biner.
  2. 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:

  1. null jika pembaruan dengan status yang ditentukan saat ini tidak ada. Ini terjadi dalam skenario berikut:

    1. 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.

    2. 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

    3. Parameter updateState diatur ke UpdateState.RUNNING, tetapi aplikasi saat ini tidak menjalankan pembaruan CodePush. Mungkin ada pembaruan yang tertunda, tetapi aplikasi belum dimulai ulang untuk membuatnya aktif.

    4. Parameter updateState diatur ke UpdateState.PENDING, tetapi aplikasi tidak memiliki pembaruan yang saat ini tertunda.

  2. 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:

  1. Aplikasi Anda menentukan nilai mode penginstalan atau ON_NEXT_RESTART ON_NEXT_RESUME saat memanggil sync metode atau LocalPackage.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.

  2. 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:

  1. 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".

  2. 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:

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 pada InstallMode yang ditentukan dalam SyncOptions.

  • 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 CLI release . (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 menggunakan checkForUpdate. (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 ke InstallMode referensi enum untuk deskripsi opsi yang tersedia dan apa yang mereka lakukan. installMode Jika parameter diatur ke InstallMode.ON_NEXT_RESUME, maka minimumBackgroundDuration 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 dengan DownloadProgress objek ({ totalBytes: Number, receivedBytes: Number }) yang melaporkan kemajuan unduhan hingga selesai. Mengembalikan Janji yang diselesaikan dengan LocalPackage.

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 dan LocalPackage.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 pada InstallMode yang ditentukan di SyncOptions.
  • 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 RCTRootViewmetode '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:

  1. 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 :)

  2. 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.

  3. 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.

  4. 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 adalah main.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 file main 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 atau sync.

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 nama CodePushPublicKey. 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 nama CodePushServerUrl. 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 ke this saat mengonfigurasi daftar paket React Anda di MainActivity 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 ke BuildConfig.DEBUG untuk tetap disinkronkan dengan jenis build Anda. Saat memasukkan CodePush ke dalam mode debug, perilaku berikut diaktifkan:

    1. 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.

    2. 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 dalam serverUrl.

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.