// // SecurePasteboard.swift // pass // // Created by Yishi Lin on 2017/7/27. // Copyright © 2017 Bob Sun. All rights reserved. // import Foundation import UIKit class SecurePasteboard { public static let shared = SecurePasteboard() private var backgroundTaskID = UIBackgroundTaskInvalid func copy(textToCopy: String?, expirationTime: Double = 45) { // copy to the pasteboard UIPasteboard.general.string = textToCopy ?? "" // clean the pasteboard after expirationTime guard expirationTime > 0 else { return } // exit the existing background task, if any if backgroundTaskID != UIBackgroundTaskInvalid { UIApplication.shared.endBackgroundTask(UIBackgroundTaskInvalid) self.backgroundTaskID = UIBackgroundTaskInvalid } backgroundTaskID = UIApplication.shared.beginBackgroundTask(expirationHandler: { [weak self] in UIPasteboard.general.string = "" UIApplication.shared.endBackgroundTask(UIBackgroundTaskInvalid) self?.backgroundTaskID = UIBackgroundTaskInvalid }) DispatchQueue.global(qos: .utility).asyncAfter(deadline: .now() + expirationTime) { [weak self] in UIPasteboard.general.string = "" UIApplication.shared.endBackgroundTask(UIBackgroundTaskInvalid) self?.backgroundTaskID = UIBackgroundTaskInvalid } } }