在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菜单,我只需要在按下菜单按钮时将应用程序提交到后台。
提前谢谢你:)
答案 0 :(得分:2)
奇怪的是它已经过了一个月,即使有人为这个问题设定赏金,也没有人回答这个问题!可能是一个愚蠢的问题,没有人回答过这个问题!
我得到答案的任何方式,所以我与每个人分享。
实际上问题是视频播放器没有感应按下菜单按钮。我想这是覆盖这个事件,因此应用程序没有提交到后台。我使用了apple提供的模板,它开始工作了!
我想我们需要在我们的应用程序中实现DOM结构,而apple提供的模板已经拥有它。所以我根据我的需要操纵模板,现在我在视频播放器上获得菜单按钮事件。所以现在播放列表是我的根控制器,视频是它的子控制器。当我在播放视频时按菜单按钮,它会弹回播放列表控制器,然后再按菜单按钮按下它提交到后台。最后,通过此解决方案,我的应用程序现已获得批准并在应用程序商店中运行。
答案 1 :(得分:0)
我今天刚刚找到你的问题。
我认为最好的方法是从导航中删除所有历史记录。
要做到这一点,你需要调用函数
navigationDocument.clear()
这将导致删除所有先前访问的页面,并且当按下菜单按钮将返回主屏幕时。
希望它可以帮助你。