Как читать Version & Build в Xcode из General / Targets в SwiftUI - PullRequest
0 голосов
/ 19 апреля 2020

в моем первом приложении (я написал в SwiftUI) я хочу добавить кнопку, чтобы отправить мне письмо с отзывами, ошибками, ... кнопка отлично работает, но я хочу добавить в это письмо текущую версию и собрать моего приложения. Его показывали в General/Targets/Identity. Но я не могу найти способ сделать это.

Button(action: {
    if let url = URL(string: "mailto:mail@mymailadress.com?subject=MyApp%20Feedback&body=Hallo,%3Cbr%3Ei%20will%20tell%20you%20something%20about%20this%20app:%3Cbr%3E%3Cbr%3EVersion:%20\(AppVersionBuild)"){
        UIApplication.shared.open(url as URL, options: [:], completionHandler: nil)
    } 
}) {
    HStack{
        Image(systemName: "envelope")
        Text("send a mail to mail@mymailadress.com")
    }
    .padding(10)
    .foregroundColor(.white)
    .background(LinearGradient(gradient: Gradient(colors: [Color("GradientStart"), Color("GradientEnd")]), startPoint: .topLeading, endPoint: .bottomTrailing))
    .cornerRadius(10, antialiased: false)
    .shadow(radius: 10)
}

Есть идеи, как получить версию в теле письма (переменная, например, AppVersionBuild)?

Спасибо

1 Ответ

1 голос
/ 19 апреля 2020

Вы можете создать функцию, которая возвращает версию и номер сборки

func versionAndBuildNumber() -> String {
    let versionNumber = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String
    let buildNumber = Bundle.main.infoDictionary?["CFBundleVersion"] as? String
    if let versionNumber = versionNumber, let buildNumber = buildNumber {
        return "\(versionNumber) (\(buildNumber))"
    } else if let versionNumber = versionNumber {
        return versionNumber
    } else if let buildNumber = buildNumber {
        return buildNumber
    } else {
        return ""
    }
}

и заменить \(AppVersionBuild) следующим \(versionAndBuildNumber())

...