Trong swift tôi sẽ đề nghị sử dụng hằng số toàn cầu có thể được thực hiện rất dễ dàng bên ngoài bất kỳ phạm vi nào, chẳng hạn như trên đại biểu Ứng dụng. Do đó, nó sẽ được đặt thành giá trị phù hợp miễn là ứng dụng không bị chấm dứt. nó vẫn sẽ trả về cùng một giá trị nếu ứng dụng chuyển sang nền. giá trị sẽ thay đổi chỉ khi ứng dụng được khởi chạy lại hoàn toàn.
let isFirstLaunch: Bool = {
if !UserDefaults.standard.bool(forKey: "hasBeenLaunchedBeforeFlag") {
UserDefaults.standard.set(true, forKey: "hasBeenLaunchedBeforeFlag")
UserDefaults.standard.synchronize()
return true
}
return false
}()
Nhưng thành thật mà nói, tốt hơn là theo dõi thực tế rằng ứng dụng đã được gửi đến nền ít nhất một lần. Trong trường hợp như vậy, tôi thích sử dụng tiện ích mở rộng trên UIApplication và đặt cờ trong phương thức applicationDid EntryBackground sao cho:
extension UIApplication {
private static let isFirstLaunchKey = "isFirstLaunchKey"
static var isFirstLaunch: Bool {
return !UserDefaults.standard.bool(forKey: isFirstLaunchKey)
}
static func didEnterBackground() {
if isFirstLaunch {
UserDefaults.standard.set(true, forKey: isFirstLaunchKey)
UserDefaults.standard.synchronize()
}
}
}
và sau đó trong đại biểu ứng dụng của bạn hoặc đại biểu cảnh
func sceneDidEnterBackground(_ scene: UIScene) {
UIApplication.didEnterBackground()
}