簡體   English   中英

使用 Swift 在啟動屏幕中顯示應用程序版本

[英]Show version of app in launch screen with Swift

設想

我想展示我用 Swift 制作的 iOS 9 應用程序的版本。

我做了什么

我知道如何獲取版本( let version: String = NSBundle.mainBundle().infoDictionary!["CFBundleShortVersionString"] as! String

我的主屏幕上也有一個自定義標簽。

我的問題

我現在的問題是,不允許將您自己的 UIViewController 用於啟動畫面/啟動屏幕。

許多應用程序直接在該屏幕上顯示其版本。 這就是為什么我認為必須有一種方法來做到這一點。

您可以在項目的構建階段中創建腳本。 但請確保您先做幾件事。

轉到您的 LaunchScreen.storyboard ViewController 並創建您的版本標簽。 確保在身份檢查器窗格 -> 文檔 -> 標簽中將標簽命名為“APP_VERSION”。

然后轉到項目的構建階段並通過單擊左上角的“+”按鈕創建腳本,然后從下拉菜單中選擇“新建運行腳本階段”,然后將其拖到“復制捆綁資源”階段之前。

更新:我的舊答案在最新的 Xcode 環境中不起作用。 我已經修復了當前的問題並重構了腳本。 當增量器工作時,我會更新。 僅供參考,請確保您重新安裝應用程序以顯示更新的 LaunchScreen.storyboard(由於系統管理在最新版本的 iOS 中啟動屏幕的緩存)。

這是帶有 shell 的最終工作腳本:/bin/sh in XCode 11 (Swift 5)

#   ON/OFF Script Toggle (script ON with #, script OFF without #)
#exit 0

#   App vesion / Build version constants
sourceFilePath="$PROJECT_DIR/$PROJECT_NAME/Base.lproj/LaunchScreen.storyboard"
versionNumber="$MARKETING_VERSION"
buildNumber="$CURRENT_PROJECT_VERSION"

#   Output version & build numbers into a label on LaunchScreen.storyboard
sed -i .bak -e "/userLabel=\"APP_VERSION\"/s/text=\"[^\"]*\"/text=\"$versionNumber($buildNumber)\"/" "$sourceFilePath"

更新了@Repose 腳本

#   ON/OFF Script Toggle (script ON with #, script OFF without #)
#exit 0

#   Increment Build Number Bool (Increment ON with true, increment OFF with false)
shouldIncrement=true

#   App vesion / Build version constants
versionNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFOPLIST_FILE")
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")

#   Increment build number
if [ "$shouldIncrement" = true ]; then
    buildNumber=$(($buildNumber + 1))
    /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
fi

#   Output version & build numbers into a label on LaunchScreen.storyboard
sed -i bak -e "/userLabel=\"APP_VERSION\"/s/text=\"[^\"]*\"/text=\"Version: $versionNumber Build: $buildNumber\"/" "$PROJECT_DIR/$PROJECT_NAME/Base.lproj/LaunchScreen.storyboard"

它不允許在 LaunchScreen 中使用任何UIViewController因此其他應用程序所做的是在 LaunchScreen xib/Storyboard 中放置一個UILabel並將它們的版本號寫為文本。

可能有一些解決方法,Apple 仍然不喜歡或不允許它,不要浪費時間搜索,如果您嘗試設置自定義類,您將收到以下錯誤:

error: Illegal Configuration: Launch screens may not set custom classnames

注意:通常應用程序所做的是在默認啟動屏幕之后直接創建另一個 LaunchScreen UIViewConttoller具有相同的設計並且沒有動畫呈現,例如接收一些數據。

使您的版本號在 iOS 中超級可見:

首先向LaunchScreen.storyboard添加標簽:

  1. 隨意格式化標簽。 我喜歡使用一些微妙的東西,您可以在需要時閱讀,但否則就不會很明顯。
  2. Document/Label設置為APP_VERSION 您將在構建階段腳本中使用此值。

繼續添加自定義構建階段:

  1. 在 Xcode 的左上角選擇您的項目。
  2. 選擇屏幕中間的應用程序目標。

您應該會看到一排選項卡,其中包括GeneralCapabilities 、 [...]、 Build SettingsBuild Phases

  1. 單擊構建階段列表上方的+並選擇

    新的運行腳本階段

  2. 將階段重命名為“在 LaunchScreen 上顯示版本”之類的名稱。 Xcode 可能對這部分很挑剔; 如果你不能重命名階段,不要太擔心。

  3. 將階段移到Copy Bundle Resources上方的某個位置。

  4. 將以下內容粘貼到腳本區域:

    # Output version & build number to the APP_VERSION label on LaunchScreen.storyboard
    versionNumber="$MARKETING_VERSION"
    buildNumber=$CURRENT_PROJECT_VERSION"
    
    sed -i "" -e "/userLabel=\"APP_VERSION\"/s/text=\"[^\"]*\"/text=\"Version: $versionNumber ($buildNumber)\"/" "$PROJECT_DIR/$PROJECT_NAME/Base.lproj/LaunchScreen.storyboard"

來源: https : //thoughtbot.com/blog/making-your-version-number-super-visible

您可以嘗試使用LaunchScreen.storyboard來實現。 嘗試使用New File -> User Interface -> Launch Screen將新LaunchScreen添加到您的項目中。它會自動創建LaunchScreen類型的storyboard 然后您可以在project settings -> General中更改初始啟動屏幕:

在此處輸入圖片說明

並使用您的自定義類使用此storyboard

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM