summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadVPN/Extensions/Bundle+ProductVersion.swift
blob: 118aa486f442678907b8433a1c2090b59438db7e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//
//  Bundle+ProductVersion.swift
//  MullvadVPN
//
//  Created by pronebird on 22/02/2021.
//  Copyright © 2025 Mullvad VPN AB. All rights reserved.
//

import Foundation

extension Bundle {
    /// Returns the product version string based on the following rules:
    ///
    /// 1. Dev builds (debug): XXXX.YY-devZ
    /// 2. TestFlight builds: XXXX.YY-betaZ
    /// 3. AppStore builds: XXXX.YY
    ///
    /// Note: XXXX.YY is an app version (i.e 2020.5) and Z is a build number (i.e 1)
    var productVersion: String {
        let version = object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? "???"
        let buildNumber = object(forInfoDictionaryKey: kCFBundleVersionKey as String) as? String ?? "???"

        #if DEBUG
            return "\(version)-dev\(buildNumber)"
        #else
            if appStoreReceiptURL?.lastPathComponent == "sandboxReceipt" {
                return "\(version)-beta\(buildNumber)"
            } else {
                return version
            }
        #endif
    }

    /// Returns short version XXXX.YY (i.e 2020.5).
    var shortVersion: String {
        object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? "???"
    }
}