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返回主屏幕。
希望对您有所帮助。
当在 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返回主屏幕。
希望对您有所帮助。