iOS

· iOS
https://developer.apple.com/documentation/uikit/uiimage/orientation UIImage.Orientation | Apple Developer Documentation Constants that specify the intended display orientation for an image. developer.apple.com 이미지를 회전하고 크롭하는 기능을 구현하면서 orientation이라는 기능을 알게 되었다. orientation을 통해 이미지가 나타나는 시점에 회전 방향을 결정하여 화면에 나타난다. 내가 원하는 이미지를 불러와 orientation값을 찍어보았다. print("[orientation] \(image.imageOrientation)"..
· iOS
이전에 로컬에서 보내는 푸시는 구현한 경험이 있었지만 FCM이나 APNS를 사용한 경험이 없어 조금 생소하게 다가왔다. FCM을 사용해도 애플 개발자 계정에서 APN을 설정해서 인증서나 토큰을 등록해야했는데 이 과정을 학습해보고자 한다. 푸시 종류 1. 로컬에서 직접 보내는 알림 2. 서버에서 보내는 알림 내가 사용한 FCM은 2번에 속한다. APNS란? Apple Push Notification Service로 iOS에서 푸시 알림을 보내기 위해 APNS를 사용해야한다. 서버에서 보내는 알림의 경우 꼭 이 APNS를 거쳐야한다. FCM을 사용할 때 파이어베이스에서 알림을 보낸다고 착각할 수 있는데 사실 APNS로 알림을 보내는거고 실제 알림은 APNS로부터 오게된다. 앱을 시작할 때 아래 코드를 통해 ..
· iOS
디바이스의 고유한 값을 통해 무언가를 식별하기위한 고유한 값이 필요할 수 있다. 이때 사용되는 개념으로 UUID와 UDID가 있다. 1. UDID (Unique Device Identifier) 각 기기에 부여되는 고유한 디바이스 식별값이다. 어떤 앱을 사용하더라도 이 값은 동일한 값을 가진다. iOS5 이전에는 코드로 확인할 수 있었지만 사용자 개인 정보 보호 목적으로 인해 deprecated 되었다. 지금은 코드로 확인은 불가능하며 iTunes를 통해 확인할 수 있다. UDID가 deprecated 되면서 이를 대체하기 위해 UDID를 사용할 수 있다. 2. UUID (Universally Unique Identifier) deprecated된 UDID를 대체하기위해 UUID를 사용할 수 있다. UI..
· iOS
새로운 프로젝트를 진행하면서 웹뷰를 사용하게 되었다. 기존에 내가 경험해 봤던 웹뷰는 간단하게 화면을 띄워주는 것과 웹뷰를 이용한 패스 인증만 해본 경험이 있어서 생소한 개념으로 다가왔다. 프로젝트가 대부분 웹뷰로 되어있어서 꼭 네이티브가 필요한 작업들(카메라, 알림 등..)을 제외하곤 모두 웹뷰로 되어있었기 때문에 해야 할 작업이 적었음에는 확실했지만 간단하지만 처음 경험해 보는 웹뷰 연동에 많은 시행착오가 있었다. 먼저 제목으로 언급한 WKWebView 말고 UIWebView, SFSafariView와 같은 종류의 웹뷰가 있다. 1. UIWebView iOS 2.0에 출시된 굉장히 오래된 웹뷰이다. 현재 deprecate 되었으므로 UIWebView는 다른 방식으로 대체하여 사용한다. 2. WKWeb..
· iOS
네이티브와 웹뷰를 연동하여 개발 중 크롬과 사파리와 같은 브라우저에서는 별다른 설정 없이도 자동로그인이 가능했지만 네이티브로 연결된 WKWebView에서는 자동로그인 기능을 사용할 수 없었다. 이유는 WKWebView에서는 쿠키 값을 따로 설정해주어야만 자동로그인이 가능했기 때문이였고, 안드로이드와 동일한 사용자 경험을 제공하기 위해서 자동로그인을 위해 쿠키 값을 직접 설정해주었다. 또한 쿠키 value가 기존 값을 유지하지 않고 새로 만들어주는 상황이였기 때문에 자동로그인이 정상적으로 작동하지 않는 것 같았다. 사파리 개발자 도구를 사용해 휴대폰 모바일 웹 페이지를 개발자 도구로 디버깅하였다. (크롬도 동일하게 사용 가능하지만 그냥 사파리 써본적이 없어서 사용해보았다! 써보니까 사파리가 좀 더 편한것 ..
· iOS
PageViewController 사용해보기..!! 페이지 넘기듯이 내가 원하는 뷰 컨트롤러를 제어할 수 있다. extension PageVC: UIPageViewControllerDelegate, UIPageViewControllerDataSource { // 페이지 이동할때마다 호출 func pageViewController(_ pageViewController: UIPageViewController,didFinishAnimating finished: Bool,previousViewControllers: [UIViewController],transitionCompleted completed: Bool){ guard completed else { return } currentIndex = pageVie..
· iOS
1년전 rx를 사용해야만 하는 프로젝트가 있어서 그때 잠깐 공부하고, 작년 7월쯤 한번 더 공부했지만 그때는 rx를 왜 사용해야하는지, 장점을 찾아봐도 이해는 되지만 크게 와닿지 않아서 조금 공부하다가 자연스럽게 사용하지 않게 되었다. 취업준비를 하면서 기존에 만들어 배포했던 다이어리 앱 코드의 심각성을 느껴 리팩토링과 기능을 추가하는 단계에서 연습용 프로젝트로 했던것 보다 좀 더 복잡한 비동기처리를 해야할 일이 생겼는데 @escaping으로 벗어나고 중괄호 안으로 타고타고 들어가는 코드를 보니 뭔가 마음에 들지 않아 좀 더 찾아보니 이런 부분을 rx로 해결할 수 있다는 것을 알게 되었다. 그때부터 rx를 배워야겠다고 생각하고 취업을 한 후 회사 코드를 보다보니 복잡한 비동기 순서때문에 @escaping..
· iOS/Swift
초기화 인스턴스를 생성해서 메모리 공간을 할당받는 것. 모든 저장 속성들은 초기화가 되어야 인스턴스 사용이 가능 (초기값이 지정되어 있어야 함) 클래스 구조체 직접 초기값 넣기 O O 생성자 사용 O O 멤버와이즈 이니셜라이저 X O Convenience init 추가적인 작업을 할 수 있도록 해주는 보조 이니셜라이저 자기 단계에 있는 지정 생성자 또는 자기 단계에 있는 다른 편의 생성자 호출 가능 지정 생성자는 상위 지정 생성자를 호출해야함 클래스에만 해당하는 기능 (상속과 관련) 지정생성자보다 적은 갯수의 파라미터로 보다 편리하게 생성하기 위한 서브(Sub)개념의 생성자 편의 생성자는 지정 생성자에 의존 및 호출(지정생성자가 저장 속성 초기화) 초기화 과정을 간편하게 제공하기 위함 실질적으로 가능한 ..
hilily
'iOS' 카테고리의 글 목록 (2 Page)