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

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

[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に設定します。

iOSシミュレータのスクリーンショット 2014.08.22 15.54.42

まとめ

上記のコードではバージョン番号の桁数が違っても正しく判断されるかと思いますが、なるべく揃えた方がよいでしょう。
アプリが更新されたタイミングで他に処理をしたい場合は、同じようにif文の中に記述していきます。

ad

関連記事

[Swift] frameworkについて

先日、Swiftで実装されたライブラリをまとめたサイトを発見しました。 Swift Toolb

記事を読む

[Swift] スクリーンサイズを取得する

スクリーンサイズを取得 iPhoneの幅と高さを取得する関数を紹介します。 iOS8から画面の傾

記事を読む

[Swift] 定数クラスをつくってみる

Objective-cの場合 今回は共通にする定数をまとめるクラスを作ってみます。 まずはO

記事を読む

[iPhone App]WorkManager アップデートしました。

Processing For App Storeでやきもきした僕です。こんにちわ。 今

記事を読む

[Objective-C] no architectures to compile for … のコンパイルエラーについて

起動したプロジェクトでコンパイルエラーが出ました。 no architectures to com

記事を読む

NSDateを5分刻み・15分刻みで丸める

NsDateを初期値としてUIDatePicker等に設定する場合、日付の丸め処理が必要になるのでメ

記事を読む

[Swift] CoreDataで検索したデータを削除する

CoreDataの検索と削除 前の投稿  CoreDataを使ってみる をふまえて今度は検索&削除

記事を読む

no image

小さなことからコツコツと

これまでHTMLとCSSだけで生きてきただけあって、プログラム言語がいまいちわからない。 Mo

記事を読む

no image

一旦、離脱中!

サイト制作の仕事がちょろちょろちょろっと入ってきたので、寂しいけれどしばしXcodeとはお別れ。

記事を読む

[Swift] CoreDataのテーブルからデータ件数を取得する

件数を取得する fetchResultsControllerなどを使わず、直接テーブルのデータ件数

記事を読む

ad

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ad

[PHP] curl転送してみる(googleに)

curlでgoogle画像検索APIにアクセスしてみます。 cu

[PHP] PDOでMySQLの接続確認をする

PDO PHPでMySQLに接続する際には、mysql_connec

[PHP] ランダムな英数字を生成する

便利系メソッド 今回はPHPでランダムな英数字を作成してみます。

[Swift] プロパティリスト(plist)の値を取得

plistからデータを取得してみます。 こちらのエントリーも参考にし

[Swift] Asset Catalogについて

XCode5から追加されたAsset Catalog。 いままで標準

→もっと見る

  • 1978年の七夕生まれ。 25才でweb業界の門を叩き、28才でフリーランスに。 現在は、フリーランスでマークアップ中心に、wordpressのカスタマイズやデザインをしております。 また、iPhoneアプリの開発もしております。

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
PAGE TOP ↑

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