IOS

    [iOS] Agora.io

    Video Calling Agora의 화상통화를 사용하면 모든 애플리케이션에 맞춤형 실시간 비디오 기능 추가가 가능 Agora의 비디오 SDK로 화상 통화를 사용하면 다양한 기능을 추가할 수 있음 녹화 및 콘텐츠 조정같은 기능으로 SDK를 확장하거나 Extension Marketplace를 사용해 배경제거, 얼굴필터 기능들을 추가할 수 있음. SDK quicstart Understand the tech 1. 토큰 검색: 토큰은 컴퓨터에서 생성된 문자열로 앱이 채널에 가입할 때 사용자를 인증한다. 이 안내에서는 아고라 콘솔에서 토큰을 검색한다. 개발 목적으로 인증서버를 만드는 방법을 보려면 인증 워크플로우 구현을 참조하면 된다. 자체 토큰 생성기를 개발하고 프로덕션 IAM 시스템에 통합하려면 토큰 Toke..

    [iOS] 다크모드 대응하기

    다크모드 다크모드는 iOS 13.0 업데이트에 등장했다. 지금은 프로젝트를 생성하면 다크모드를 지원하는게 기본 설정이다. 다크모드 지원여부는 개발자가 프로젝트 설정에서 선택할 수 있다. 프로젝트에서 다크모드를 잘 대응하기 위해선 라이트모드와 다크모드에서 각각 사용될 수 있도록 색상, 이미지, 아이콘등 요소에 관리가 필요하다. UIColor중 system이 붙은 색상들은 다크모드를 자동으로 지원한다. SystemBackgroundColor는 라이트모드에서 흰색, 다크모드에서 검정색으로 표현된다. 1. ColorAssets으로 대응 Color Assets을 추가할 때 Appearance에서 None이 아닌 Any, Dark를 선택해준다. 다크모드일 경우 Dark에 설정한 색이 표시된다. light모드일 경우..

    [iOS] FlexLayout과 PinLayout 사용 방법

    https://github.com/layoutBox/FlexLayout GitHub - layoutBox/FlexLayout: FlexLayout adds a nice Swift interface to the highly optimized facebook/yoga flexbox implementati FlexLayout adds a nice Swift interface to the highly optimized facebook/yoga flexbox implementation. Concise, intuitive & chainable syntax. - GitHub - layoutBox/FlexLayout: FlexLayout adds a ni... github.com FlexLayout UIStackVie..

    [iOS] Modul

    모듈 프로그램의 기능을 독립적으로 분리한 것을 모듈이라고 한다(Naver) 쉽게 특정 기능별로 나누어진 프로그램 덩어리 수 많은 코드를 짠다고 할 때 모든 코드를 1개의 파일에 작성할 경우 몇만줄의 코드를 일일히 읽기란 본인이 작성한 코드여도 힘들며, 다른 개발자가 작성했다면 더욱 힘들것이다. 그로인해 유지보수성과 재사용성이 매우 감소한다. 이를 방지하기위해 효율적이고 재사용 가능하도록 코드를 작성하려고 개발자는 노력해야한다. 이때 유용한게 모듈화이다. 모듈화가 잘 되어있다면 내가 아니라 다른사람이 내가 만들어 놓은 기능을 필요로 할 때에도 사용될 수 있다. 즉, 다른 프로그램의 부품으로도 사용이 가능해진다. 모듈화의 장점 1. 빌드 속도 감소. XCode는 빌드시 빌드 결과를 폴더에 저장해놓고 해당 폴..

    [iOS] Moya(Network)

    https://github.com/Moya/Moya GitHub - Moya/Moya: Network abstraction layer written in Swift. Network abstraction layer written in Swift. Contribute to Moya/Moya development by creating an account on GitHub. github.com Networking은 앱에서 거의 필수적인 요소다. Networking을 위해 개발자는 흔히 APIManager 또는 NetworkModel로 불리는 네트워크 모듈을 설계한다. 이런 상황에 API추가가 쉽고 변경이 용이한 네트워크 모듈을 개발하는것은 중요하다. 네트워크 통신을 위해 URLSession을 사용할 수 있다. ..

    [iOS] - 키체인(Key Chain)

    키체인 키체인을 학습하게된 이유는 OAuth를 통해 소셜로그인을 하고 toke을 받게된다. 이를 저장, 활용하려 하지만, 유저디폴트에 저장하기엔 민감한 정보라 키체인을 학습하게 되었다. UserDefault와 다른점? UserDefault에도 데이터를 쉽게 저장할 수 있지만 단순히 .info파일에 키-값 쌍의 텍스트 형태로 저장하게된다. 그렇기 때문에 OS를 탈옥하면 내용물을 볼 수 있기 때문에 보안이 필요한 민감한 데이터를 저장하기에는 보안이슈등 어울리지 않는다. 이를 방지하기 위해 암호, APIToken, 알고리즘을 위한 value등은 KeyChain에 저장하는 것이 좋다. 그렇다면 KeyChain이란 무엇일까? 암호화된 데이터베이스, 즉 데이터를 안전하게 저장할 수 있는 보관소이다. KeyChain..

    [iOS] Static/Dynamic Library

    Library Xcode Target의 일부로 빌드되지 않은 코드 및 데이터 조각을 정의한 것. 라이브러리는 다른 프로젝트에서 재사용 할 수 있는 코드 및 리소스 모음을 나타낸다. 여기에는 특정 기능을 제공하거나 일반적인 프로그램이 문제를 해결하는 미리 작성된 함수, 클래스 및 기타 구성 요소가 포함되어있다. 단순히 코드 및 데이터 조각을 정의했고 이걸 내 앱 코드에 가져다 쓰고싶다. 라이브러리와 앱의 소스코드 파일을 병합(merge)하는 프로세스를 Link라고 한다. 라이브러리는 앱에 Link되는 방식에 따라 두 가지로 나뉘게 된다. Static Library - ".a" 접미사를 가진다 Dynamic Library - "dylib" 접미사를 가진다 Static Library Static Library..

    [iOS] Class의 성능을 향상시킬 수 있는 방법들

    final, private키워드를 사용해 성능을 향상시킬 수 있다. 여러 방법이 있지만 메서드 디스패치(Method Dispatch)와 관련이 있다. https://clamp-coding.tistory.com/364 [Swift]. Method Dispatch Method Dispatch 실제로 Method는 CPU에대한 명령어이며, 실제론 코드 영역에만 존재한다. 그렇기 때문에 코드 영역에 있는 메서드를 실행시키려면 메서드 주소가 필요하다. 그런데 그 메서드 주소를 clamp-coding.tistory.com final final이 붙은 클래스는 상속이 불가하기 때문에 하위 클래스에서 이들을 오버라이딩 될 수 없게 되므로 자연스럽게 Static Dispatch로 동작하게 된다. private(접근제어)..

    [iOS] Boudns와 Frame

    Bouns: 뷰의 위치가 뷰 자신의 좌표계에 의해 결정된다. Frame: 뷰의 위치가 부모뷰에 의해 결정된다. Frame Frame은 뷰의 좌표가 부모뷰를 기준으로 결정된다. Bounds Bouns는 본인의 좌표계에 의해 위치가 정해지기 때문에 어느 위치에 있던 (0, 0)을 유지한다. 왜 굳이? 이유를 알기 위해 Frame을 이해해야한다. Frame은 단순히 만드려는 뷰를 나타내는 것이 아니라 만드려는 뷰를 감싸는 사각형 모양의 뷰이다. 그리고 Frame의 좌표와 크기도 이렇게 감싸는 사각형의 좌표와 크기를 나타낸다. Frame은 감싸고 있는 뷰가 회전한다면 그에 맞춰 크기와 좌표가 바뀌게된다. 하지만 Bounds는 본인의 크기와 좌표 (0, 0)을 유지하게 된다. 용도의 차이 Frame: 좌표를 기준..

    [iOS] UIResponder

    Xcode 프로젝트를 만들면 AppDelegate와 SceneDelegate가 존재한다 이 클래스는 UIResponder를 상속받게된다. https://developer.apple.com/documentation/uikit/uiresponder UIResponder | Apple Developer Documentation An abstract interface for responding to and handling events. developer.apple.com 이벤트에 응답하고 처리하기 위한 추상 인터페이스이다. UIResponder는 터치, 동작 및 키보드 이벤트와 같은 사용자 이벤트에 응답하는 개체의 기본 클래스이다. 즉 애플리케이션의 뷰 계층 구조에 있는 개체로 이벤트를 처리하고 전달하는 역할을..