Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Notifications 如果手机处于阻止状态,则报警丢失_Notifications_Alarm_Firefox Os - Fatal编程技术网

Notifications 如果手机处于阻止状态,则报警丢失

Notifications 如果手机处于阻止状态,则报警丢失,notifications,alarm,firefox-os,Notifications,Alarm,Firefox Os,我正在为firefox操作系统开发一个应用程序,我遇到了警报问题。如果手机被阻塞,闹钟不会响 当手机处于阻止状态时会出现问题,因为通知桌面不会启动。但当你解锁手机时,应用程序在后台,但什么也没发生 编辑 代码中的解决方案。然后,我认为问题消失了。 我可以使用此功能添加报警: //应用程序工作权限的解决方案是写入此window.onload函数 window.onload=函数(){ 函数addAlarm(){ //数据警报将被触发 var myDate=新日期(); myDate.setMinu

我正在为firefox操作系统开发一个应用程序,我遇到了警报问题。如果手机被阻塞,闹钟不会响

当手机处于阻止状态时会出现问题,因为通知桌面不会启动。但当你解锁手机时,应用程序在后台,但什么也没发生

编辑

代码中的解决方案。然后,我认为问题消失了。

我可以使用此功能添加报警:

//应用程序工作权限的解决方案是写入此window.onload函数
window.onload=函数(){
函数addAlarm(){
//数据警报将被触发
var myDate=新日期();
myDate.setMinutes(myDate.getMinutes()+1);
//报警信息
风险值数据={
傅:“酒吧”
}
var request=navigator.mozallarms.add(myDate,“ignoreTimezone”,data);
request.onsuccess=函数(){
console.log(“La alarma ha sido programmada”);
};
request.onerror=函数(){
log(“Ha ocurrido un error:+this.error.name”);
};
}
//获取报警事件以触发报警,并添加桌面通知。
mozSetMessageHandler(“报警”,函数(mozAlarm){
console.log('fired Alarm');
//添加桌面通知的函数
通知我();
$(“#alarmFired”).append(“alarm fired:”+JSON.stringify(mozAlarm)+“

”); }); }
桌面通知功能:

函数notifyMe(){
var options={body:“通知正文”,图标:'http://www.famfamfam.com/lab/icons/mini/icons/icon_accept.gif'}
//让我们检查一下浏览器是否支持通知
如果(!(“窗口中的通知”){
警报(“此浏览器不支持桌面通知”);
}
//让我们检查一下用户是否可以获得一些通知
else if(Notification.permission==“已授予”){
//如果可以的话,让我们创建一个通知
var通知=新通知(“你好!”,选项);
}
//否则,我们需要请求用户的许可
//注意,Chrome没有实现权限静态属性
//因此,我们必须检查“未拒绝”而不是“默认”
else if(Notification.permission!=“拒绝”){
Notification.requestPermission(函数(权限){
//无论用户回答什么,我们都确保存储信息
如果(!(通知中的“许可”){
Notification.permission=权限;
}
//如果用户没有问题,让我们创建一个通知
如果(权限==“已授予”){
var通知=新通知(“你好!”,选项);
}
});
}
notification.onclick=function(){
log('clicked notification');
openApp();
}
}
Paco

您可能可以使用以下技术

//记录应用程序的可见性
var logVisibility=document.querySelector(“日志可见性”),
logVisibilityDisplay=document.querySelector(“日志可见性显示”);
if(logVisibility&&logVisibilityDisplay){
logVisibility.onclick=函数(){
logVisibilityDisplay.style.display=“block”;
logVisibilityDisplay.innerHTML=“我有焦点!
” document.addEventListener(“visibilitychange”,函数(){ if(document.hidden){ log(“Firefox OS样板应用程序被隐藏”); logVisibilityDisplay.innerHTML+=“现在我在后台
”; } 否则{ log(“Firefox OS样板应用程序有焦点”); logVisibilityDisplay.innerHTML+=“我有焦点!
”; } }); }; }
与请求屏幕锁定相结合,如

//保持屏幕打开
var lock=null;
var keepscreen=document.querySelector(“保持屏幕打开”);
如果(保留屏幕){
keepscreen.onclick=函数(){
如果(!锁定){
lock=window.navigator.requestWakeLock('screen');
keepscreen.innerHTML=“解除锁定”;
}
否则{
lock.unlock();
lock=null;
keepscreen.innerHTML=“保持屏幕打开”;
}
};
}
我的想法是:

  • 添加您的闹钟
  • 当触发警报的函数被调用时,您尝试在屏幕上请求锁定(设备不能以这种方式锁定)
  • 警报关闭后(用户交互将其关闭),再次释放屏幕锁
  • 我不是100%肯定这会奏效,但这就是我现在能想到的

    编辑


    好的,我已经搜索了更多,您可能想使用wakeLock而不是sreen lock。有关更多信息,请查看

    请使用答案发布答案,不要在问题中编辑答案。在同一页上:不要用答案作为评论,说你已经回答了你的问题:)。听起来很困惑,但基本上只要用问题来回答问题,用答案来回答问题,你就会没事了