Nasıl benim iphone app kendi sürüm numarasını tespit edebilir?

oy
237

Ben bir iPhone app yazıyorum. Zaten yayınlanmış, ama ben onun sürüm numarası görüntülenen bir özellik eklemek istiyorum.

Daha doğrusu ben çıkardığımız her sürümü ile manuel olarak bunu yapmak zorunda değil ki ...

versiyon benim app ne olduğunu öğrenmek için objektif-C bir yolu var mı?

Oluştur 19/01/2009 saat 19:32
kaynak kullanıcı
Diğer dillerde...                            


15 cevaplar

oy
216

Burada tarifine göre , benim şimdiki Subversion revizyon numarasına sahip bir başlık dosyasını yeniden yazmak için bir komut dosyası kullanabilirsiniz. Bu revizyon numarası kRevisionNumber sabiti saklanır. Sonra aşağıdakine benzer bir şey kullanarak sürüm ve revizyon numarasını erişebilir:

[NSString stringWithFormat:@"Version %@ (%@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"], kRevisionNumber]

hangi biçimde "Sürüm 1.0 (51)" dizesini yaratacaktır.

Cevap 19/01/2009 saat 20:00
kaynak kullanıcı

oy
143

Eğer büyük ve küçük sürüm bilgisi (Belirli bir proje üzerinde yaptığı gibi) bilgi plist saklanan varsa, Brad Larson cevap üzerine kurulan bu benim için iyi çalıştı:

- (NSString *)appNameAndVersionNumberDisplayString {
    NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
    NSString *appDisplayName = [infoDictionary objectForKey:@"CFBundleDisplayName"];
    NSString *majorVersion = [infoDictionary objectForKey:@"CFBundleShortVersionString"];
    NSString *minorVersion = [infoDictionary objectForKey:@"CFBundleVersion"];

    return [NSString stringWithFormat:@"%@, Version %@ (%@)", 
                appDisplayName, majorVersion, minorVersion];
}

Şimdi bir ağrı olabilir elle küçük versiyonunu devirli ve böylece bir kaynak deposu revizyon numarası hile kullanarak idealdir. Eğer bağlı değil ettiyseniz (ben olmasaydı gibi) ki, yukarıdaki pasajı yararlı olabilir. Ayrıca uygulamanın ekran adını çıkarır.

Cevap 15/08/2012 saat 05:13
kaynak kullanıcı

oy
46

Her iki ayrı için Swift sürümü:

Swift 3

let versionNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
let buildNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String

Swift 2

let versionNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
let buildNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String

Onun bu repo dahil, bunu kontrol:

https://github.com/goktugyil/EZSwiftExtensions

Cevap 19/03/2015 saat 12:42
kaynak kullanıcı

oy
41

Bu benim uygulamada ne yaptığını

NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

Umarım bu basit bir cevabı birilerine yardımcı olacaktır ...

Cevap 02/11/2013 saat 21:01
kaynak kullanıcı

oy
31

Belirtebilirsiniz CFBundleShortVersionStringsizin plist.info dizeyi ve programlı kullanarak okumak sağlanan API .

Cevap 19/01/2009 saat 19:46
kaynak kullanıcı

oy
29

sürüm ve uygulama sürümünü kurmak - iki şey vardır.

  1. Uygulama sürümünü almak için:

    NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
    
  2. Yapı sürümü almak için:

    NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
    
Cevap 23/01/2015 saat 09:01
kaynak kullanıcı

oy
17
// Syncs with App Store and Xcode Project Settings Input
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
Cevap 23/07/2014 saat 19:15
kaynak kullanıcı

oy
16

Bir sürüm dizesini elde etmek bir sözün yolu XYZ formatında geçerli:

[NSBundle mainBundle].infoDictionary[@"CFBundleVersion"]

Ya da, sadece için XY:

[NSBundle mainBundle].infoDictionary[@"CFBundleShortVersionString"]

Bu snippet'lerde her ikisi senin etiket nesnesinin text özelliğine, örneğin atamak istiyorum dizeleri döndürür

myLabel.text = [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];
Cevap 07/09/2013 saat 03:58
kaynak kullanıcı

oy
7

Sen sözlüğünü kullanarak deneyebilirsiniz: -

NSDictionary *infoDictionary = [[NSBundle mainBundle]infoDictionary];

NSString *buildVersion = infoDictionary[(NSString*)kCFBundleVersionKey];
NSString *bundleName = infoDictionary[(NSString *)kCFBundleNameKey]
Cevap 15/05/2014 saat 10:58
kaynak kullanıcı

oy
4

uygulamanızın Info.plist dosyasını okuyun ve anahtar CFBundleShortVersionString için değer olsun. info.plist Okuma size bir NSDictionary nesneyi verecektir

Cevap 22/01/2009 saat 06:05
kaynak kullanıcı

oy
1

Eğer bir ihtiyaç varsa kombinasyonu hem sürümüne ve num inşa , burada kullanarak kısa yoldur Swift 3 :

let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"]!
let buildNum = Bundle.main.infoDictionary!["CFBundleVersion"]!
let versionInfo = "\(appVersion) (build \(buildNum))"
// versionInfo is now something like "2.3.0 (build 17)"

Bir ekleme as! Stringya da sonuna appVersionveya buildNumbir şekilde sadece bir kısmını elde etmek için hat Stringnesne. Tam arıyorsanız buna da gerek yok versionInfo.

Umarım bu yardımcı olur!

Cevap 21/12/2016 saat 09:35
kaynak kullanıcı

oy
0
func getAppVersion() -> String {
    let dictionary = Bundle.main.infoDictionary!
    let versionValue = dictionary["CFBundleShortVersionString"] ?? "0"
    let buildValue = dictionary["CFBundleVersion"] ?? "0"
    return "\(versionValue) (build \(buildValue))"
}

İçin döküm zorla olmadan @rajat chauhan Yanıta göre String.

Cevap 10/04/2019 saat 10:42
kaynak kullanıcı

oy
0

Bu yöntemi deneyebilirsiniz:

NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
Cevap 24/10/2017 saat 18:15
kaynak kullanıcı

oy
0

Sen seni uygulamanın Info.plist gelen versiyon detaylarını alır infoDictionary kullanabilirsiniz. Bu kod Sadece bu yöntemi çağırın ve herhangi Tercih UI öğesi içinde sürümünü görüntülemek hızlı 3 için çalışıyor.

Swift-3  

func getVersion() -> String {
    let dictionary = Bundle.main.infoDictionary!
    let version = dictionary["CFBundleShortVersionString"] as! String
    let build = dictionary["CFBundleVersion"] as! String
    return "v\(version).\(build)"
}
Cevap 31/07/2017 saat 12:31
kaynak kullanıcı

oy
0

Bu revizyon kontrol sistemi ile işlemek için iyi bir şeydir. Eğer bir kullanıcıdan bir hata raporu almak Bu şekilde, o kod revizyon kontrol edebilirsiniz ve (umarım) kullanıcı olarak tam aynı kod çalıştıran hata yeniden.

Fikir bir yapı yapmak her zaman, kendi kod geçerli revizyon numarası alır ve (genellikle belirteç değiştirme çeşit ile) proje içinde bir dosyayı güncelleyen bir komut dosyasını çalıştırmak olacaktır. Daha sonra hep hata çıkışında revizyon numarasını içeren bir hata işleme rutini yazabilir veya bir "Hakkında" sayfasında görüntüleyebilirsiniz.

Cevap 19/01/2009 saat 19:46
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more