PhoneGap本地通知实现异常求助:代码执行中断问题排查
解决PhoneGap/Cordova本地通知插件冲突导致的执行中断问题
嘿,我看你遇到的问题大概率是多个本地通知插件冲突导致的——你在config.xml里同时装了3款功能完全重复的本地通知插件,这会让Cordova搞不清该调用哪个实现,直接在执行schedule方法时抛出错误,所以第一个alert能弹出,代码执行到通知调度就卡住了,第二个alert自然跑不到。
下面给你一步步的解决方案:
1. 清理重复的本地通知插件
首先要把所有冲突的插件卸载干净,打开终端执行以下命令:
cordova plugin remove phonegap-plugin-local-notification cordova plugin remove cordova-plugin-local-notification cordova plugin remove de.appplant.cordova.plugin.local-notification
2. 重新安装单一靠谱的本地通知插件
目前主流且维护较好的是cordova-plugin-local-notification(也就是你之前配置里的de.appplant.cordova.plugin.local-notification,现在npm包统一用这个名称),推荐安装稳定版本,比如你之前用的测试版也可以,但只保留这一个:
cordova plugin add cordova-plugin-local-notification@0.9.0-beta.2
3. 修正config.xml配置
删除所有重复的本地通知插件配置,只保留刚安装的那一个,修改后的配置如下:
<plugin name="cordova-plugin-file-transfer2" spec="^1.0.1" /> <plugin name="phonegap-plugin-push" spec="^2.1.2"> <variable name="FCM_VERSION" value="11.0.1" /> </plugin> <plugin name="cordova-plugin-local-notification" spec="0.9.0-beta.2" />
4. 优化JS代码,添加错误捕获
给通知调度代码加上错误处理,这样能直观看到问题所在,方便调试:
document.addEventListener('deviceready', onDeviceReady, false); function onDeviceReady() { alert('1'); try { // 带回调的通知调度 cordova.plugins.notification.local.schedule({ title: 'My first notification', text: 'Thats pretty easy...', foreground: true }, function() { // 调度成功回调 alert('通知调度成功!'); alert('2'); }, function(error) { // 调度失败回调 alert('调度失败:' + JSON.stringify(error)); }); } catch (e) { // 捕获代码执行错误 alert('代码执行出错:' + e.message); } }
额外注意事项
- 一定要在真实移动设备或官方模拟器(Android Studio模拟器/Xcode模拟器)上测试,浏览器的Cordova模拟环境不支持本地通知功能。
- Android 13及以上版本需要手动请求通知权限,可以在代码里添加权限检查逻辑:
// 检查并请求通知权限 cordova.plugins.notification.local.hasPermission(function(granted) { if (!granted) { cordova.plugins.notification.local.requestPermission(function(granted) { console.log('通知权限请求结果:', granted); }); } }); - 插件安装完成后,记得重新构建项目:
cordova build android或cordova build ios,再运行测试。
内容的提问来源于stack exchange,提问作者Mustafa Agamey
相关产品推荐
相关产品推荐

