当应用程序不在前台

时间:2017-04-13 21:20:54

标签: android ios cordova angular ionic-framework

原始问题(按硬件按钮按)

我想知道是否可以使用Ionic / Cordova收听手机的硬件按钮。
重要的是,当用户当前没有通过后台服务以某种方式使用应用程序时,这也应该有用吗?
基本上我想在用户使用Ionic在混合应用程序中同时按下音量和电源按钮时截取屏幕截图。该应用程序然后提供编辑该屏幕截图或直接保存它。 / p>

我做了一些研究,发现cordova events听这些按钮。我还读到按下电源按钮时应该触发暂停事件。无论如何,我不认为听那些事件会在那个应用之外工作吗?

原始问题结论

经过一些研究后,我得出结论,使用Cordova / Ionic这是不可能的。即使是这个问题的原生实现似乎更像是一个黑客而不是一个干净的解决方案。这样做的原因是,当前位于顶部的应用程序应该可以控制处理各种按钮事件。你可以干扰另一个应用程序,你总是需要运行后台服务。
无论如何,我看到的所有解决方案对我来说都太脏了。

更新问题/重新评估问题

  

基本上,当用户在混合应用中同时按下音量和电源按钮时,我想要截取屏幕截图   使用Ionic。

如果我无法解决当前的问题,我必须重新考虑它。所以:
实际上,我只是希望用户能够以提供良好可用性体验的方式截取屏幕截图。

作为替代同时按下两个硬件按钮的替代方法,我有多种方法可以做到这一点。

选项1:用户按下按钮"截屏" - >应用程序进入后台,从底层应用程序中截取屏幕截图,应用程序返回到前台。
AFAIK甚至不能在iOS上运行,只有Android提供了在其他应用程序之上的绘图,所以在iOS中屏幕截图只是在所有情况下从主屏幕中获取......?

选项2:用户按下按钮"截屏" - >应用程序进入后台并按下通知。

  • 此通知可以说"点击以截取屏幕截图"。通知面板(总是在其他应用程序之上绘制)消失,屏幕截图被拍摄并且应用程序弹出。这可以使用Local Notifications并听取清除,取消等事件来完成。
  • 通知甚至可以使用OneSignal自定义按钮(请参阅Action Buttons)。一个按钮可以说"添加屏幕截图",另一个可以说"完成",这样用户甚至可以一次拍摄多个屏幕截图。

选项3 :可以将一个按钮添加到触发截屏操作的快捷方式中。我不知道这是否可行,如果适用于所有设备。

我认为最好的解决方案是使用选项2:通知上的自定义操作按钮。通知应该是所有设备必须具有的,并且应始终在当前应用程序之上绘制。因此,用户只需刷下通知并按下按钮即可截取屏幕截图。

我对此主题没有任何先验知识,所以如果有人能够确认或改进我的思考过程,我会很高兴。

1 个答案:

答案 0 :(得分:1)

修改

我对此做了一些研究,主要是为了满足自己的好奇心。我遇到过这个插件

https://github.com/katzer/cordova-plugin-background-mode/blob/master/README.md

它允许您在后台执行任务。

请在自述文件中注明。

  

商店合规性

     

大多数移动操作系统不支持无限后台任务,因此不符合公共商店供应商。一个成功的激情并不是保证。

     

使用该插件需要您自担风险!

这对Android来说可能不是什么大不了的事,但有关苹果应用商店提交被拒绝的公开问题。仔细阅读这个问题,了解其他人如何看待这一点。

https://github.com/katzer/cordova-plugin-background-mode/issues/122

原始答案:

如果你想截图,那就有这个插件:

https://github.com/gitawego/cordova-screenshot/blob/master/README.md

也许你可以在使用暂停监听器时听一些其他事件。如果它们被激活,那么使用上面引用的屏幕截图插件调用:

navigator.screenshot.save(function(error,res){
    if(error){
        console.error(error);
    }else{
        console.log('ok',res.filePath);
    }
});