俺、サービス売って家買うんだ

Swift, Kotlin, Vue.js, 統計, GCP / このペースで作ってればいつか2-3億で売れるのがポっと出来るんじゃなかろうか

Sirenを使って iOSアプリに強制アップデート実装するよ

f:id:ie-kau:20151120074851p:plain


ハロー、こんにちは @hazumu です。 iOS App作ってますか?
アプリをの開発に置いてサーバー側のAPIとアプリのバージョンを合わせるのって結構だるいですよね。
そんなときはAPIのバージョンをたくさん用意するのも面倒なのでアプリ側に強制アップデートを導入するケースって多いのではないでしょうか??

とはいえ、中小規模のアプリで「強制アップデートの実装なんかに時間はかけたくない。。」って気もします。
今回はそんなニーズにお答えするライブラリを紹介します。

Siren

いま開発しているアプリではSirenというライブラリを導入しています。
語源は、救急車の上についているサイレンなんですかね?それともギリシャ神話のセイレーン??そこはよくわかりません。

github.com

何ができるか?

Sirenは数行記述するだけで、アプリ起動時にiTunes StoreのAPIをlookupして現在のbundleにかかれているバージョンがiTunsストアで配信されているバージョンより古い場合にアップデートのアラートを出してくれます。

アラートのパターンは3パターンで。

  • 強制アップデート
  • 強制アップデート or 次に開いたときにする
  • 強制アップデート or 次に開いたときにする or スキップする

というのが選べます。

強制アップデートを選んだ場合に表示されるのはこんなメッセージ。

f:id:ie-kau:20170409020909p:plain

多言語化対応もしてありもちろん日本語でアラートを表示できます。
そして、更新ボンタンをタップするとiTuns Store に遷移します。

実装方法

実装は簡単で、AppDelegateに以下のコードを記述するだけ。 これだけであら不思議強制アップデートの実装が終わっちゃいます。

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        
        // 強制アップデート
        let siren = Siren.shared
        siren.forceLanguageLocalization = SirenLanguageType.Japanese  // 日本語
        siren.alertType = .force  // 強制アップデートしか選択肢が無いオプション
        siren.checkVersion(checkType: .immediately)  // .Daily or .Weekly とかチェック頻度を設定できる
        
        return true
    }

余談

アプリのバージョンってどこから引いてきてるんだろうって思い、Sirenの内部実装を読んでわかったのですがiTunes StoreってbundleIdを元にアプリのバージョンを引いてくるURLを提供してるのですね。そっからスクリーンキャプチャとかバージョンとか説明を引いてこれるっぽいです。

https://itunes.apple.com/lookup?bundleId=

まとめ

強制アップデートとかはさくっと入れてユーザーの利用価値を向上できるところに時間をさいていきまっしょい!
季節も暖かくなってきましたし、夜は短し歩けよ乙女!!!(๑˃̵ᴗ˂̵)وオラッオラッ!!