Aracılığıyla paylaş


React Yerel İstemci SDK'sı

Önemli

Visual Studio App Center 31 Mart 2025'te kullanımdan kaldırılıyor. Tamamen kullanımdan kaldırılana kadar Visual Studio App Center'ı kullanmaya devam edebilirsiniz ancak geçiş yapmayı düşünebileceğiniz birkaç önerilen alternatif vardır.

Destek zaman çizelgeleri ve alternatifleri hakkında daha fazla bilgi edinin.

Bu eklenti CodePush hizmeti için istemci tarafı tümleştirmesi sağlayarak React Native uygulamalarınıza kolayca dinamik bir güncelleştirme deneyimi eklemenize olanak sağlar.

Nasıl çalışır?

React Native uygulamaları, paketleyici tarafından birlikte paketlenen ve platforma özgü bir ikili dosya (.ipaveya .apk dosya) kapsamında dağıtılan JavaScript dosyalarından ve ilişkili görüntülerden oluşur. Uygulama kullanıma sunulduğunda JavaScript kodunu (örneğin hata düzeltmeleri yapma, yeni özellikler ekleme) veya görüntü varlıklarını güncelleştirmek, yayımladığınız mağazaların gözden geçirme süresini içeren ikilinin tamamını yeniden derlemenizi ve yeniden dağıtmanızı gerektirir.

CodePush eklentisi, JavaScript'inizi ve görüntülerinizi CodePush sunucusuna yayımladığınız güncelleştirmelerle eşitlenmiş tutarak son kullanıcılarınızın önünde ürün geliştirmeleri almanıza yardımcı olur. Bu şekilde, uygulamanız çevrimdışı mobil deneyimin avantajlarını ve kullanılabilir oldukları anda dışarıdan yükleme güncelleştirmelerinin "web benzeri" çevikliğini elde eder.

Son kullanıcılarınızın her zaman uygulamanızın çalışan bir sürümüne sahip olduğundan emin olmak için CodePush eklentisi, kilitlenme içeren bir güncelleştirmeyi yanlışlıkla göndermeniz durumunda otomatik olarak geri dönebilmesi için önceki güncelleştirmenin bir kopyasını tutar. Bu şekilde, yeni bulunan sürüm çevikliğinizin, sunucuya geri dönme şansınız olmadan önce kullanıcıların engellenmesine neden olmayacağından emin olabilirsiniz.

Not

Yerel koda dokunan tüm ürün değişiklikleri (örneğin, AppDelegate.m/MainActivity.java dosyanızı değiştirme, yeni eklenti ekleme) CodePush aracılığıyla dağıtılamaz ve bu nedenle uygun depolar aracılığıyla güncelleştirilmelidir.

Desteklenen React Native platformları

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

Eklentimizin React Native'in önceki sürümleriyle geriye dönük uyumluluğunu korumak için elimizden geleni yapıyoruz, ancak platformun doğası ve sürümler arasındaki hataya neden olan değişikliklerin varlığı nedeniyle, kullandığınız React Native'in tam sürümünü desteklemek için CodePush eklentisinin belirli bir sürümünü kullanmanız gerekebilir. Aşağıdaki tabloda, hangi CodePush eklenti sürümlerinin ilgili React Native sürümlerini resmi olarak desteklediği özetlenmektedir:

React Native sürümleri CodePush sürümlerini destekleme
<0.14 Desteklenmiyor
v0.14 v1.3 (Android desteği eklendi)
v0.15-v0.18 v1.4-v1.6 (iOS varlık desteği eklendi)
v0.19-v0.28 v1.7-v1.17 (Android varlık desteği eklendi)
v0.29-v0.30 v1.13-v1.17 (RN yeniden düzenlenmiş yerel barındırma kodu)
v0.31-v0.33 v1.14.6-v1.17 (RN yeniden düzenlenmiş yerel barındırma kodu)
v0.34-v0.35 v1.15-v1.17 (RN yeniden düzenlenmiş yerel barındırma kodu)
v0.36-v0.39 v1.16-v1.17 (RN yeniden düzenlenmiş özgeçmiş işleyicisi)
v0.40-v0.42 v1.17 (RN yeniden düzenlenmiş iOS üst bilgi dosyaları)
v0.43-v0.44 v2.0+ (RN yeniden düzenlenmiş uimanager bağımlılıkları)
v0.45 v3.0+ (RN yeniden düzenlenmiş örnek yöneticisi kodu)
v0.46 v4.0+ (RN yeniden düzenlenmiş js paket yükleyici kodu)
v0.46-v0.53 v5.1+ (RN, JS modüllerinin kullanılmayan kaydını kaldırdı)
v0.54-v0.55 v5.3+ (Android Gradle Eklentisi 3.x tümleştirmesi)
v0.56-v0.58 v5.4+ (Android araçları için RN yükseltilmiş sürümleri)
v0.59 v5.6+ (RN yeniden düzenlenmiş js paket yükleyici kodu)
v0.60-v0.61 v6.0+ (RN Otomatik Bağlantı'ya geçirildi)

Yeni React Native sürümlerine yanıt vermek için çok çalışıyoruz, ancak ara sıra bizi bozarlar. Bu grafiği her React Native sürümüyle güncelleştireceğiz, böylece kullanıcılar resmi desteğimizin ne olduğunu kontrol edebilir.

Desteklenen Bileşenler

React Native varlık sistemini kullanırken (söz dizimini require("./foo.png") kullanmak gibi), aşağıdaki liste, başvuruda bulundukları görüntü ve videoların CodePush aracılığıyla güncelleştirilmelerini destekleyen temel bileşenler kümesini (ve desteklerini) temsil eder:

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

Aşağıdaki liste, statik görüntülere ve videolara bağımlılıkları nedeniyle (söz dizimini kullanma { uri: "foo" } gibi) şu anda varlıklarının CodePush aracılığıyla güncelleştirilmesini desteklemeyen bileşen (ve prop) kümesini temsil eder:

Bileşen Prop(lar)
SliderIOS maximumTrackImage, minimumTrackImage, thumbImage, trackImage
Video source

Kullanıcıların CodePush kullanarak tam olarak neleri güncelleştirebileceklerini bilmelerini sağlamak için varlıklara başvurmayı destekleyen yeni temel bileşenler yayımlandıktan sonra bu listeyi güncelleştireceğiz.

Not

CodePush yalnızca kaynak prop'da kullanılırken require Video bileşenleriyle çalışır. Mesela:

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

Mağaza Kılavuzu Uyumluluğu

Google Play ve şirket içinde dağıtılmış uygulamalar (örneğin Enterprise, Fabric, App Center) CodePush kullanarak güncelleştirme yayımlama konusunda hiçbir sınırlamaya sahip olmasa da, iOS App Store ve buna karşılık gelen yönergeler, çözümü uygulamanızla tümleştirmeden önce bilmeniz gereken daha kesin kurallara sahiptir.

Apple'ın Geliştirici Programı Lisans Sözleşmesi, paragraf 3.3.2 kapsamında, JavaScript ve varlıkların tamamen havadan yapılan güncelleştirmelerine izin verilir ve en son sürümünde (20210607) bu karar daha da geniştir:

Yorumlanan kod bir Uygulamaya indirilebilir, ancak yalnızca bu tür kodlar geçerli olduğu sürece: (a) Uygulama Mağazası'na gönderilen Uygulamanın amaçlanan ve tanıtılan amacıyla tutarsız özellikler veya işlevler sağlayarak Uygulamanın birincil amacını değiştirmez, (b) diğer kodlar veya uygulamalar için bir depo veya vitrin oluşturmaz, ve (c) işletim sisteminin imzalama, korumalı alan veya diğer güvenlik özelliklerini atlamaz.

CodePush, gönderdiğiniz güncelleştirme ürününüzü orijinal App Store onaylı amacından önemli ölçüde sapmadığı sürece bu kurallara tam uyumlulukla uymanızı sağlar.

Apple'ın yönergelerine daha fazla uyum sağlamak için App Store'a dağıtılmış uygulamaların çağrısı syncsırasında seçeneğini etkinleştirmemelerini updateDialog öneririz, çünkü App Store Gözden Geçirme Yönergeleri'nde aşağıdakiler yazılmıştır:

Uygulamalar kullanıcıları uygulamayı derecelendirmeye, uygulamayı gözden geçirmeye, diğer uygulamaları indirmeye veya uygulamanın işlevselliğine, içeriğine veya kullanımına erişmek için diğer benzer eylemlere zorlamamalıdır.

Bu durum, kullanıcıyı yeni sürümü indirmeye zorlamayacağından bu durum updateDialogiçin geçerli olmayabilir, ancak en azından göstermeye karar verirseniz bu kararın farkında olmanız gerekir.

Örnek Uygulamalar / Başlangıçlar

React Native topluluğu, kullanmaya başlayan geliştiricilere örnek olabilecek harika açık kaynak uygulamalar oluşturdu. Aşağıdaki listede CodePush kullanan ve başkalarının hizmeti nasıl kullandığını görmek için kullanılabilen OSS React Native uygulamaları yer alıyor:

Ayrıca React Native + CodePush kullanmaya başlamak istiyorsanız ve harika bir başlangıç seti arıyorsanız aşağıdakilere göz atmalısınız:

  • Native Starter Pro

  • Pepperoni

    Not

    CodePush kullanarak bir React Native uygulaması geliştirdiyseniz bu açık kaynaktır, bize bildirin. Bu listeye eklemek isteriz!

Sürekli Tümleştirme / Teslim

Güncelleştirmeleri "el ile" yayınlamak için CodePush CLI'yi kullanmanın yanı sıra, uygulamanıza sürekli güncelleştirmeler sunmak için yinelenebilir ve sürdürülebilir bir çözüm oluşturmanın önemli olduğuna inanıyoruz. Bu şekilde, çevik dağıtımların ritmini oluşturmak ve korumak sizin veya ekibinizin kullanımına yeterlidir. CodePush tabanlı CD işlem hattı ayarlamaya yardımcı olmak için çeşitli CI sunucularıyla aşağıdaki tümleştirmelere bakın:

  • Azure DevOps - Azure DevOps (eski adıYLA VSTS), App Center ve Google Play store'da yayımlamak için uzantılara da sahiptir, bu nedenle genel olarak oldukça harika bir mobil CD çözümü sağlar.
  • Travis CI

TypeScript Tüketimi

Bu modül, dosyasını NPM paketinin bir parçası olarak teslim *.d.ts eder. Bu pakete izin verir import ve destekleyici düzenleyicilerde (Visual Studio Code gibi) intellisense ve TypeScript kullanıp kullanmadığınızı derleme zamanı türü denetimini alır. Çoğunlukla, bu davranış kutudan çıkarılmalıdır, ancak dosyanızda veya derleyici seçeneğinin target değeri olarak belirttiysenizes6, seçeneğini nodede olarak ayarladığınızdan moduleResolution emin olun.module tsconfig.json Bu, TypeScript derleyicisinin içeri aktarılan modüllerin tür tanımlarını içinde aramasını node_modules sağlar. Aksi takdirde, modülü içeri aktarmaya react-native-code-push çalışırken aşağıdaki gibi bir hata alırsınız: error TS2307: Cannot find module 'react-native-code-push'.