듀다의 성장개발로그

iOS Swift) 사용자에게 업데이트 알림 띄우는 방법 - Siren 본문

카테고리 없음

iOS Swift) 사용자에게 업데이트 알림 띄우는 방법 - Siren

du-da 2021. 3. 3. 10:04

개발자는 버그 수정을 위해 또는 새로운 기능 추가를 위해 앱의 업데이트 버전을 릴리즈하기도 합니다.

그러나 사용자는 앱스토어에 들어가기 전까지 업데이트 버전이 나왔는지 알 수 없습니다.

사용자에게 이를 알려주려면 어떻게 해야 할까요? Siren 라이브러리를 활용하면 업데이트 버전 알림을 앱 내의 기능으로 구현할 수 있습니다.

 

Siren 설치

CocoaPods

pod 'Siren'

 

Swift Package Manager

.Package(url: "https://github.com/ArtSabintsev/Siren.git", majorVersion: 5)

그 다음 AppDelegate.swift에 필요한 코드를 작성해주시면 됩니다.

 

가장 간단한 예제

import Siren //라이브러리 추가
import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        window?.makeKeyAndVisible() //반드시 이 메소드가 선행되어야 합니다.
	Siren.shared.wail() //이 코드를 통해 업데이트 알림을 동작시킵니다.
        
        return true
    }
}

위 예제는 Siren의 기본적인 기능만 추가한 코드입니다. 알림 빈도나 옵션 등을 변경하기 위해선 내용을 더 추가해주어야 합니다. 게다가 한국 앱스토어에만 앱을 출시하신 분들은 위 코드가 제대로 동작하지 않을 수 있습니다.

 

한국 앱스토어로 변경

let siren = Siren.shared
siren.apiManager = APIManager(contry: .korea) //기준 위치 대한민국 앱스토어로 변경
siren.presentationManager = PresentationManager(forceLanguageLocalization: .korean) //알림 메시지 한국어로
siren.wail()

첫 번째 예제의 Siren.shared.wail()부분을 위와 같이 바꿔주시면 한국에만 출시한 앱에서도 업데이트 알림이 출력됩니다.

 

알림 빈도, 옵션 변경

siren.rulesManager = RulesManager(majorUpdateRules: .critical,
                                  minorUpdateRules: .annoying,
                                  patchUpdateRules: .default,
                                  revisionUpdateRules: .relaxed)

RulesManager를 통해 알림 빈도와 생략 옵션 설정이 가능합니다.

각 옵션들은 아래와 같이 설정되어 있습니다.

 

annoying: 항상 확인, 다음에 업데이트 가능

critical: 항상 확인, 즉시 업데이트

default: 하루에 한 번 확인, 다음에 업데이트 가능, 이 버전 생략 가능

hinting: 일주일에 한 번 확인, 다음에 업데이트 가능

persistent: 하루에 한 번 확인, 다음에 업데이트 가능

relaxed: 일주일에 한 번 확인, 다음에 업데이트 가능, 이 버전 생략 가능

 

왼쪽: default, 가운데: annoying, 오른쪽: force

사용자가 직접 조건을 설정할 수도 있습니다.

siren.rulesManager = RulesManager(majorUpdateRules: Rules(promptFrequency: .immediately, forAlertType: .force),
                                  minorUpdateRules: Rules(promptFrequency: .daily, forAlertType: .option),
                                  patchUpdateRules: Rules(promptFrequency: .weekly, forAlertType: .skip),
                                  revisionUpdateRules: Rules(promptFrequency: .weekly, forAlertType: .none))

promptFrequency와 forAlertType의 값을 직접 설정해서 원하는 옵션을 만들 수 있습니다.