Bagikan melalui


SDK Klien React Native

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 dapat Anda pertimbangkan untuk bermigrasi.

Pelajari selengkapnya tentang garis waktu dukungan dan alternatif.

Plugin ini menyediakan integrasi sisi klien untuk layanan CodePush, memungkinkan Anda untuk dengan mudah menambahkan pengalaman pembaruan dinamis ke aplikasi React Native Anda.

Bagaimana cara kerjanya?

React Native aplikasi terdiri dari file JavaScript dan gambar terkait, yang dibundel bersama oleh packager dan didistribusikan sebagai bagian dari biner khusus platform (file .ipa atau .apk ). Saat aplikasi dirilis, memperbarui kode JavaScript (misalnya membuat perbaikan bug, menambahkan fitur baru) atau aset gambar, mengharuskan Anda untuk mengompilasi ulang dan mendistribusikan ulang seluruh biner, yang mencakup waktu peninjauan apa pun untuk penyimpanan tempat Anda menerbitkan.

Plugin CodePush membantu mendapatkan peningkatan produk di depan pengguna akhir Anda secara instan, dengan menjaga JavaScript dan gambar Anda tetap sinkron dengan pembaruan yang Anda rilis ke server CodePush. Dengan cara ini, aplikasi Anda mendapatkan manfaat dari pengalaman seluler offline, serta kelincahan "seperti web" pembaruan pemuatan samping segera setelah tersedia.

Untuk memastikan bahwa pengguna akhir Anda selalu memiliki versi aplikasi yang berfungsi, plugin CodePush mempertahankan salinan pembaruan sebelumnya, sehingga jika Anda secara tidak sengaja mendorong pembaruan yang menyertakan crash, itu dapat secara otomatis digulung balik. Dengan cara ini, Anda dapat yakin bahwa kelincahan rilis baru Anda tidak akan mengakibatkan pengguna diblokir sebelum Anda memiliki kesempatan untuk kembali di server.

Catatan

Setiap perubahan produk yang menyentuh kode asli (misalnya, memodifikasi file MainActivity.java AppDelegate.m/ Anda, menambahkan plugin baru) tidak dapat didistribusikan melalui CodePush, sehingga, harus diperbarui melalui penyimpanan yang sesuai.

Platform React Native yang didukung

  • iOS (7+)
  • Android (5.0+)
  • Windows (UWP)

Kami mencoba yang terbaik untuk mempertahankan kompatibilitas mundur plugin kami dengan versi React Native sebelumnya, tetapi karena sifat platform, dan adanya perubahan yang melanggar antara rilis, ada kemungkinan Anda perlu menggunakan versi spesifik plugin CodePush untuk mendukung versi React Native yang tepat yang Anda gunakan. Tabel berikut menguraikan versi plugin CodePush mana yang secara resmi mendukung versi React Native masing-masing:

versi React Native Mendukung versi CodePush
<0.14 Tidak didukung
v0.14 v1.3 (dukungan Android yang diperkenalkan)
v0.15-v0.18 v1.4-v1.6 (memperkenalkan dukungan aset iOS)
v0.19-v0.28 v1.7-v1.17 (dukungan aset Android yang diperkenalkan)
v0.29-v0.30 v1.13-v1.17 (kode hosting asli yang direfaktor RN)
v0.31-v0.33 v1.14.6-v1.17 (kode hosting asli yang direfaktor RN)
v0.34-v0.35 v1.15-v1.17 (kode hosting asli yang direfaktor RN)
v0.36-v0.39 v1.16-v1.17 (handler resume yang direfaktor RN)
v0.40-v0.42 v1.17 (file header iOS yang direfaktor RN)
v0.43-v0.44 v2.0+ (dependensi uimanager yang direfaktor RN)
v0.45 v3.0+ (kode manajer instans refaktor RN)
v0.46 v4.0+ (kode pemuat bundel js yang direfaktor RN)
v0.46-v0.53 v5.1+ (RN menghapus pendaftaran modul JS yang tidak digunakan)
v0.54-v0.55 v5.3+ (Integrasi Android Gradle Plugin 3.x)
v0.56-v0.58 v5.4+ (versi RN yang ditingkatkan untuk alat Android)
v0.59 v5.6+ (kode pemuat bundel js yang direfaktor RN)
v0.60-v0.61 v6.0+ (RN dimigrasikan ke Autolinking)

Kami bekerja keras untuk menanggapi rilis React Native baru, tetapi mereka kadang-kadang mematahkan kami. Kami akan memperbarui bagan ini dengan setiap rilis React Native, sehingga pengguna dapat memeriksa untuk melihat apa dukungan resmi kami.

Komponen yang Didukung

Saat menggunakan sistem aset React Native (seperti menggunakan require("./foo.png") sintaks), daftar berikut mewakili kumpulan komponen inti (dan alat peraga) yang mendukung pembaruan gambar dan video yang dirujuk melalui CodePush:

Komponen Prop
Image source
MapView.Marker
(Memerlukan react-native-maps>=O.3.2)
image
ProgressViewIOS progressImage, trackImage
TabBarIOS.Item icon, selectedIcon
ToolbarAndroid
(React Native 0.21.0+)
actions[].icon, logo, overflowIcon
Video source

Daftar berikut mewakili kumpulan komponen (dan alat peraga) yang saat ini tidak mendukung aset mereka diperbarui melalui CodePush, karena dependensinya pada gambar dan video statis (seperti menggunakan { uri: "foo" } sintaks):

Komponen Prop
SliderIOS maximumTrackImage, minimumTrackImage, thumbImage, trackImage
Video source

Kami akan memperbarui daftar ini saat komponen inti baru dirilis, yang mendukung referensi aset, untuk memastikan pengguna tahu apa yang sebenarnya mereka harapkan untuk diperbarui menggunakan CodePush.

Catatan

CodePush hanya berfungsi dengan komponen Video saat menggunakan require di prop sumber. Misalnya:

<Video source={require("./foo.mp4")} />

Menyimpan Kepatuhan Pedoman

Meskipun Google Play dan aplikasi yang didistribusikan secara internal (misalnya Enterprise, Fabric, App Center) tidak memiliki batasan tentang cara memublikasikan pembaruan menggunakan CodePush, iOS App Store dan panduan yang sesuai memiliki aturan yang lebih tepat yang harus Anda ketahui sebelum mengintegrasikan solusi dalam aplikasi Anda.

Perjanjian Lisensi Program Pengembang Apple, berdasarkan paragraf 3.3.2, pembaruan JavaScript dan aset over-the-air yang diizinkan sepenuhnya - dan dalam versi terbarunya (20210607) yang dapat diunduh di sini putusan ini lebih luas:

Kode yang ditafsirkan dapat diunduh ke Aplikasi tetapi hanya selama kode tersebut: (a) tidak mengubah tujuan utama Aplikasi dengan menyediakan fitur atau fungsionalitas yang tidak konsisten dengan tujuan aplikasi yang dimaksudkan dan diiklankan seperti yang dikirimkan ke App Store, (b) tidak membuat toko atau etalase untuk kode atau aplikasi lain, dan (c) tidak melewati penandatanganan, kotak pasir, atau fitur keamanan OS lainnya.

CodePush memungkinkan Anda untuk mengikuti aturan ini dengan kepatuhan penuh selama pembaruan yang Anda dorong tidak secara signifikan menyimpang produk Anda dari niat aslinya App Store disetujui.

Untuk tetap mematuhi pedoman Apple lebih lanjut, kami menyarankan agar aplikasi yang didistribusikan App Store tidak mengaktifkan updateDialog opsi saat memanggil sync, karena dalam Panduan Tinjauan App Store tertulis bahwa:

Aplikasi tidak boleh memaksa pengguna untuk menilai aplikasi, meninjau aplikasi, mengunduh aplikasi lain, atau tindakan serupa lainnya untuk mengakses fungsionalitas, konten, atau penggunaan aplikasi.

Ini belum tentu terjadi untuk updateDialog, karena tidak akan memaksa pengguna untuk mengunduh versi baru, tetapi setidaknya Anda harus menyadari keputusan itu jika Anda memutuskan untuk menunjukkannya.

Contoh Aplikasi / Pemula

Komunitas React Native telah dengan ramah membuat beberapa aplikasi sumber terbuka yang luar biasa yang dapat berfungsi sebagai contoh untuk pengembang yang memulai. Daftar berikut adalah aplikasi React Native OSS yang juga menggunakan CodePush, dan dapat digunakan untuk melihat bagaimana orang lain menggunakan layanan:

  • Aplikasi F8 - Aplikasi konferensi resmi untuk F8 2016.
  • Feline for Product Hunt - Klien Android untuk Perburuan Produk.
  • GeoEncoding - Aplikasi oleh Lynx IT Digital, yang menunjukkan cara menggunakan banyak komponen dan modul React Native.
  • Fakta Matematika - Aplikasi oleh Khan Academy untuk membantu menghafal fakta matematika dengan lebih mudah.

Selain itu, jika Anda ingin memulai dengan React Native + CodePush, dan mencari kit pemula yang luar biasa, Anda harus memeriksa hal-hal berikut:

  • Native Starter Pro

  • Pepperoni

    Catatan

    Jika Anda telah mengembangkan aplikasi React Native menggunakan CodePush, itu adalah sumber terbuka, beri tahu kami. Kami ingin menambahkannya ke daftar ini!

Integrasi / Pengiriman Berkelanjutan

Selain menggunakan CodePush CLI untuk pembaruan rilis "manual", kami percaya bahwa penting untuk membuat solusi yang dapat diulang dan berkelanjutan untuk terus memberikan pembaruan ke aplikasi Anda. Dengan begitu, cukup sederhana bagi Anda atau tim Anda untuk membuat dan mempertahankan ritme penyebaran yang tangkas. Untuk membantu menyiapkan alur CD berbasis CodePush, lihat integrasi berikut dengan berbagai server CI:

  • Azure DevOps - Azure DevOps (sebelumnya dikenal sebagai VSTS) juga memiliki ekstensi untuk dipublikasikan ke App Center dan Google Play store, sehingga menyediakan solusi CD seluler yang cukup hebat secara umum.
  • Travis CI

Konsumsi TypeScript

Modul ini mengirimkan filenya *.d.ts sebagai bagian dari paket NPM-nya, yang memungkinkan Anda melakukannyaimport, dan menerima intellisense di editor pendukung (seperti Visual Studio Code), serta pemeriksaan jenis waktu kompilasi jika Anda menggunakan TypeScript. Sebagian besar, perilaku ini harus berfungsi di luar kotak, namun, jika Anda telah menentukan es6 sebagai nilai untuk target opsi atau modulepengkompilasi dalam file Anda tsconfig.json , maka pastikan Anda juga mengatur moduleResolution opsi ke node. Ini memastikan bahwa pengkompilasi TypeScript akan melihat dalam node_modules untuk definisi jenis modul yang diimpor. Jika tidak, Anda akan mendapatkan kesalahan seperti berikut ini saat mencoba mengimpor react-native-code-push modul: error TS2307: Cannot find module 'react-native-code-push'.