ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SwiftUI] 앱 배포 시 설정 화면에서 오픈소스 라이센스 표시하는 방법
    SwiftUI 2024. 3. 18. 17:29
    728x90

    앱 배포를 준비하면서 얻은 꿀팁을 정리하려고 한다.

    앱을 개발할 때 오픈소스(패키지 등)를 사용하게 되면 라이선스 표시를 꼭 해줘야 한다.

    뭐 마이페이지나 앱 안에 뷰를 하나 더 만들어서 할 수도 있지만,,, 에브리타임 앱을 보니까 디바이스 안에 있는 설정 앱에 개발중인 앱 정보를 들어가면 라이선스 정보를 쉽게 표시할 수 있더라고!! 아 참고로 UIkit이랑 SwiftUI랑 설정 다를게 없음.

     

    그래서 정리하는 '디바이스 설정 화면에서 오픈소스 라이선스 표시하기' SwiftUI편 시작합니댱

     

    1️⃣ LicensePlist 라이브러리 설치하기

    https://github.com/mono0926/LicensePlist

     

    GitHub - mono0926/LicensePlist: A license list generator of all your dependencies for iOS applications

    A license list generator of all your dependencies for iOS applications - mono0926/LicensePlist

    github.com

     

    해당 라이브러리는 내가 사용한 오픈소스 라이선스 정보를 추출해올 수 있다. 그래서 꼭 설치해야하는데 Homebrew로 설치를 해야하니 아래 코드를 터미널창에 입력하도록!!

     

    brew install mono0926/license-plist/license-plist

    2️⃣ 오픈소스 라이선스 정보 생성 및 추출

     

    자 나는 현재 Moya 라이브러리를 설치한 상태이다.

    이제 프로젝트 폴더로 들어가서 터미널을 켠 뒤 아래 명령어를 입력해보자.

    ( 깃허브에 들어가보면 다양하게 응용해서 사용할 수 있다. )

    // 기본(라이브러리 이름만)
    license-plist
    
    // 응용(라이브러리 이름과 버전)
    license-plist --add-version-numbers

     

    ⛔️ 여기서 깃허브 레포지토리를 클론해서 한다면 프로젝트 폴더(1) 안에 프로젝트 폴더(2)가 들어가 있을텐데 (1)에서 명령어를 입력해줘야 제대로 실행된다. (삽질의 중요성)

    이 로그들이 떠야지만?

    이렇게 파일이 잘 생성된다.


    3️⃣ Settings Bundle 추가하기

    파일을 새로 하나 추가해줄건데 Settings Bundle을 추가한다. 이름은 수정할 필요 없이 그냥 그대로 두고 생성하면 된다.

    파일 구조를 보여주자면 이렇게!


    4️⃣ LicensePlist 파일 옮기기

    아까 생성했던 파일과 폴더를 Settings.bundle 내부로 가져와야 한다. 참고로 저기 Output으로 끝나는 폴더는 이제 삭제해도 된다.

     

    이렇게 최종적인 파일 구조 확인!


    5️⃣ Setting.Bundle 폴더에 생성된 Root.plist 파일 수정하기

    여기서 Preference Items에 있는 하위 항목 0부터 3까지 모두 지운다.

    이제 Preference Items에 하위 항목 하나를 + 추가해준 뒤

    - Type은 'Child Pane'

    - Title은 설정 화면에서 보일 목록 제목으로 '오픈소스 라이선스'

    - Filename 타입으로 변경한 후 아까 LicensePlist 파일 옮길 때 있던 폴더의 이름을 명확하게 입력해주면 된다.


    🍀 그럼 이제 실행해보자고!

     


    0️⃣ 아 추가적으로 저렇게 나오는 설정 화면과 버튼을 연동하고 싶을 땐

    struct SettingView: View {
    	...
        
    	@Environment(\.openURL) var openURL
        
        var body: some View {
        	...
        	Button(action: {
                 if let url = URL(string: UIApplication.openSettingsURLString), UIApplication.shared.canOpenURL(url) {
                      openURL(url)
                  }
            }, label: {
                Text("오픈소스 라이선스")
                            
            })
        }
    }

     

    이렇게 연결해주면 잘 넘어간다 ㅎㅎ

     


     

    오늘도 새롭게 배워가는 Swift의 매력💚

    728x90
예콩이의 코드 레시피