在 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/iOS
phonegap(cordova)从手机app跳转到web页面在跳转回APP本地页面思路