31
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Firebase Remote Configを使って強制アップデート機能を実装してみた

Last updated at Posted at 2019-05-27

概要

Firebase Remote Configを使用し、強制アップデート機能を実装したので、その過程をまとめたいと思います。

Firebase Remote Configとは

Firebase Remote Configは、クラウド上でkey-valueを管理することができるサービスです。

クラウド上で管理する値を変更するだけで、即座にアプリに変更を反映させることができます。本来であれば、コードを変更し、Appleに審査を通すなどのプロセスが必要ですが、Firebase Remote Configを使えば、すぐにアプリのデータの更新が可能になります。

具体的な用途としては、A/Bテスト、新機能のテスト、今回紹介する強制アップデート機能など様々な使い道があります。

強制アップデート機能について

強制アップデート機能では、Firebase Remote Configを使ってアプリのversionを管理します。

手元にインストールされているアプリのversionとFirebase Remote Configで管理しているversionの値を比較し、Remote Configのversionの方が新しい場合、最新のアプリのインストールを促すアラートを表示します。

致命的なバグが見つかった時やアプリのリニューアルで大幅にUIが変更された時などユーザーにアプリをアップデートしてほしい際、強制アップロード機能を使用します。

実装手順

1. Firebase Remote Configにverを登録する

Firebaseの管理画面から、Remote Configを選択し、「パラーメータを追加」ボタンをタップすると画像のようなキーと値を登録する画面が表示されるので、任意のキーと値を登録するだけで簡単に設定を行うことができます。

スクリーンショット 2019-05-26 20.58.25.png

2. ダウンロードしているアプリのverを取得する


let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String 

3. Remote Configのverを取得する


func getLatestVersion() {
    let expirationDuration: TimeInterval = 30
    let versionKey = "pfc_ios_version"
    remoteConfig = RemoteConfig.remoteConfig()
    // Remote Configからデータを取得
    remoteConfig.fetch(withExpirationDuration: expirationDuration) { [weak self] status, error -> Void in
        guard let self = self else { return }
        if status == .success {
            self.remoteConfig.activateFetched() 
            guard let appStoreVer = self.remoteConfig[versionKey].stringValue else { return }
        }
    }
}

4. アップロード可能な最新のverがある場合、アップデートを促すアラートを表示する

versionの比較に関してはこちらの記事を参考が参考になりました。

5. アラートタップ後にAppStoreに遷移させる


func launcAppStore() {
    // App StoreのアプリのURL
    let appURL = ""
    guard let url = URL(string: appURL) else { return }
    if UIApplication.shared.canOpenURL(url) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    }
 }

他にもSKStoreProductViewControllerを使用してアプリ内でAppStoreを開く方法もあります。詳細はこちらの記事が参考になります。

まとめ

今回は、強制アップデート機能実装のためにFirebase Remote Configを使用しました。Remote Configは他の用途でも活用できそうなので、次回は別の機能で使用してみたいです。

参考資料

31
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?