aplikasi iOS, pemrograman mendapatkan versi build

Apakah ada cara untuk pemrograman mendapatkan versi build aplikasi saya? Aku harus mampu untuk mendeteksi ketika pengguna yang telah memperbarui aplikasi melalui AppStore, dalam rangka untuk mengeksekusi beberapa kode untuk penyesuaian

Mengomentari pertanyaan (2)
Larutan

Nilai yang anda tetapkan dalam Xcode target ringkasan's "Versi" lapangan di sini:

Swift 3

let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as! String

ObjC

NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];

Swift 2

let version = NSBundle.mainBundle().infoDictionary?["CFBundleShortVersionString"] as! String

dan "Membangun":

Swift 3

let build = Bundle.main.infoDictionary?[kCFBundleVersionKey as String] as? String

ObjC

NSString *build = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleVersionKey];

Swift 2

let build = NSBundle.mainBundle().infoDictionary?[kCFBundleVersionKey as String] as! String
Komentar (3)

Anda dapat mencoba menggunakan infoDictionary

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

NSString *version = infoDictionary[@"CFBundleShortVersionString"];
NSString *build = infoDictionary[(NSString*)kCFBundleVersionKey];
NSString *bundleName = infoDictionary[(NSString *)kCFBundleNameKey]; 
Komentar (1)

Ketika menggunakan MFMailComposeViewController untuk “Kontak Kami" tombol, saya menggunakan kode ini untuk mendapatkan diformat HTML pada e-mail dari pengguna. Itu memberi saya semua info yang saya butuhkan untuk mulai membantu memecahkan masalah:

struct utsname systemInfo;
uname(&systemInfo);

NSDateFormatter *formatter = [[NSDateFormatter alloc]  init];
NSDate  *date = [NSDate date];
[formatter setDateFormat:@"MM/dd/yyyy 'at' hh:mm a"];
NSString *dateString = [formatter stringFromDate:date];

CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width - 65.0;

NSString *comments = NSLocalizedString(@"Please write your comments below:", nil);
NSString *build = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
NSString *appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey];
NSString *deviceModel = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
NSString *iOSVersion = [[UIDevice currentDevice] systemVersion];

NSString *emailBody = [NSString stringWithFormat:@" .div {background-color: lightgrey; width: %fpx; padding: 10px; border: 5px solid navy; margin: 2px;}<div class='div'><p>App: %@</p><p>Device: %@</p><p>iOS Version: %@</p><p><p>App Version and Build: %@ (%@)</p><p>Date: %@</p> </p></div>%@<br><br>",screenWidth,appName,deviceModel,iOSVersion,version,build,dateString,comments];

[self setMessageBody:emailBody isHTML:YES];

Ini adalah hasil ketika mendapatkan pesan:

Komentar (0)

Swift versi untuk investasi secara terpisah:

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

Yang termasuk dalam repo ini, check it out:

https://github.com/goktugyil/EZSwiftExtensions

Komentar (1)

Detail

  • Xcode Versi 10.3 (10G8), Swift 5

Solusi

class Info {
    static let dictionary = Bundle.main.infoDictionary ?? [:]
    enum Value {
        case build, version
    }
}

extension Info.Value {

    var key: String {
        switch self {
            case .build: return kCFBundleVersionKey as String
            case .version: return kCFBundleInfoDictionaryVersionKey as String
        }
    }

    var string: String? { return Info.dictionary[key] as? String }
}

Penggunaan

if let value = Info.Value.version.string { print("Version: \(value)") }
if let value = Info.Value.build.string { print("Build: \(value)") }

Hasil

Pengaturan proyek

Komentar (0)

Saya telah menulis ini open source project. untuk tujuan ini tepat. Proyek saya posting pemberitahuan ketika peristiwa penting terjadi, seperti ketika pengguna membuka aplikasi untuk pertama kalinya, atau membuka aplikasi setelah upgrade (lengkap dengan informasi pada versi yang pengguna upgrade dari). Sumber langsung dan harus mudah untuk memahami. Biarkan aku tahu jika anda memiliki pertanyaan/permintaan.

Saya juga baru-baru ini menulis sebuah blog post tentang hal itu.

Komentar (0)

1)Untuk mendapatkan versi Aplikasi anda harus menggunakan:

NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];

2)Untuk mendapatkan Membangun versi anda harus menggunakan:

NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
Komentar (0)