Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 我想注销一个用户1小时后,一旦他们离线,如果他们来在线1小时内,它应该停止_Ios_Swift_Grand Central Dispatch - Fatal编程技术网

Ios 我想注销一个用户1小时后,一旦他们离线,如果他们来在线1小时内,它应该停止

Ios 我想注销一个用户1小时后,一旦他们离线,如果他们来在线1小时内,它应该停止,ios,swift,grand-central-dispatch,Ios,Swift,Grand Central Dispatch,我试着用UserDefaults节省时间,并在它们离线后添加1小时。我也试过: if isNetworkAvailable { print(isNetworkAvailable) } else { DispatchQueue.main.asyncAfter(deadline: .now() + 10.0, execute: { self.logginout() }) } 我正在通过Reachibility pod检查我的Reachibility我编写了一

我试着用UserDefaults节省时间,并在它们离线后添加1小时。我也试过:

if isNetworkAvailable {
    print(isNetworkAvailable)
}
else {
    DispatchQueue.main.asyncAfter(deadline: .now() + 10.0, execute: {
        self.logginout()
    })
}
我正在通过Reachibility pod检查我的Reachibility我编写了一个网络管理器,如下所示:

import UIKit

class NetworkManager: NSObject {
    var reachability: Reachability!

    // Create a singleton instance
    static let sharedInstance: NetworkManager = { return NetworkManager() }()


    override init() {
        super.init()

        // Initialise reachability
        reachability = Reachability()!

        // Register an observer for the network status
        NotificationCenter.default.addObserver(
            self,
            selector: #selector(networkStatusChanged(_:)),
            name: .reachabilityChanged,
            object: reachability
        )

        do {
            // Start the network status notifier
            try reachability.startNotifier()
        } catch {
            print("Unable to start notifier")
        }
    }

    @objc func networkStatusChanged(_ notification: Notification) {
        // Do something globally here!
    }

    static func stopNotifier() -> Void {
        do {
            // Stop the network status notifier
            try (NetworkManager.sharedInstance.reachability).startNotifier()
        } catch {
            print("Error stopping notifier")
        }
    }

    // Network is reachable
    static func isReachable(completed: @escaping (NetworkManager) -> Void) {
        if (NetworkManager.sharedInstance.reachability).connection != .none {
            completed(NetworkManager.sharedInstance)
        }
    }

    // Network is unreachable
    static func isUnreachable(completed: @escaping (NetworkManager) -> Void) {
        if (NetworkManager.sharedInstance.reachability).connection == .none {
            completed(NetworkManager.sharedInstance)
        }
    }

    // Network is reachable via WWAN/Cellular
    static func isReachableViaWWAN(completed: @escaping (NetworkManager) -> Void) {
        if (NetworkManager.sharedInstance.reachability).connection == .cellular {
            completed(NetworkManager.sharedInstance)
        }
    }

    // Network is reachable via WiFi
    static func isReachableViaWiFi(completed: @escaping (NetworkManager) -> Void) {
        if (NetworkManager.sharedInstance.reachability).connection == .wifi {
            completed(NetworkManager.sharedInstance)
        }
    }
}
network.reachability.whenUnreachable = { unreach in
    isNetworkAvailable = false

    let banner = NotificationBanner(title: "Your offline", subtitle: "Please Connect to internet", style: .danger)
    banner.onSwipeUp = {
        banner.dismiss()
    }
    print(time)
    banner.show()
}
在delegate中,我这样检查:

import UIKit

class NetworkManager: NSObject {
    var reachability: Reachability!

    // Create a singleton instance
    static let sharedInstance: NetworkManager = { return NetworkManager() }()


    override init() {
        super.init()

        // Initialise reachability
        reachability = Reachability()!

        // Register an observer for the network status
        NotificationCenter.default.addObserver(
            self,
            selector: #selector(networkStatusChanged(_:)),
            name: .reachabilityChanged,
            object: reachability
        )

        do {
            // Start the network status notifier
            try reachability.startNotifier()
        } catch {
            print("Unable to start notifier")
        }
    }

    @objc func networkStatusChanged(_ notification: Notification) {
        // Do something globally here!
    }

    static func stopNotifier() -> Void {
        do {
            // Stop the network status notifier
            try (NetworkManager.sharedInstance.reachability).startNotifier()
        } catch {
            print("Error stopping notifier")
        }
    }

    // Network is reachable
    static func isReachable(completed: @escaping (NetworkManager) -> Void) {
        if (NetworkManager.sharedInstance.reachability).connection != .none {
            completed(NetworkManager.sharedInstance)
        }
    }

    // Network is unreachable
    static func isUnreachable(completed: @escaping (NetworkManager) -> Void) {
        if (NetworkManager.sharedInstance.reachability).connection == .none {
            completed(NetworkManager.sharedInstance)
        }
    }

    // Network is reachable via WWAN/Cellular
    static func isReachableViaWWAN(completed: @escaping (NetworkManager) -> Void) {
        if (NetworkManager.sharedInstance.reachability).connection == .cellular {
            completed(NetworkManager.sharedInstance)
        }
    }

    // Network is reachable via WiFi
    static func isReachableViaWiFi(completed: @escaping (NetworkManager) -> Void) {
        if (NetworkManager.sharedInstance.reachability).connection == .wifi {
            completed(NetworkManager.sharedInstance)
        }
    }
}
network.reachability.whenUnreachable = { unreach in
    isNetworkAvailable = false

    let banner = NotificationBanner(title: "Your offline", subtitle: "Please Connect to internet", style: .danger)
    banner.onSwipeUp = {
        banner.dismiss()
    }
    print(time)
    banner.show()
}

有没有办法做到这一点?我已在didLaunchWithOptions中编写了此块。

根据您的问题,您应该捕获注销时间并将其存储在默认值中,然后检查ApplicationIDBecMeactive或did application WillEnterForeground(*根据您的情况,以最佳者为准)(“application didFinishLaunchingWithOptions:”如果用户不关闭应用程序,则不是一个好地方。)当前时间是否超过一小时,请将状态设置为未登录。请记住,您已经处理了用户未更改设置的时间,并且时区问题得到了很好的处理。