[swift] FSCalendar에서 특정 날짜의 이벤트 액션 앱 리뷰 요청 설정

FSCalendar은 iOS에서 많이 사용되는 달력 라이브러리입니다. 이 라이브러리를 사용하여 특정 날짜에 이벤트 액션을 추가하고, 해당 날짜에 앱 사용자에게 앱 리뷰를 요청하는 기능을 설정해볼 것입니다.

FSCalendar 이벤트 액션 설정하기

  1. 먼저, FSCalendar을 프로젝트에 추가합니다. 적절한 방법으로 라이브러리를 설치하고, CocoaPods를 사용하는 경우 Podfilepod 'FSCalendar'을 추가하고 pod install 명령어를 실행합니다.

  2. FSCalendar을 사용할 뷰 컨트롤러에서 FSCalendarDelegate를 상속받습니다.

import FSCalendar

class CalendarViewController: UIViewController, FSCalendarDelegate {
    // ...
}
  1. FSCalendar 객체를 생성하고, 해당 객체의 delegate를 현재 뷰 컨트롤러로 설정합니다.
class CalendarViewController: UIViewController, FSCalendarDelegate {
    let calendar = FSCalendar()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        calendar.delegate = self
    }
    
    // ...
}
  1. 이벤트를 설정할 날짜를 지정하고 해당 날짜에 이벤트를 추가합니다.
class CalendarViewController: UIViewController, FSCalendarDelegate {
    let calendar = FSCalendar()
    var eventDates: [Date] = []
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        calendar.delegate = self
        
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd"
        
        // 이벤트를 추가할 날짜를 Date 형식으로 변환하여 배열에 저장
        if let eventDate = dateFormatter.date(from: "2022-01-01") {
            eventDates.append(eventDate)
        }
        
        // 카렌다에 이벤트를 표시할 때 셀 스타일을 변경할 수도 있음
        calendar.appearance.eventDefaultColor = UIColor.red
    }
    
    // ...
}
  1. FSCalendarDelegate의 calendar(_:didSelect:date:) 메서드를 구현하여 선택한 날짜에 대한 처리를 추가합니다.
class CalendarViewController: UIViewController, FSCalendarDelegate {
    let calendar = FSCalendar()
    var eventDates: [Date] = []
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        calendar.delegate = self
        
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd"
        
        if let eventDate = dateFormatter.date(from: "2022-01-01") {
            eventDates.append(eventDate)
        }
        
        calendar.appearance.eventDefaultColor = UIColor.red
    }
    
    func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
        // 선택한 날짜가 이벤트가 있는 날짜인 경우, 앱 리뷰 요청을 진행합니다.
        if eventDates.contains(date) {
            // App Store에서 앱 리뷰 요청을 처리하는 코드 작성
        }
    }
}

앱 리뷰 요청 설정하기

FSCalendar을 사용하여 특정 날짜에 앱 리뷰 요청을 설정하는 방법은 iOS의 SKStoreReviewController를 이용하는 것입니다. SKStoreReviewController는 iOS 10.3 이상의 버전에서 사용할 수 있습니다.

  1. 먼저, SKStoreReviewController를 import 합니다.
import StoreKit
  1. SKStoreReviewController의 requestReview() 메서드를 호출하여 앱 리뷰 요청을 보냅니다. 이 코드는 앱 리뷰를 요청하는 시점에서 호출되어야 합니다.
func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
    if eventDates.contains(date) {
        // App Store에서 앱 리뷰 요청을 진행합니다.
        SKStoreReviewController.requestReview()
    }
}

위와 같이 설정하면 FSCalendar에서 특정 날짜의 이벤트가 발생할 때 앱 리뷰 요청이 보내집니다.

참고 자료