【swift】アプリの初回起動時のみ処理を行う方法【CoffeeNote開発日記】
参考サイト
以下の記事を参考にさせていただきました。
- やり方
cocoa touch - iPhone: How do I detect when an app is launched for the first time? - Stack Overflow
- NSUserDefaults使い方(swift)
NSUserDefaults — A Swift Introduction - Coding Explorer Blog
[Swift]【NSUserDefaultsの基本的な使い方】表示、格納、削除。 - Qiita
iphone - What is the use of -[NSUserDefaults registerDefaults:]? - Stack Overflow
やり方
アプリの初回の起動時のみ処理をしたかったのですが、現状NSUserDefaults使うのが一番いいみたいです。
まず初回起動時に呼び出されるdidFinishLaunchingWithOptions
でNSUserDefaultsに初回起動時かどうか判定するためのBool変数にtrueをセット。
// AppDelegate.swift func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // first time to launch this app let defaults = NSUserDefaults.standardUserDefaults() var dic = ["firstLaunch": true] defaults.registerDefaults(dic) return true }
AppDelegateのそれぞれのメソッドの呼ばれるタイミングについては以下の記事がとても参考になりました。
swiftでの基本的なNSUserDefaultsの使い方は以下。
NSUserDefaults — A Swift Introduction - Coding Explorer Blog
registerDefaults
のことは以下から。
iphone - What is the use of -[NSUserDefaults registerDefaults:]? - Stack Overflow
[Swift]【NSUserDefaultsの基本的な使い方】表示、格納、削除。 - Qiita
AppDelegateの他のメソッドでfirstLaunch
をfalseにしてもよかったのだけど最初の処理を終えた後でfalseにしたほうが楽だと思ったのでそっちの方法で。
// process if this is first time to launch this app let defaults = NSUserDefaults.standardUserDefaults() if defaults.boolForKey("firstLaunch") { // Some Process will be here // off the flag to know if it is first time to launch defaults.setBool(false, forKey: "firstLaunch") }
CoffeeNoteで、最初にサンプルのノートを作るって機能が欲しかったので調べてみました。
NSUserDefaultsでも十分簡単にできそうなので今回はそちらで実装しましたが、こういったものも作ってくださってるみたいです。
[iOS] 「インストール直後のみxxする/アップデート直後のみyyする」的な処理を簡単に書く方法 - Qiita
機会があれば使ってみよう。