[Objective-C] バージョン更新時に変更内容をアラートで出力する
公開日:
:
iPhone App 開発, Objective-C
Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/users/1/juny/web/hidef/wp-content/plugins/ultimate-google-analytics/ultimate_ga.php on line 524
アプリの更新内容を表示したい!
バージョン更新時に変更内容を表示させたいのは、ユーザーがいちいちApp Storeを開いて新機能をチェックするより手間が省けるかな、と。
処理のタイミングはアプリが起動されたとき、つまり最初のViewControllerが呼ばれる前にします。
更新されたか判断するために、以前のバージョンをアプリ内(UserDefaults)に保存しておきます。
そして更新されたバージョンと比較し、アラートで更新内容を表示します。
バージョン情報の保存は、初回起動時の時とアプリが更新された時のみUserDefaultsに設定しておくのが無難でしょう。
AppDelegate.m
アプリ起動時にAppDelegate.mの「didFinishLaunchingWithOptions」が呼び出されるのでここに処理を記述していきます。
#import "AppDelegate.h" @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // UserDefaults version NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; NSString *loadedVersion = [userDefaults objectForKey:@"version"]; if (loadedVersion == nil) { // set first version [userDefaults setObject:@"1.0" forKey:@"version"]; [userDefaults synchronize]; return YES; } // get this version NSString *bundleVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; // show alert view if ([loadedVersion compare:bundleVersion options:NSNumericSearch] == NSOrderedAscending) { NSString *title = [NSString stringWithFormat:@"バージョン%@の変更点", bundleVersion]; NSString *body = @"・メッセージ1\n・メッセージ2"; UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title message:body delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertView show]; // set this version [userDefaults setObject:bundleVersion forKey:@"version"]; [userDefaults synchronize]; } return YES; }
- 8〜9行目:ユーザーデフォルト(ユーザー情報)を呼び出し、キー値”version”で値を取得します。
- 11〜17行目:アプリの初回起動時は設定されていないのでnilになり、デフォルト値1.0を設定します。その後の処理はしません。(初回起動時のときも更新内容を表示させたい場合は、この処理は不要です)
- 20行目:現在のバージョンを取得します。この情報は[アプリ名-info.plist]ファイルで確認できます。
- 23行目:以前のバージョン(UserDefaults)と現在のバージョンを比較します。
- 25〜33行目:アラートを表示します。メッセージ内に改行を入れたい場合\nを挿入します。
- 36〜37行目:最後に現在のバージョンをUserDefaultsに設定します。
まとめ
上記のコードではバージョン番号の桁数が違っても正しく判断されるかと思いますが、なるべく揃えた方がよいでしょう。
アプリが更新されたタイミングで他に処理をしたい場合は、同じようにif文の中に記述していきます。
ad
関連記事
-
[Objective-C] 小数点を丸める!(数値変換)
小数点を含む数値 Objective-Cに限らず、小数点を含む数値を計算する場合はdoubleやf
-
[Swift] UITableViewのセルにアクションを設定する
セル選択→アクション UITableViewControllerを使用したテーブルビューの画面があ
-
[Swift] 定数クラスをつくってみる
Objective-cの場合 今回は共通にする定数をまとめるクラスを作ってみます。 まずはO
-
NSDateを5分刻み・15分刻みで丸める
NsDateを初期値としてUIDatePicker等に設定する場合、日付の丸め処理が必要になるのでメ
-
[Swift] 画像を合成する
画像を合成 以下の2つの画像を合成してみます。円と四角です。 画像をプロジェクトに追
-
[Objective-C] UINavigationControllerのセグエを使って画面遷移をする
画面遷移の実装 今回はUINavigationControllerを使って画面遷移をしたいと思いま
-
[Swift] ビルド時のエラー&iOS8でNSBigDecimalのバグ
ビルド時のエラー Swiftプロジェクトを実行中に以下のエラーが出ました。 "__TFSs15_
-
[Swift] スクリーンサイズを取得する
スクリーンサイズを取得 iPhoneの幅と高さを取得する関数を紹介します。 iOS8から画面の傾
-
[Objective-C] 共通関数をまとめたクラスを作ろう!
共通クラスとは? アプリを作っていると「この処理何回も書いてるなー」ということが多々あると思います