在iOS模拟器上,使用PhoneGap/Cordova调度本地通知无法正常工作。

4
  • 已安装最新的Xcode(7.3.1)
  • 已安装最新的PhoneGap(6.2.7)
  • 创建了默认的PhoneGap应用程序
  • 使用phonegap plugin add de.appplant.cordova.plugin.local-notification安装本地通知插件
  • 添加代码以创建通知(见下文)
  • 使用phonegap run iOS运行
  • 没有出现通知

index.js中的代码:

document.addEventListener('deviceready', function () {
    try {
        cordova.plugins.notification.local.schedule({
            text: "This is the text.",
            at: new Date(new Date().getTime() + 10000)
        });
    } catch (e) {
        alert("Fail " + e);
    }
});

有什么建议吗?我做错了什么吗?

没有Mac供我测试,但我假设您已经验证了事件是否触发并且处理程序被调用,例如通过控制台记录或在函数顶部调用alert?这将至少缩小到cordova调用,可能会导致错误报告? --- [另外@sage444那是反引号,不是秒 - 它只计划在10秒后执行,而不是2.7小时。] - brichins
@brichins 感谢您的澄清。 - sage444
@Zarkonnen 尝试在Android和iOS设备上进行测试。它在Android上运行良好,但无法在iOS设备上工作(奇怪的是没有错误跟踪)。但当我在模拟器中测试时,在系统日志中得到了以下错误 - "UILocalNotification:无法计算下一个触发日期-previous = 2016-06-17 09:44:23 +0000:next = 2016-06-17 09:44:23 +0000:repeatInterval = 2" - Gandhi
@Zarkonnen 上述错误似乎是本地通知插件中的一个反复出现的问题。请查看以下链接 - https://github.com/katzer/cordova-plugin-local-notifications/issues/901 https://github.com/katzer/cordova-plugin-local-notifications/issues/234 保持联系并告知最新情况。 - Gandhi
2个回答

3

我尝试了同样的代码,模拟器上可以运行。

我想你可能忘记了,如果你在应用程序内部,通知将不会显示。确保在应用程序启动后返回到主屏幕(使用快捷键cmd+shift+h),这样当计划时间(10秒)到来时,应用程序在后台运行,通知应该会显示。

您可能希望在第一次运行时将应用程序保持在前台,以便iOS提示您允许通知。之后,重新启动应用并将其发送到后台。


没错,就是这样。通知已经出现了,只是没有以任何方式可见。谢谢! - Zarkonnen
@Gaafar 你好,我在iOS(模拟器和设备)上无法使其工作,但在Android上可以正常工作。我得到了我之前在问题评论中提到的错误。有什么线索吗? - Gandhi
@Gandhi,你能分享一下你的代码吗?你是否传递了正确的日期给“at”属性?另外,尝试不使用重复间隔。 - gafi
@Gaafar 感谢您的回复。我尝试了在问题中发布的相同代码:$(document).ready(function() { document.addEventListener("deviceready", onDeviceReady, false); });function onDeviceReady() { try { cordova.plugins.notification.local.schedule({ text: "这是文本。", at: new Date(new Date().getTime() + 10000) }); } catch (e) { alert("失败 " + e); } } - Gandhi
@Gaafar 你好,我犯了和Zarkonnen一样的错误,已经发布了答案。我的错 :( - Gandhi

1
我在iPhone 5s上尝试了同样的操作。一旦我启动了通知应用程序,就什么也没有发生。事实上,我的错误在于我将应用程序保持在后台。即使过了几分钟,也没有任何通知显示出来。
最后,我发现我必须回到主屏幕,从主屏幕向下滑动通知抽屉,并单击“通知”选项卡以查看通知文本。可悲的是,如果应用程序在前台,则通知提示音也不起作用 :(
道德:对于iOS通知,请打开应用程序并将其移至后台。否则,如果应用程序在前台,请在通知抽屉的“通知”选项卡中检查通知。

是的,我不太清楚如果正确的方式取决于您的应用程序当前是否打开,该如何可靠地通知用户。 :/ - Zarkonnen
@Zarkonnen 确实如此,zarkonnen。事实上,我花了一天时间调查这个问题,认为它不起作用:(这就是为什么我为了其他人的利益发布答案的原因。如果有意义,请接受。愉快编码。干杯 - Gandhi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接