본문 바로가기

iOS/3rd Party Library

[iOS] Fastlane Plugin을 활용하여 앱아이콘 Badge 표시

1️⃣ 개요


Fastlane이란? iOS 앱 배포 단순화를 목표로 하는 오픈 소스 플랫폼입니다.

Fastlane은 여러가지 기능들을 제공하고, 해당 기능들을 활용하여 배포작업(TestFlight에 앱을 업로드하는 작업)시간을 단축시키거나 간단하게 처리할 수 있습니다.

Fastlane의 기본동작 원리는 lane이라는 워크플로를 작성한 후 실행하는 방식입니다.

 

 

Fastlane - Plugin 기능 설명

Fastlane을 설치하면 기본적인 Action이 제공되지만, 좀 더 다양한 작업을 위해 🔗 Plugin기능을 활용할 수 있습니다.

서로 다른 fastlane 사용자들이 plugin기능을 통해 공유할 수 있습니다.

🔗 이용가능한 Plugin 목록

해당 블로그는 fastlane 설치가 완료되었다는 과정하에 작업을 진행합니다.

만약 설치가 되어있지 않다면 🔗 앱 배포 자동화: Slack 명령어로 TestFlight 업로드 (Flask, Bitbucket Pipelines, Fastlane 활용)글에서 fastlane설치내용을 참고할 수 있습니다.

여러 Plugin 중 앱아이콘에 Badge를 표시하여 BuildConfiguration별로 구분할 수 있도록 도와주는 Plugin을 적용합니다.

 

 

참고 이미지

 

 

2️⃣ 적용하기


가장 먼저 badge라는 fastlane plugin을 설치합니다.

Imagemagick이 설치되어 있지않다면 자동으로 함께 설치됩니다.

$ fastlane add_plugin badge

                         

FastFile 작성

설치한 plugin을 동작하기 위해 FastFile에 badge를 추가하는 Action을 작성합니다.

기본명령어는 add_badge 이고, 옵션에 따라 여러가지 뱃지모양을 표시할 수 있습니다.

  • add_badge
    • 기본 badge만 표시
  • add_badge(dark: true, grayscale: true)
    • dark가 true인 경우 뱃지가 검은색으로 표시됩니다.
    • grayscale이 true인 경우 앱아이콘이 회색으로 표시됩니다.
  • add_badge(shield: "Version-0.0.3-blue", no_badge: true)
    • shield에 버전을 입력하면 앱아이콘에 버전을 표시할 수 있습니다.
    • no_badge이 true인 경우 badge표시를 하지 않습니다.

찾아보시면 위의 옵션이외에도 여러가지 옵션이 있습니다. 해당 옵션들을 사용하여 다양한 앱아이콘을 제작할 수 있습니다.

🔗 badge 저장소

  • dark, alpha, alpha_channel, custom, no_badge, badge_gravity, shield, shield_parameters, shield_io_timeout, shield_geometry, shield_gravity, shield_scale, shield_no_resize, glob, grayscale

 

버전명과 badge표시하는 예시코드 - FastFile

default_platform(:ios)

platform :ios do
  desc "앱아이콘 뱃지 표시"
  lane :customAppIcon do

    version = get_version_number(xcodeproj: "GeekReport.xcodeproj")
    build_number = get_build_number(xcodeproj: "GeekReport.xcodeproj")

    add_badge(shield: "Version-#{version}(#{build_number})-blue", no_badge: false)

  end
end

 

 

3️⃣ 주의사항


새로 작성한 customAppIcon레인을 실행하면 Assets폴더의 AppIcon이미지들이 모두 변경되어서 적용됩니다.

만약 그대로 commit을 하면, Release로 배포할 때 뱃지가 표시된 이미지가 배포될 수 있습니다.

fastlane에는 모든 lane을 실행하기 전, 후 동작을 정의할 수 있는 action을 제공합니다.

해당 action들을 활용하여 lane을 실행하기전 변경사항을 모두 commit을 했는지 확인합니다. 또한 lane이 실행한 후에 AppIcon변경사항은 모두 원상복구를 하도록 하여 이슈가 발생하지 않도록 방어할 수 있습니다.

 

앱아이콘 변경사항 원복코드 - FastFile

default_platform(:ios)

platform :ios do
  ...
  
  before_all do
    ensure_git_status_clean
  end

  after_all do |lane|
    sh("git checkout -- ../{프로젝트경로}/Resources/Assets.xcassets/..")
  end
  
end

 

🔗 참고링크