【iPhoneアプリ開発入門】アプリケーションの状態変化を受取るApplicationDelegate

【iPhoneアプリ開発入門】アプリケーションの状態変化を受取るApplicationDelegate

  • このエントリーをはてなブックマークに追加

こんにちわセイカイと言います。

iPhoneアプリ開発入門編、今回はApplicationDelegateに関しての内容です。

ApplicationDelegateの役割

そもそもApplicationDelegateってプロジェクト作ると勝手に出来ているけど何?というお話ですが、ApplicationDelegateはUIResponderクラスを継承し、UIApplicationDelegateプロトコルを実装しています。

上記より、アプリケーションの状態変化と、各種イベントを受け取ることが出来ることがわかりますのでそれぞれ説明していきます。

アプリケーションの状態変化

アプリケーションの状態変化(ライフサイクル)はUIApplicationDelegateプロトコロルで定義されたメソッドを介して受け取ります。

  • 起動
  • Push通知の受け取り
  • 停止
  • etc.

起動時の処理などは必ず書く処理ですね。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    return true
}

これは起動時に呼ばれるメソッドです。

アプリケーションのライフサイクルメソッド

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.
        return true
    }

    func applicationWillResignActive(application: UIApplication) {
        //アプリ閉じる前に呼ばれる
    }

    func applicationDidEnterBackground(application: UIApplication) {
        //アプリ閉じた時に呼ばれる
    }

    func applicationWillEnterForeground(application: UIApplication) {
        //アプリ開く前に呼ばれる
    }

    func applicationDidBecomeActive(application: UIApplication) {
        //アプリ開いた時に呼ばれる
    }

    func applicationWillTerminate(application: UIApplication) {
        //アプリ終了した時に呼ばれる
    }

}

のように、それぞれのタイミングで呼ばれるメソッドが決まっていますので、そのタイミングで実装したい処理を書けばOKです。

参考:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/index.html?hl=ar

イベントの処理

継承元のUIResponderクラスはイベント処理等を定義しています。
ここでいうイベントとは、タッチやモーションの受け取り等ですね。

override func touchesBegan(touches: NSSet,withEvent event: UIEvent){
    //タッチ開始時に呼ばれる
}
override func touchesMoved(touches: NSSet,withEvent event: UIEvent){
    //タッチの移動時に呼ばれる
}
override func touchesEnded(touches: NSSet,withEvent event: UIEvent){
    //タッチ終了時に呼ばれる
}
override func touchesCancelled(touches: NSSet,withEvent event: UIEvent){
    //タッチキャンセル時に呼ばれる
}

それぞれの引数からタッチ座標等が取得できたりします。

参考:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIResponder_Class/index.html#//apple_ref/occ/cl/UIResponder

まとめ

まとめです。
AppDelegateはアプリケーションの各種状態変化と、タッチやセンサーなどのイベントを受け取ることが出来ます。
アプリケーション全体の挙動等はこのクラスが司るイメージです。

雑な説明ですが、ざっくりイメージは掴めましたでしょうか。
詳細は、英語ですが本家のドキュメントなどを見られると良いかと思います。

  • このエントリーをはてなブックマークに追加

記事作成者の紹介

セイカイ(フロントエンジニア)

新規事業推進部のセイカイです。猫を飼い始めて幸せな毎日を送っています。

関連するSONICMOOVのサービス

フロントエンドエンジニア募集中!

×

SNSでも情報配信中!ぜひご登録ください。

×

SNSでも
情報配信中!
SONICMOOV Facebookページ SONICMOOV Twitter
フロントエンドエンジニア募集中!

新着の記事

mautic is open source marketing automation