1

我一直在自学如何在 AngularJS 中为 Firefox OS 编写应用程序以完成大学作业。这是我第一次尝试用 JS 编写应用程序。

该应用程序的目的是根据通过 SMS 发送的“命令”运行命令(又名“响亮”、“锁定设备”、“打开 wifi”,并使用 GPS 位置回复 SMS 命令)。目前,我只是想做一个简单的$window.alert('Messaged Received'),显示收到短信的时间。

我的问题是,我正在尝试addEventListener为传入的 SMS 创建一个,目前,显示一个$window.alert(). 稍后,我将使用大小写开关。

我参考了MDN API来创建事件监听器。

var mozMM = navigator.mozMobileMessage;
mozMM.addEventListener('received', function addEventListener(evt) {
    // Display a alert when a message is received
    $window.alert('SMS received');
    $window.alert(evt.message.body);
}, false);

manifest.webapp的设置包括所有相关设置:

"type" : "certified",
"permissions": {
    "backgroundservice":{},
    "sms":{},
    ...
},
"messages": [
    { "sms-received": "/index.html" },
    { "notification": "/index.html" }
]

我可以毫无问题地从我的应用程序发送短信。所以我认为我的权限没有问题。我还确认我可以完全访问该mozMobileMessage对象。

为了测试,我使用的是 Geekphone,它已经 root 并且可以安装经过认证的应用程序。

我已经将源代码上传到github: https ://github.com/s3069246/findmydevice/tree/master/app

4

1 回答 1

1

感谢 Google Groups 上的某个人为我提供了正确的解决方案。我想我也会在这里分享它。

问题是我使用了错误的事件处理程序。我应该一直使用系统消息处理程序

navigator.mozSetMessageHandler('sms-received', function onSMS(sms) { 
    /* here your code */ 
}); 

结合"message": []清单中的处理程序,系统处理程序将提醒应用程序已收到一条消息,即使应用程序正在后台运行。

于 2013-08-21T11:05:35.210 回答