swift4でRxSwiftを使用して、ViewControllerからアプリのバックグラウンド、復帰のイベントを取得する


アプリを制作していると、アニメーションとか、諸々のデータ処理ですとか……そういったロジックが沢山あると思います。
そんな中、ホームに戻る時には該当の処理を止めて、アプリに戻ってきたら処理を再開させる……とか、そういった処理をたまに実装しないといけなくなったりします。

RxSwiftを使うと、そういった処理が簡単に実装できたので備忘録もかねて。

実装例!

notification.swift

import RxSwift

class HogeViewController: UIViewController {
    private let bag = DisposeBag()

    override func viewDidLoad() {
        NotificationCenter.default.rx.notification(.UIApplicationDidBecomeActive)
                                     .subscribe(
                                         onNext: { [weak self] _ in
                                             // アプリに戻ってきた時の処理!
                                         }).disposed(by: bag)

        NotificationCenter.default.rx.notification(.UIApplicationDidEnterBackground)
                                     .subscribe(
                                         onNext: { [weak self] _ in
                                             // homeボタンなどで、バックグラウンドに行った時の処理!
                                         }).disposed(by: bag)
    }
}

何も使用しないでいると、AppDelegeteでNotificationCenterで各画面に通知、購読の解除……等々を自力で実装しないといけないので。
便利な世の中になったもんだ