iOS,通过代码锁定设备
iOS, locking the device from code
出于测试目的(制作本地通知的屏幕截图)我需要能够从代码(测试代码或应用程序代码)锁定设备(模拟器)。
我看过这里的几个答案 (GSEventLockDevice),但它们很旧,对我不起作用
XCUIDevice 中有一个私有方法,所以你可以使用它来锁定device/simulator。
Swift3 的示例:
import XCTest
class LockTests: XCTestCase {
func testExample() {
XCUIDevice.shared().perform(NSSelectorFromString("pressLockButton"))
let localNotification = UILocalNotification()
localNotification.fireDate = Date(timeIntervalSinceNow: 2)
localNotification.alertBody = "This is local notification"
localNotification.timeZone = NSTimeZone.local
localNotification.category = "Message"
UIApplication.shared.scheduleLocalNotification(localNotification)
}
}
并且会收到这样的东西:
我没有使用过你使用的快照工具,但你需要知道进入锁定状态需要时间,所以在创建快照之前等待一段时间可能会有用(你可以使用这样的代码):
let date = Date(timeIntervalSinceNow: 3)
while date.timeIntervalSinceNow > 0 {
CFRunLoopRunInMode(CFRunLoopMode.defaultMode, 0.1, true)
}
此外,您可以在测试结束时通过调用(iOS 10)return 跳板:
XCUIDevice.shared().press(.home)
希望对您有所帮助!
出于测试目的(制作本地通知的屏幕截图)我需要能够从代码(测试代码或应用程序代码)锁定设备(模拟器)。 我看过这里的几个答案 (GSEventLockDevice),但它们很旧,对我不起作用
XCUIDevice 中有一个私有方法,所以你可以使用它来锁定device/simulator。
Swift3 的示例:
import XCTest
class LockTests: XCTestCase {
func testExample() {
XCUIDevice.shared().perform(NSSelectorFromString("pressLockButton"))
let localNotification = UILocalNotification()
localNotification.fireDate = Date(timeIntervalSinceNow: 2)
localNotification.alertBody = "This is local notification"
localNotification.timeZone = NSTimeZone.local
localNotification.category = "Message"
UIApplication.shared.scheduleLocalNotification(localNotification)
}
}
并且会收到这样的东西:
我没有使用过你使用的快照工具,但你需要知道进入锁定状态需要时间,所以在创建快照之前等待一段时间可能会有用(你可以使用这样的代码):
let date = Date(timeIntervalSinceNow: 3)
while date.timeIntervalSinceNow > 0 {
CFRunLoopRunInMode(CFRunLoopMode.defaultMode, 0.1, true)
}
此外,您可以在测试结束时通过调用(iOS 10)return 跳板:
XCUIDevice.shared().press(.home)
希望对您有所帮助!