Firebase 프로젝트를 Debug, Release 별로 나누어 사용 중인 경우 FCM Token관리가 중요하다. 기기에서 빌드환경이 Debug로 설치된 상태에서 Release로 앱을 다시설치하는 경우 FCM Token이 변경될 수 있다.
fcmToken의 값이 변경되는 시점은 아래 4가지 경우이다.
FCM을 직접 갱신하기 위해서는 삭제 후 조회를 하면 된다. 아래코드는 FCM 토큰을 직접갱신하는 코드인데, 삭제는 옵셔널이다.
// FCM 토큰 삭제
Messaging.messaging().deleteToken { error in
print(error)
}
// FCM 토큰 조회
Messaging.messaging().token { token, error in
if let error = error {
print("Error fetching FCM registration token: \(error)")
} else if let token = token {
print("FCM registration token: \(token)")
}
}
반복되는 데이터를 표시하는 경우와 추후 확장성을 위해서는 CollectionView Compositional Layout를 사용할 수 있다. CollectionView Compositional Layout을 사용할 때는 기본적인 UICollectionViewDataSource와 사용할 수 도 있고 UICollectionViewDiffableDataSource와도 사용할 수 있다. UICollectionReusableView를 사용하여 각 섹션별 Header, Footer를 구현하는 경우, viewForSupplementaryElementOfKind 메서드에서 조건문을 조심하지 않으면 재사용되기 때문에 주의해서 사용해야겠다.
지지난 주 FireStore를 사용하는 프로젝트의 경우 빌드시간이 기하급수적으로 증가한 이유에 대해서 확인해보았는데 일단 FireStore를 사용한다면 빌드시간이 엄청나게 증가한 것은 확인했다. 빌드시간 단축을 위해 찾아본 결과 FireStore는 C++로 구성된 파일이 많은데 Xcode로 빌드하는 경우 컴파일할 때 시간이 증가할 수 있다는 내용을 FireStore iOS SDK 저장소의 ReadMe에서 확인을 했다.
pod 'FirebaseFirestore', '10.19.0'
이였다.pod 'FirebaseFirestore', :git => '', :tag => '10.19.0'
로 변경했다.빌드시간이 FireStore로 변경 전과 유사하게 줄어들었다. 즉, 미리 컴파일된 바이너리파일에서 FireStore를 사용하도록 변경한 것이다.