Application에 대해
앱이 출시되는 단계
기획/디자인 -> 개발 -> 테스트 -> 심사 -> 출시/업데이트 -> 유지보수
앱의 구조와 동작 원리
- UI/Scene : 사용자 눈에 보이는 화면
- 기능(Logic) : 사용자가 볼 수 없는 뒷단 기능
- Data
인터넷이 연결 안되어 있으면 콘텐츠를 볼 수 없는 상황이 있음
애플이 지향하는 시장, 애플 생태계
- 디자인 : 입체적(스큐어모피즘) -> 플랫한 느낌 -> 뉴스큐어모피즘
- 개발언어 : 오브젝트-C -> 스위프트
- 사용자 입장에 대해서의 이해 / 개인정보 보호
WWDC 최근 기준으로 보자면,
애플로 로그인하는 기능인데 우리의 이메일이 한 번 더 보안화 돼서 넘어갈 것
대신 소셜 로그인을 할 경우에는 애플 로그인이 필수화
예시) 최근 새로워진 애플의 정책
결론적으로 애플 생태계의 큰 특징
1. 폐쇄성 : [iOS Privacy] 회원탈퇴, 애플로 로그인, Xcode를 macOS에서 사용 가능, App Store에서만 업로드 가능
- 최근 카카오톡의 키워드 알림 기능이 애플 보안 정책의 이유로 중단됨
2. 업데이트 : 업데이트가 잘된다.
- 다양한 iOS 버전을 지원하는 경우, 개발 시간 증가 + 사용자 수 증가
- 최신 버전만 지원하면, 개발 시간 단축 + 사용자 수 줄어들 수 있음
3. 레이아웃 : HIG / SF Symbols
4. 하드웨어 : 아이폰에 들어있는 기능을 사용해서 개발을 할 수 있음
Product Name
- 프로젝트 이름으로 출시되는 앱 이름과는 무관함
- 애플의 고유한 정의(iOS, UIKit 등) 또는 한글 등은 제대로 동작하지 않을 수 있다.
Team
- 이 앱을 누가 만들었는지 표시해주는 영역
- 출시하거나, Apple Developer Program에 등록된 앱 개발자 계정이 있어야 함
Organization Identifier
- Bundle Identifier에 조합되는 식별자로, 웹의 도메인을 거꾸로 적는 형태
Bundle Identifier
- 우리의 주민등록번호와 같음
- 앱의 고유한 주소값
- ex. com.naver.webtoon 과 같은 형식으로 이루어짐
- 출시 후에 바꿀 경우, 다른 앱이 되어버리기 때문에 못 바꾸는 것이 맞고, 초기 Bundle identifier를 잘 만들자!
컴파일과 빌드
컴파일 : 소스코드를 컴퓨터가 이해할 수 있는 언어로 번역하는 과정
빌드 : 컴파일 + 앱 자체의 결과물
근데 빌드 프로세스 중에서 컴파일이 가장 중요함
빌드가 성공하게 되면, 앱을 출시할 수 있고 / 개발할 때 잘 돌아가는지 체크 해보는 것도 가능하고 / 베타테스트용으로 사용 가능
iOS 버전관련
iOS 9~10
iOS 12~13
<업데이트로 인해 변동된 API가 많아 오류 발생 가능성 높음>
iOS 13 이후부터는 오류가 날 일이 적음
iphone용으로 만든 앱은 iPad에서도 설치가 가능하지만, iPad용 앱은 iphone에서는 설치가 안됨
근데 iPhone용, iPad용 둘 다 설정 시에는 출시 이후 iPhone용, iPad용으로 전환이 불가능함
초기설정을 중요하게 해라!
프로젝트 기본 구성
AppDelegate.swift / SceneDelegate.swift
- 앱 라이프 사이클을 관리하고 앱의 실행과 종료를 담당한다.
- iOS13 미만의 버전 : AppDelegate.swift 사용
- iOS13 이상의 버전 : SceneDelegate.swift 사용 (iPadOS가 새롭게 등장했기 때문에 분할화면 가능)
ViewController.swift
- Scene에 대한 로직을 담당하는 파일 / 코드 작성
- Scene의 양에 파일개수가 비례함
Asset.xcassets
- 앱 내 아이콘, 이미지 소스를 관리
-> 이미지가 3개씩 들어있는 이유?
포스터처럼 해상도가 좋은 건 배수에 대한 대응이 필요없음
그러나 버튼 또는 아이콘의 경우 Device 사이즈가 다르기 때문에 각각의 디바이스에 맞는 해상도가 다름
해상도가 다르기 때문에 이미지가 깨지는 경우가 발생하게 됨
따라서, 1~3배수로 나눠서 넣고 사용하게 된다.
ex. iPhone13 pro의 경우는 3배수의 아이콘을 사용할 것임
즉, 아이폰 기종 별로 적합한 해상도가 다르기 때문에 3개의 파일을 넣는 것임
만약 3배수의 아이콘만 있어도, 그에 맞게 줄여서 사용하기는 함
그리고 애플이 자체적으로 디바이스에 따라 필요한 사이즈의 아이콘을 슬라이싱해서 앱에 대한 용량을 줄임
ex. iPhone13 pro는 3배수 아이콘들만 슬라이싱함
단, pdf 확장자의 경우, 벡터 형태로 전환해서 하나의 리소스로 모든 기종에 대한 해상도 대응이 가능하다고 한다.
Image Set -> Resizing Preserve Vector Data 체크 -> Scale 옵션을 Single Scale로 하면 설정 가능
Info.plist
- 프로퍼티 리스트, property list => 앱의 정보를 알려줌
- 개인 정보 보호 및 하드웨어 권한 획득을 위한 부분을 설정하기도 함
- 다크/라이트모드 구분 없이 일관적 시스템 디쟌을 사용하기 위해 설정도 가능
App Icon 넣기
앱 아이콘의 종류가 여러개인 이유는 다양한 영역에 앱 아이콘이 들어가기 때문
iPad로 출시를 안해도 iPad용 아이콘도 꼭 필요하다.
아이폰으로 출시를 하면 아이패드에도 출시가 되니까, 아이패드용 앱아이콘도 필요함
근데 만약 iPhone에는 출시 안하고, iPad에만 출시하면 iPhone용 앱 아이콘이 필요는 없음
위 사이트를 통해서 아이콘을 생성하면 자동으로 다양한 사이즈에 맞게 만들어줌
App Icons and Launch Images에서 App Icon 소스를 프로젝트 설정에서 연결해줄 수 있기 때문에
혹여나 앱 아이콘 파일의 이름이 바뀌면 여기서 대응할 수 있다.
Xcode 베타 버전 1024포인트 하나만 앱아이콘을 보내면 모든 사이즈가 다 대응되는 방식으로이 바뀔 것임 (왕 개꿀..)
SF Symbol 4+
iOS 13 이상부터 해당 San Fransico심볼을 사용할 수 있음
https://developer.apple.com/sf-symbols/
https://developer.apple.com/videos/all-videos/
https://developer.apple.com/design/human-interface-guidelines/platforms/designing-for-ios/
https://developer.apple.com/kr/support/app-store/
'⭐️ 개발 > iOS & Swift' 카테고리의 다른 글
[iOS] UITextFieldDelegate, DidEndOnExit, isHidden (1) | 2022.07.08 |
---|---|
[iOS] SF Symbols, iOS 계층구조, 상속 (0) | 2022.07.05 |
[iOS] Mac Catalyst가 뭔데요? (2) | 2022.07.05 |
[iOS] KakaoMap API 써보기 (5) | 2022.03.12 |
[Swift] ARC 공부하기 (0) | 2021.10.16 |