2017-07-27 23:56:24 +08:00
|
|
|
//
|
|
|
|
|
// 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()
|
2019-05-01 17:49:27 +02:00
|
|
|
private var backgroundTaskID = UIBackgroundTaskIdentifier.invalid
|
2018-12-09 16:59:07 -08:00
|
|
|
|
2017-07-27 23:56:24 +08:00
|
|
|
func copy(textToCopy: String?, expirationTime: Double = 45) {
|
|
|
|
|
// copy to the pasteboard
|
|
|
|
|
UIPasteboard.general.string = textToCopy ?? ""
|
2018-12-09 16:59:07 -08:00
|
|
|
|
2017-07-27 23:56:24 +08:00
|
|
|
// clean the pasteboard after expirationTime
|
|
|
|
|
guard expirationTime > 0 else {
|
|
|
|
|
return
|
|
|
|
|
}
|
2018-12-09 16:59:07 -08:00
|
|
|
|
2017-07-27 23:56:24 +08:00
|
|
|
// exit the existing background task, if any
|
2019-05-01 17:49:27 +02:00
|
|
|
if backgroundTaskID != UIBackgroundTaskIdentifier.invalid {
|
|
|
|
|
UIApplication.shared.endBackgroundTask(UIBackgroundTaskIdentifier.invalid)
|
2020-06-28 21:25:40 +02:00
|
|
|
backgroundTaskID = UIBackgroundTaskIdentifier.invalid
|
2017-07-27 23:56:24 +08:00
|
|
|
}
|
2018-12-09 16:59:07 -08:00
|
|
|
|
2017-07-27 23:56:24 +08:00
|
|
|
backgroundTaskID = UIApplication.shared.beginBackgroundTask(expirationHandler: { [weak self] in
|
2018-09-25 00:51:18 +08:00
|
|
|
UIPasteboard.general.string = ""
|
2019-05-01 17:49:27 +02:00
|
|
|
UIApplication.shared.endBackgroundTask(UIBackgroundTaskIdentifier.invalid)
|
|
|
|
|
self?.backgroundTaskID = UIBackgroundTaskIdentifier.invalid
|
2017-07-27 23:56:24 +08:00
|
|
|
})
|
2018-12-09 16:59:07 -08:00
|
|
|
|
2017-07-27 23:56:24 +08:00
|
|
|
DispatchQueue.global(qos: .utility).asyncAfter(deadline: .now() + expirationTime) { [weak self] in
|
2018-09-25 00:51:18 +08:00
|
|
|
UIPasteboard.general.string = ""
|
2019-05-01 17:49:27 +02:00
|
|
|
UIApplication.shared.endBackgroundTask(UIBackgroundTaskIdentifier.invalid)
|
|
|
|
|
self?.backgroundTaskID = UIBackgroundTaskIdentifier.invalid
|
2017-07-27 23:56:24 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|