在 PhoneGap/Cordova 中安排本地通知在 iOS 模拟器上不起作用

Posted

技术标签:

【中文标题】在 PhoneGap/Cordova 中安排本地通知在 iOS 模拟器上不起作用【英文标题】:Scheduling a local notification in PhoneGap/Cordova doesn't work on iOS simulator 【发布时间】:2016-06-14 11:56:13 【问题描述】: 安装了最新的 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 感谢您的澄清 @Zarkonnen 尝试在 android 和 iOS 设备上进行相同的测试。它在 Android 中运行良好,但无法在 iOS 设备上运行(奇怪的是也没有错误跟踪)。但是当我在模拟器中测试时,这是我在系统日志中得到的错误 - “UILocalNotification:无法计算下一个触发日期 - 上一个 = 2016-06-17 09:44:23 +0000:下一个 = 2016-06-17 09 :44:23 +0000 : 重复间隔 = 2" @Zarkonnen 上述错误似乎是本地通知插件中反复出现的问题。看看这个链接 - github.com/katzer/cordova-plugin-local-notifications/issues/901 github.com/katzer/cordova-plugin-local-notifications/issues/234 让我发帖。 【参考方案1】:

我尝试了相同的代码,它在模拟器上运行。

我想您可能忘记了,如果您在应用内,通知将不会显示。确保在应用启动后返回主屏幕(使用快捷键 cmd+shift+h),以便在预定时间到来(10 秒)时应用在后台并显示通知。

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

【讨论】:

是的,就是这样。通知出现了,但以任何方式都不可见。谢谢! @Gaafar 嗨,我无法让它在 iOS(模拟器和设备)中运行,但在 Android 中运行良好。得到了我之前对该问题的评论中提到的错误。有什么线索吗? @Gandhi 你能分享你的代码吗?您是否传递了 at 属性的正确日期?也尝试不重复间隔 @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) ); 捕捉(e)警报(“失败”+ e); @Gaafar 嗨 Gaafar,我或多或少犯了 Zarkonnen 犯的错误。发布了答案。我的坏:(【参考方案2】:

我在 iPhone 5s 上也试过了。一旦我启动通知应用程序,什么都没有发生。事实上,我犯的错误是我让应用程序在后台打开。即使过了几分钟,也没有出现任何通知。

最后,发现我必须转到主屏幕,从主屏幕向下滑动通知抽屉,然后单击通知选项卡以查看通知文本。可悲的是,如果应用程序在前台,通知蜂鸣声也起作用:(

道德:对于 iOS 通知,打开应用并将其移至后台。否则,如果应用程序在前台,请在通知抽屉的通知选项卡中检查通知

【讨论】:

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

以上是关于在 PhoneGap/Cordova 中安排本地通知在 iOS 模拟器上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap Cordova 安装 Windows

将使用相机拍摄的照片捕获并存储到本地数据库/PhoneGap/Cordova/iOS

phonegap(cordova)从手机app跳转到web页面在跳转回APP本地页面思路

在带有外部 URL 的 iOS 上使用 PhoneGap/Cordova

是否可以在 iOS 中安排 SILENT 本地通知?

在 iOS 10 中安排和处理本地通知