特定の閉ざされたネットワーク環境下で動作させる端末において、iPhone,iPad自体の時刻同期ができず、開発したアプリで正しい時刻で動作させられなくなってしまっていたので、その時の対処法を記載いたします。
##事象
閉ざされた環境下で動作するアプリを開発したが、iPad本体の時刻同期がされず徐々に時刻がずれる自体が発生。Single App Modeを使用していたために管理者のみしか時刻を直せない。
##対処方法
API通信時にレスポンスとして、サーバ側の時刻をレスポンスとしてもらうように修正。iPad端末との時刻の差分をUserDefaultsに保存し、Date()初期化時に必ず、時刻の差分を追加するようにDateクラスを拡張。
実際に修正したDateクラスが下記になります。
Date+.swift
import Foundation
extension Date {
init() {
self = Date(timeIntervalSinceNow: UserDefaults.standard.object(forKey: "TimeInterval") as! Double)
}
}