【iOS】Firestoreで強制アップデート機能をつける
Firestore
を使って、アプリ側の強制アップデート機能を実装したので、今回はその方法を簡単に紹介していきたいと思います👷♀️
それではやっていく
まず重要なのは、現在のバージョンが必須バージョンを満たしているかどうかの条件分岐です。これは以前のブログでも書きましたが、下記のようになります。
if requiredVersion.compare(currentVersion) == .orderedDescending { // 必須バージョンを満たしてない }
currentVersion
は下記のように取得できます。
let currentVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String
そして、今回の場合requiredVersion(必須バージョン)
は、Firestoreのconfigure/config
ドキュメントに下記のように保存しています。
ということで、アプリ側でこのrequiredVersion
を元に強制アップデートアラートを表示できるようにしてみます。
private func showRequiredVersionAlertIfNeeded() { let requiredVersion = configUseCase.get().updateRequiredVersion if let currentVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String, requiredVersion.compare(currentVersion) == .orderedDescending { let alert = UIAlertController(title: "アップデートのお知らせ", message: "Fideeの新規バージョンがご利用になれます。今すぐ\(requiredVersion)にアップデートしてください。", preferredStyle: .alert) alert.addAction(.init(title: "アップデート", style: .default, handler: { _ in // MARK: Force unwrap🚨 let url = URL(string: "https://apps.apple.com/jp/app/apple-store/id1563534779")! UIApplication.shared.open(url, options: [:], completionHandler: nil) })) window?.rootViewController?.present(alert, animated: true, completion: nil) } }
また、今回のアプリの場合よりリアルタイムにアップデートのアラートを表示したいので、ドキュメントをリッスンして、変更があった場合にアラートを表示できるようにしました。
configUseCase.listenUpdateRequiredVersion() .observeOnMain() .subscribe(onNext: {[unowned self] _ in showRequiredVersionAlertIfNeeded() }) .disposed(by: disposeBag)
てな感じで本日も以上となります🍺