オフィス狛 技術部のKoma(Twitterアカウントの中の人&CEO)です。
iOSに限ったことではないですが、
クライアントアプリとバックエンド(API)のバージョンの整合性を取るの面倒ですよね・・・・
バックエンドの都合で、どうしてもiOSを強制的にアップデートさせたい事もあります。
弊社の場合、プロジェクトにもよりますが、独自実装を行う方法と、プラグインを使う方法を使い分けています。
独自実装を行うのは、業務の兼ね合いだったり、バックエンド(API)の都合だったり、様々です。
今回はプラグインを使うパターンを説明します。
使うプラグインは「Siren」というものです。
ArtSabintsev/Siren
他のサイトなどで、導入方法は説明あるのですが、実用的な説明をしているものは少ないので、そこにポイントを絞って説明します。
と言っても・・・・・
let siren = Siren.shared siren.presentationManager = PresentationManager(forceLanguageLocalization: .japanese) siren.rulesManager = RulesManager( majorUpdateRules: Rules(promptFrequency: .immediately, forAlertType: .force), // A.b.c.d minorUpdateRules: Rules(promptFrequency: .immediately, forAlertType: .option), // a.B.c.d patchUpdateRules: Rules(promptFrequency: .daily, forAlertType: .option), // a.b.C.d revisionUpdateRules: Rules(promptFrequency: .weekly, forAlertType: .skip) // a.b.c.D ) siren.wail()
これで終わりなんですけどね。
上記は、「AppDelegate」に記載します。
まずは、下記1行で、日本語化しています。
siren.presentationManager = PresentationManager(forceLanguageLocalization: .japanese)
次にRulesManagerを使って、複数パターンのルールを設定しています。
これで、バージョンアップの内容によって、アップデートの促し方を変えることが可能です。
コメントの「A.b.c.d」は、バージョン表示を示していて、大文字の部分が、変更となる箇所を表しています。
以下で細かく説明していきます。
メジャーアップデート(A.b.c.d)の時
例えば、現在使っているアプリのバージョンが「1.0.1.1」で、App Storeにあるアプリのバージョンが「2.0.0.0」になっている場合です。
majorUpdateRules: Rules(promptFrequency: .immediately, forAlertType: .force), // A.b.c.d
この場合は、すぐにでもアップデートさせたいので、
promptFrequency: .immediately
で、アプリ起動時にすぐさまチェックし、
forAlertType: .force
で、アップデートを強制させています。
この時のダイアログ表示は、下記となります。
マイナーアップデート(a.B.c.d)の時
例えば、現在使っているアプリのバージョンが「1.1.0.0」で、App Storeにあるアプリのバージョンが「1.2.0.0」になっている場合です。
minorUpdateRules: Rules(promptFrequency: .immediately, forAlertType: .option), // a.B.c.d
この場合も、出来ればすぐにアップデートして欲しいので、
promptFrequency: .immediately
で、アプリ起動時にすぐさまチェックしますが、
forAlertType: .option
で、アップデートはあくまで任意としています。
(まあ、毎回ダイアログが出るので、大抵の人はアップデートしてくれますけどね)
この時のダイアログ表示は、下記となります。
パッチアップデート(a.b.C.d)の時
例えば、現在使っているアプリのバージョンが「1.1.0.0」で、App Storeにあるアプリのバージョンが「1.1.1.0」になっている場合です。
patchUpdateRules: Rules(promptFrequency: .daily, forAlertType: .option), // a.b.C.d
この場合も、出来ればすぐにアップデートして欲しいものの、
promptFrequency: .daily
で、チェック自体を1日に1回のみ行なって、
forAlertType: .option
で、アップデートもあくまで任意としています。
(この場合でも、大抵の人は2回目か3回目のダイアログ(つまり2日、3日目)ぐらいには、アップデートしてくれます)
この時のダイアログ表示は、下記となります。(マイナーアップデートと同じです。)
リビジョンアップデート(a.b.c.D)の時
例えば、現在使っているアプリのバージョンが「1.1.0.0」で、App Storeにあるアプリのバージョンが「1.1.0.1」になっている場合です。
revisionUpdateRules: Rules(promptFrequency: .weekly, forAlertType: .skip) // a.b.c.D
この場合は、重要なアップデートではない事(少しの機能改善など)が多いので、
promptFrequency: .weekly
で、チェック自体を1週間に1回のみ行なって、
forAlertType: .skip
で、アップデート自体をスキップする事を可能としています。
(スキップの選択肢を出してしまうと、大抵の人はスキップして、アップデートしてくれません(泣))
この時のダイアログ表示は、下記となります。
以上となります。今回は、あくまで例として挙げましたが、
プロジェクトによって、色々な設定で組み合わせを試してみてはいかがでしょうか。
ios , Swift
0 件のコメント:
コメントを投稿