2022.12.14
S004 김민중 S019 박영준 S049 장재훈 S060 홍지수
iOS01 팀 - 부기온앤온
공간캡슐
ⓒ NAVER Connect Foundation
1. 소개
1.1 팀 소개
1.2 프로젝트 소개
2. 사용 기술
2.1 구조
2.2 비동기
3. 기술적 고민
3.1 Apple Token Revoke
3.2 이미지 처리 및 캐싱 모듈
3.3 캡슐 개봉 가능 여부 계산 로직
3.4 3D Carousel CollectionView
2
ⓒ NAVER Connect Foundation
CHAPTER 1.
소개
1.1 팀 소개
1.2 프로젝트 소개
ⓒ NAVER Connect Foundation
4
1.1 팀 소개
S004 김민중
S019 박영준
S049 장재훈
S060 홍지수
@solbat
@pyj9748
@trumanfromkorea
@hongpower
ⓒ NAVER Connect Foundation
5
1.2 프로젝트 소개
ⓒ NAVER Connect Foundation
6
1.2 프로젝트 소개
https://youtu.be/yiHOi-m3Stk
기능 시연영상
ⓒ NAVER Connect Foundation
CHAPTER 2.
사용 기술
2.1 구조
2.2 비동기
ⓒ NAVER Connect Foundation
8
2.1 구조
View 와 Model 간 의존성 최소화
ViewController 부담 감소
MVVM-C
화면 전환 로직 분리
View Model
Model
View
Notify
Update
Binding
Event
Coordinator
ⓒ NAVER Connect Foundation
9
2.2 비동기
비동기 처리 - 콜백 지옥 탈출!
UI Event 처리
VM – VC 데이터 바인딩
RxSwift
ⓒ NAVER Connect Foundation
CHAPTER 3.
기술적 고민
3.1 Apple Token Revoke
3.2 이미지 처리 및 캐싱 모듈
3.3 캡슐 개봉 가능 여부 계산 로직
3.4 3D Carousel CollectionView
ⓒ NAVER Connect Foundation
CHAPTER 3.
기술적 고민
3.1 Apple Token Revoke
ⓒ NAVER Connect Foundation
12
3.1 Apple Token Revoke
Apple Account 정책 변경
ⓒ NAVER Connect Foundation
13
3.1 Apple Token Revoke - 문제 상황
Firebase
공간캡슐
Apple 서버
Apple Token Revoke
#문제 상황
Firebase Auth, Firestore 에서만 계정 삭제
계정 삭제 시 Apple Token 유지
ⓒ NAVER Connect Foundation
14
01
JavaScript 와
Firebase Cloud Function 을
활용한 경우 다수 존재
02
서버 개발자의 고민거리?
3.1 Apple Token Revoke - 문제 상황
ⓒ NAVER Connect Foundation
15
#해결 방법
Authorization Code 재발급
Authorization Code 는 일회성, 유효기간은 5분
회원 탈퇴 전 로그인 재실행
Authorization Code
Client Secret
Refresh Token
Revoke Token
3.1 Apple Token Revoke - 해결 방법
ⓒ NAVER Connect Foundation
16
#성과
3.1 Apple Token Revoke - 성과
ⓒ NAVER Connect Foundation
17
01
외부 라이브러리 의존성 감소
3.1 Apple Token Revoke - 성과
02
Firebase 무료 요금제 내에서
문제 해결
ⓒ NAVER Connect Foundation
CHAPTER 3.
기술적 고민
3.2 이미지 처리 및 캐싱 모듈
ⓒ NAVER Connect Foundation
19
#문제 상황
UICollectionView 를 이용해 여러 장의 이미지를 출력해야 하는 상황
같은 이미지가 앱 내 여러 곳에서 쓰이는 경우 존재
이미지 중복 호출
3.2 이미지 처리 및 캐싱 모듈 - 문제 상황
ⓒ NAVER Connect Foundation
20
01
02
시간 문제
이미지 출력 위해 매번 URL 요청
→ 캐시 이용으로 해결 가능
메모리 문제
매번 원본 이미지 출력
→ 이미지 Downsampling 으로 해결 가능
3.2 이미지 처리 및 캐싱 모듈 - 문제 상황
ⓒ NAVER Connect Foundation
21
라이브러리 사용?
외부 라이브러리에 대한 의존성 최소화
직접 구현해보며 동작 원리 이해
#해결 방법
3.2 이미지 처리 및 캐싱 모듈 – 해결 방법
ⓒ NAVER Connect Foundation
22
NSCache<NSString, NSData>
Key
URL → NSString
Value
Image Data → NSData
3.2 이미지 처리 및 캐싱 모듈 – 해결 방법
ⓒ NAVER Connect Foundation
23
시간 단축
#성과
3.2 이미지 처리 및 캐싱 모듈 - 성과
ⓒ NAVER Connect Foundation
24
Downsampling
3.2 이미지 처리 및 캐싱 모듈 - 성과
ⓒ NAVER Connect Foundation
25
Downsampling
3.2 이미지 처리 및 캐싱 모듈 - 성과
ⓒ NAVER Connect Foundation
CHAPTER 3.
기술적 고민
3.3 캡슐 개봉 가능 여부 계산 로직
ⓒ NAVER Connect Foundation
27
캡슐 개봉 가능 여부 계산
사용자의 움직임이 감지될 때마다
사용자와 모든 캡슐의 거리를 계산해서
개봉 가능한 캡슐인지 판단 후
화면에 출력
#문제 상황
3.3 캡슐 개봉 가능 여부 계산 로직 – 문제 상황
ⓒ NAVER Connect Foundation
28
캡슐 감시 범위 축소
사용자의 초기 위치로부터
1km내에 있는 캡슐들만 거리 계산
#해결 방법
3.3 캡슐 개봉 가능 여부 계산 로직 – 해결 방법
ⓒ NAVER Connect Foundation
29
사용자가 반경 1km를 벗어난다면?
3.3 캡슐 개봉 가능 여부 계산 로직 – 해결 방법
ⓒ NAVER Connect Foundation
30
사용자가 1km에
근접하게 이동하는 경우
새로운 사용자 위치로부터
연산할 캡슐 재지정
3.3 캡슐 개봉 가능 여부 계산 로직 – 해결 방법
ⓒ NAVER Connect Foundation
31
캡슐 100개
서울 안에서 움직이는 경우
개선 전
개선 후
#성과
3.3 캡슐 개봉 가능 여부 계산 로직 – 성과
ⓒ NAVER Connect Foundation
32
캡슐 100개
좁은 반경에서 움직이는 경우
개선 전
개선 후
#성과
3.3 캡슐 개봉 가능 여부 계산 로직 – 성과
ⓒ NAVER Connect Foundation
CHAPTER 3.
기술적 고민
3.4 3D Carousel CollectionView
ⓒ NAVER Connect Foundation
34
Carousel?
3.4 3D Carousel CollectionView
ⓒ NAVER Connect Foundation
35
01
02
아쉬운 UI/UX
사용자의 감성을 자극하는 앱을 기획하였으나
이를 전달할 UI/UX가 부족하였음
‘Infinite’ Carousel
좌우로 ‘무한히’ 돌아가는 Carousel을 구현하고자 하였음
#문제 상황
3.4 3D Carousel CollectionView – 문제 상황
ⓒ NAVER Connect Foundation
36
01
CATransform3D
#해결 방법
3.4 3D Carousel CollectionView – 해결 방법
ⓒ NAVER Connect Foundation
37
01
CATransform3D
3.4 3D Carousel CollectionView – 해결 방법
ⓒ NAVER Connect Foundation
38
01
CATransform3D
3.4 3D Carousel CollectionView – 해결 방법
ⓒ NAVER Connect Foundation
39
01
CATransform3D
3.4 3D Carousel CollectionView – 해결 방법
ⓒ NAVER Connect Foundation
40
02
Copy & scrollToItem ...?
3.4 3D Carousel CollectionView – 해결 방법
ⓒ NAVER Connect Foundation
41
02
Copy & scrollToItem ...?
3.4 3D Carousel CollectionView – 해결 방법
ⓒ NAVER Connect Foundation
42
02
Copy & scrollToItem ...?
3.4 3D Carousel CollectionView – 해결 방법
ⓒ NAVER Connect Foundation
43
02
Copy & scrollToItem ...?
3.4 3D Carousel CollectionView – 해결 방법
ⓒ NAVER Connect Foundation
44
02
Copy & scrollToItem ...?
3.4 3D Carousel CollectionView – 해결 방법
ⓒ NAVER Connect Foundation
45
02
UICollectionViewDataSource ...!
3.4 3D Carousel CollectionView – 해결 방법
ⓒ NAVER Connect Foundation
46
02
UICollectionViewDataSource
3.4 3D Carousel CollectionView – 해결 방법
ⓒ NAVER Connect Foundation
47
02
UICollectionViewDataSource
3.4 3D Carousel CollectionView – 해결 방법
ⓒ NAVER Connect Foundation
48
3.4 3D Carousel CollectionView – 성과
#성과
ⓒ NAVER Connect Foundation
49
3.4 3D Carousel CollectionView – 성과
Finite Carousel
Infinite Carousel
ⓒ NAVER Connect Foundation
End of Document
Thank You.
ⓒ NAVER Connect Foundation