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

时间:2016-05-27 14:56:14

标签: javascript swift tvos apple-tv tvml

在TVML应用中从Siri遥控器按"菜单" 按钮时,我不知道如何将应用发送到后台。我是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文件,我把它保存在文件夹名称服务器中,并根据苹果指南访问它。我甚至下载了苹果公司的TVMLCatalogUsingTVMLTemplates项目,但是当我们在root菜单上并按下菜单按钮时,我无法理解他们在哪里添加了将应用程序提交到后台的代码。

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

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

提前谢谢你:)

2 个答案:

答案 0 :(得分:2)

奇怪的是它已经过了一个月,即使有人为这个问题设定赏金,也没有人回答这个问题!可能是一个愚蠢的问题,没有人回答过这个问题!

我得到答案的任何方式,所以我与每个人分享。

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

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

答案 1 :(得分:0)

我今天刚刚找到你的问题。

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

要做到这一点,你需要调用函数

navigationDocument.clear()

这将导致删除所有先前访问的页面,并且当按下菜单按钮将返回主屏幕时。

希望它可以帮助你。