swift 以编程方式将应用程序发送到后台

syqv5f0l  于 2023-06-21  发布在  Swift
关注(0)|答案(4)|浏览(144)

有办法把应用程序发送到后台吗?与调用XCUIApplication.terminate()的方式类似,我有一些UI元素要在applicationDidBecomeActive(_:)上测试。有谁知道这是否有可能?

q9rjltbz

q9rjltbz1#

我建议你看看XCUIDevice。下面是按下home键然后重新启动应用程序的方法

func testExample() {

    // Has a nav bar.
    XCTAssert(XCUIApplication().navigationBars.element.exists)

    XCUIDevice().press(XCUIDeviceButton.home)
    // Before Swift 3: XCUIDevice().pressButton(XCUIDeviceButton.Home)
    XCUIApplication().launch()

    // Navigationbar still there on second launch.
    XCTAssert(XCUIApplication().navigationBars.element.exists)
}
rggaifut

rggaifut2#

在我的情况下,我想后台的应用程序,并打开它,我以前离开它。要为应用程序设置后台,请执行以下操作:

XCUIDevice.shared.press(.home)

重新打开我离开的应用程序:

XCUIApplication().activate()

使用XCUIApplication().launch()重新启动应用程序将从new启动应用程序。

  • 我正在使用Swift 4.2*
vngu2lb8

vngu2lb83#

UIApplication.sharedApplication().performSelector("suspend")成功了。

dispatch_after(2, dispatch_get_main_queue(), {       
    // suspend the app after two seconds
    UIApplication.sharedApplication().performSelector("suspend")
})

// Swift 4 version
UIApplication.shared.perform(Selector("suspend"))
vlju58qv

vlju58qv4#

在Xcode 9.0中,苹果引入了XCUIApplication.activate()activate()将在必要时启动应用程序,但如果它已经在运行,则不会终止它。因此:

func testExample() {
    // Background the app
    XCUIDevice().press(.home)
    // Reactivate the app
    XCUIApplication().activate()
}

相关问题