일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- SWIFT
- 리펙터링
- clean architecture
- ios
- Observable
- 애니메이션
- swift documentation
- RxCocoa
- map
- Protocol
- rxswift
- 스위프트
- 리팩토링
- 클린 코드
- UICollectionView
- swiftUI
- collectionview
- Human interface guide
- uiscrollview
- HIG
- Refactoring
- Xcode
- uitableview
- combine
- MVVM
- ribs
- Clean Code
- UITextView
- 리펙토링
- tableView
- Today
- Total
목록push (11)
김종권의 iOS 앱 개발 알아가기
화면전환 기초 present: 현재 화면과 다른 새로운 과업을 수행할 때 push: 현재 화면과 연관된 과업을 수행할 때 화면전환이 되는 케이스와 안되는 케이스 같은 화면에서 present 여러번은 불가능 crash 발생은 하지 않음 crash가 발생하는 케이스는 자기 자신 화면을 띄우는 경우나 같은 화면을 띄우는 경우에 발생 @objc private func tap() { // A화면에서 B화면을 present > A화면에서 C화면을 present (x) present(vc1, animated: true) DispatchQueue.main.asyncAfter(deadline: .now() + 3, execute: { self.present(self.vc2, animated: true) }) } (같은 ..
시뮬레이터에서 푸시 테스트 방법 terminal에서 커맨드 사용 (번거로움이 있으므로 비추천) .apns파일 사용 (json으로 구성된 .apns파일을 만든 후 simulator에 드래그하면 푸시가 가지만, 딥링크 푸시 및 여러가지 푸시를 만들고 테스트 하고 싶은 경우, 직관적이지 않음) RocketSim 앱 사용 - 직관적인 UI를 제공하여 쉽게 테스트 가능 RocketSim 설치 RocketSim 홈페이지에서 설치 (앱스토어) Simulator에서 푸시 테스트를 쉽게 하기 위해 사용 열기 > Select Xcode 선택 > Application에서 설치된 Xcode 선택 권한 허용 recording 권한 - 시뮬레이터를 실행하면 자동으로 그 옆에 RocketSim 기능을 사용할 수 있는 화면을 띄워줌..
화면전환 애니메이션 커스텀 방법 UIViewControllerTransitioningDelegate를 사용한 방법 델리게이트를 구현하여 여러곳에서 공통적인 애니메이션이 사용될 경우, 한번 구현해놓으면 다른곳에서도 쓰기 쉽기 때문에 재활용성이 높음 * UIViewControllerTransitioningDelegate를 이용한 화면전환 애니메이션 커스텀 방법은 이전 포스팅 글 참고 CATransition을 사용한 방법 여러곳에서 사용되지 않고 특정 화면에서만 사용하는 경우, transition 인스턴스를 만들어서 적용 CATransition이란? Core Animation Transition은 단어 그대로 UIKit 보다 더 낮은 레벨인 Core Animation의 한 종류이며 특정 값을 세팅하여 tran..
1. DeepLink (딥 링크) - 앱 푸시, APNs (Apple Push Notification service ) 개념 2. DeepLink (딥 링크) - URL Scheme, URLComponents, Foreground, Background, Not Running 기초 개념 3. DeepLink (딥 링크) - FCM(Firebase Cloud Messaging) remote 푸시 사용 방법 4. DeepLink (딥 링크) -Dynamic Link (다이나믹 링크) 사용 방법 (Firebase, 공유하기 기능) 5. DeepLink (딥 링크) - URL Scheme과 Dynamick Link를 이용한 딥 링크 처리방법 cf) Push Notification 처리 관련 메소드 총 정리 글은 ..
Subject 기본 개념 Observable과 Observer의 성격을 모두 가지고 있는 프로토콜 Observable의 성격: subscribe을 하여 이벤트를 수신할 수 있는 상태 Observer의 성격: subscribe한 대상들을 내부에서 기록하고 있는 상태 (= subscribe한 대상들을 알고 있기 때문에, 여러번 Observable에 이벤트를 emit이 가능) (= multi case) // 프레임워크 없이 직접 구현한 MySubject.swift public final class MySubject { struct Observer { weak var observer: AnyObject? let block: (Value) -> Void } private var observers = [Observ..
iOS 푸시 원리 앱 > 애플 서버에 토큰 요청 > 앱에서 토큰 수신 > push 서버에 토큰 등록 > push서버에서 가공된 내용 + token 앱에서 수신 > 애플서버에 다시 전송 > 애플서버에서 앱으로 최종 푸시 전송 앱에서 push를 “p8 or .p12 certificate 파일” 인증서와 함께 애플서버에 HTTP로 토큰 달라고 요청 애플 서버는 인증서, 프로파일을 받고 인증 후 토큰 응답 받은 토큰값과 메시지를 앱에서 push 서버로 POST방식으로 요청 push서버에서 POST요청을 받아 내용을 가공 > 애플 서버에 요청 (push서버에서는 APNs키가 등록되어 있어야함) 애플 서버는 토큰을 확인하고 토큰의 주인에 해당하는 아이폰 기기에 push 전송 앱 가동 APNs(Apple Push N..
푸시의 종류 로컬 푸시(local notification): 앱으로부터 push를 앱에 띄우는 것 서버 푸시(remote notification): 서버로부터 push를 앱에 띄우는 것 - ios-development.tistory.com/264 푸시 권한 요청 푸시를 다루는 객체는 `UNUserNotificationCenter`의 싱글톤 객체 활용 class ViewController: UIViewController { let userNotiCenter = UNUserNotificationCenter.current() // 추가 override var viewDidLoad() { super.viewDidLoad() } } 사용자에게 알림 권한 요청을 하는 메소드 추가: UNAuthorizationOpt..
CATransaction이란? Core Animation의 한 종류 implicit transaction과 explicit transaction (run loop개념과 동일)에서 explicit transaction을 할 때 CATransaction을 run loop에 CATransaction.commit()코드 이후에 보내게 됨 CATransaction.commit()코드 전에 CATransaction 속성을 지정해주면 전환 관련 애니메이션이 지정해준대로 명시적(explicit)으로 실행 사용 방법 UINavigationController를 extension하여 사용 extension UINavigationController { func popToRoot(completion: @escaping () -..