Apple TVML:在 Siri 遥控器上按下菜单按钮时将应用程序发送到后台

Apple TVML : Send APP to background when Menu button pressed on Siri remote

当在 TVML 应用程序中从 Siri 遥控器按下 "Menu" 按钮时,我不知道如何将应用程序发送到后台。我是 TVML 开发新手。

我正在尝试 TVML 开发并创建了一个小型演示应用程序,应用程序一启动我就会在其中播放视频。现在的问题是按照苹果的指导方针,如果我在我的根页面上,我按下 siri 遥控器上的菜单按钮,那么我的应用程序应该进入后台。

现在我的应用程序没有相应的行为。我尝试了很多解决方案,例如:

如下所示注册我的 appDelegate() 成为 FirstResponder -

UIApplication.sharedApplication().beginReceivingRemoteControlEvents()
self.becomeFirstResponder()

override func canBecomeFirstResponder() -> Bool {
    return true
}

override func remoteControlReceivedWithEvent(event: UIEvent?) {

}

覆盖 pressBegin() 和 pressEnded() 函数 -

override func pressesBegan(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
        super.pressesBegan(presses, withEvent: event)
        if presses.first?.type == UIPressType.Menu {


        }
}

override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
        super.pressesEnded(presses, withEvent: event)

        if presses.first?.type == UIPressType.Menu {

            exit(0)
        }
}

我只有一个名为 application.js 的 .js 文件,我将它保存在一个文件夹名称服务器中,并按照 apples 指南访问它。我什至下载了苹果的 TVMLCatalogUsingTVMLTemplates 项目,但我无法理解当我们在根菜单上并按下菜单按钮时,他们在哪里添加代码以将应用程序提交到后台。

我在 application.js 中只有一个函数,我在 App.onLaunch = function(options){}

中调用它

一切正常。我只想知道我应该在我的 application.js 文件或 appDelegate 中编写什么代码,以便在按下菜单按钮时我的应用程序进入后台。 注意:我没有任何层次结构或子控制器,所有代码都从 application.js 执行,因此我的 application.js 是根菜单,我只需要在按下菜单按钮时将应用程序提交到后台。

提前谢谢你:)

奇怪的是一个月了居然连悬赏都没有人回答!!!可能这是一个愚蠢的问题,没有人愿意回答!

我得到答案的任何方式,所以我与大家分享。

实际上问题是视频播放器没有感应到菜单按钮的按下。我猜它正在覆盖这个事件,因此应用程序没有提交给后台。我用了apple提供的模板,开始用了!

我想我们需要在我们的应用程序中实现一个 DOM 结构,苹果提供的模板已经有了它。所以我根据自己的需要操作了模板,现在我在视频播放器上获得了菜单按钮事件。所以现在播放列表是我的根控制器,视频是它的子控制器。当我在播放视频时按下菜单按钮时,它会弹出回播放列表控制器,然后再次按下菜单按钮,它会提交到后台。最后,通过这个解决方案,我的应用程序现已获得批准并在应用程序商店上架。

我今天才发现你的问题。

我认为最好的方法是从导航中删除所有历史记录。

为此,您需要调用函数

navigationDocument.clear()

这将删除之前访问的所有页面,按下菜单按钮时将return返回主屏幕。

希望对您有所帮助。