【Swift】[強制アップデート] Sirenがうまく動かない時に試すこと


はじめに

個人開発の強制アップデート機能にSirenというライブラリをいれています。
数行書くだけで、サクッと実装できるので、おすすめのライブラリです。
また、ローカライズできることや更新頻度、AlertTypeをカスタマイズできるのもいいですね。
今回、実装するにあたり、うまく動かなかったので、その原因と対処法をまとめます。

Siren について

実装方法

以下が参考になりました。

動作検証

以下が参考になりました。

私は、AppStoreに既に公開していたので、ローカルのprojectファイルのバージョンを変更して検証しました。
まだリリース前の場合は、bundleIDをすでにAppStoreにあるものに変更すればいいみたいですね。
ライブラリのサンプルでは、FacebookのbundleIDを使用しています。

なぜ動かなかったのか

AppStoreの配信地域を日本限定にしていたのですが、ライブラリ内部でコールしている、AppStoreAPI の countryCode のパラメータのデフォルトが unitedStates になっていたため、そもそもアプリが存在していないという判定がされていたようです。
なので以下の一行を追加したら、ちゃんと動く様になりました!

Siren.shared.apiManager = APIManager(country: .japan)

全体のコードはこちら

import UIKit
import Siren

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        Siren.shared.rulesManager = RulesManager(
            majorUpdateRules: Rules(promptFrequency: .immediately, forAlertType: .force),
            minorUpdateRules: Rules(promptFrequency: .immediately, forAlertType: .option),
            patchUpdateRules: Rules(promptFrequency: .immediately, forAlertType: .skip),
        )
        Siren.shared.apiManager = APIManager(country: .japan)  // !! この1行を追加
        Siren.shared.wail()
        return true
    }
}

以上です!ご参考になれば幸いです!

動作環境

  • Xcode 12.5
  • Swift 5