본문 바로가기

전체 글82

FCM 푸시알림 사용기1 - 특정 사용자에게 푸시알림 보내기 프로젝트를 진행하면서 FCM을 이용한 푸시 알림을 구현하게 되었다. 고민했던 부분을 바탕으로 구현 내용을 정리해 참고로 프로젝트는 백엔드 개발 없이 파이어베이스의 firestore 서비스를 이용했다. 또한 파이어베이스 등록 및 인증키 등록 과정은 다른 블로그들에 자세히 나와있어 코드 구현 부분 중심으로 작성할 예정이다. 원격 알림 등록, FCM 토큰 얻기 Notification 서비스 함수에 다음과 같은 등록 함수를 작성하고 func registerRemoteNotification() { if #available(iOS 10.0, *) { let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.c.. 2024. 2. 21.
Notifiaction Center VS Delegate Pattern 두 가지 방식의 사용법보다는 차이점에 초점을 맞춰 공부를 해보았다. (사용법은 따로 올릴 예정) Delegate ? Notification? 그게 뭔데? Delegates와 Notification 방식은 독립적인 기능을 하는 객체끼리 소통을 하기 위해 사용된다. 즉 A라는 뷰컨트롤러와 B라는 뷰컨트롤러가 있을 때, A에서 B로 알림을 보내 특정 동작을 실행하고 싶을 때 사용하는 것이다. Delegate 패턴 Delegate 패턴이란? delegate = 위임 → 한 객체가 자신의 책임을 다른 객체에게 위임 시키는 디자인 패턴 지정된 객체가 해야하는 메서드들의 원형을 프로토콜 형태로 정해놓는다. 위임을 시키는 객체에서 해당 프로토콜형식의 델리게이트 프로퍼티를 가지고 있고, 프로퍼티 내부 함수를 적절한 위치.. 2024. 2. 13.
weak self 를 사용하지 않아도 되는 경우 결론적으로 클로저에서 weak self를 사용하지 않아도 되는 경우는 다음과 같은 두 가지가 있다. 1. non-escaping 클로저인 경우 2. DispatchQueue.main.asyncAfter 함수를 사용할 경우 escaping 클로저와 non-escaping 클로저 함수 파라미터로 전달된 클로저를 함수 실행이 종료된 후 실행되는 것을 함수를 탈출(escape)한다고 한다. 즉 escaping클로저는 파라미터로 전달된 클로저가 탈출하여 함수 종료 후에 실행되는 클로저를 의미한다. escaping non-escaping 실행 시점 함수 종료 후 함수 내에서 코드 호출 즉시 외부 저장 여부 가능 불가능 두 함수의 차이는 외부 저장 여부에 대해서도 다르다. non - escaping 클로저는 함수 외.. 2024. 2. 7.
CollectionView Cell 클릭이 안될때 대체 방법 프로젝트 도중 collectionview의 didselectItemAt 함수가 호출되지 않는 문제가 발생하였다.그래서 여러 가지 시도를 해봤는데 계속해서 되지 않아didselectItemAt 함수 대신 해 사용할 수 있는 방법을 찾아 정리해볼까 한다.시도해 봤던 방법이미지 뷰가 셀 전체를 차지하고 있어 계층 구조 시 셀이 이미지 뷰에 덮어지면서 무언가 꼬여 해당 함수가 호출이 되지 않는 건 아닐까 의심되었다.isUserInteractionEnabled 속성을 줘봄 ⇒ 실패isUserInteractionEnabled 뷰에 대한 터치, 누르기, 키보드 및 포커스 이벤트가 무시되고 이벤트 큐에서 제거됨. 기본값은 true 그렇다면 나의 가정이 잘못된 것인지 확인해보기 위해이미지에 여백을 줘 해당 여백을 클릭했.. 2024. 2. 2.