【问题标题】:PushPlugin not found, or is not a CDVPluginPushPlugin 未找到,或者不是 CDVPlugin
【发布时间】:2026-01-18 17:00:02
【问题描述】:

我正在使用 Cordova、Angular 和 Ionic 开发一个应用程序。我的phonegap push 插件有问题,我搜索了很多,但没有找到解决方案。

我使用 cordova 5.4.1 和 phonegap-plugin-push 1.5.3。当我在 iPad 或 Xcode 模拟器上运行应用程序时,日志会抛出此错误:

 ERROR: Plugin 'PushPlugin' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
 [CDVCommandQueue executePending] [Line 159] FAILED pluginJSON = [
  "PushPlugin938856013",
  "PushPlugin",
  "register",
  [{
     "ecb":"onNotificationAPN",
     "alert":"true",
     "badge":"true",
     "sound":"true"
  }]
 ]

我已经重新安装了几次插件,删除/添加了 ios 平台,但没有任何效果。 我还尝试添加 config.xml 行,例如:

<feature name="PushPlugin">
      <param name="ios-package" value="PushPlugin" />
</feature>

但不起作用。

我已经阅读了在 Xcode 的构建阶段中包含 PushPlugin.m 和在插件 forlder 中包含 PushPlugin.h 的内容,但两者都已经包含在内。我可以看到 Xcode 如何编译插件(并生成一些警告),一切似乎都很正常,但由于某种原因,它不能包含在应用程序中。

就像我说的那样,我浪费了很多时间来寻找和尝试解决方案,但没有任何效果.. 有人可以帮帮我吗?

【问题讨论】:

    标签: ios xcode cordova phonegap-plugins phonegap-pushplugin


    【解决方案1】:

    https://github.com/phonegap-build/PushPlugin#description

    重要 - 推送通知适用于真实设备。它们未针对 WP8 模拟器进行测试。在 iOS 模拟器上注册过程将失败。

    但我猜它的价值,试试cordova plugin add phonegap-plugin-push --save,因为phonegap/phonegap-plugin-push是新的统一版本

    【讨论】:

    • 你说得对,我一直在 iPad 上测试它,但我在模拟器上试过两次,但就像你说的那样,不起作用。我试过cordova plugin add phonegap-plugin-push --save,但没有用...
    • 删除你在config.xml中添加的内容,然后再试一次
    • 也试过了,但没什么变化,错误依旧... :(
    • 是的,我可以通过cordova plugin list 看到它。在构建和编译时一切看起来都很好,当 Xcode 在 iPad 上安装应用程序时也是如此。我认为当 Xcode 尝试启动应用程序时会发生此错误...
    【解决方案2】:

    我很高兴地说,两周后,我找到了解决方案!当我以为我快疯了时,插件终于可以工作了! 我以错误(和旧)的方式初始化插件。我将我的初始化代码替换为:

            var pushNotification = PushNotification.init({
                "android": {
                    "senderID": "1234567890"
                },
                "ios": {"alert": "true", "badge": "true", "sound": "true"}, 
                "windows": {} 
            });
    
            pushNotification.on('registration', function(data) {
                console.log("registration event");
                console.log(JSON.stringify(data));
            });
    
            pushNotification.on('notification', function(data) {
                console.log("notification event");
                console.log(JSON.stringify(data));
    
                pushNotification.finish(function () {
                    console.log('finish successfully called');
                });
            });
    
            pushNotification.on('error', function(e) {
                console.log("push error");
            });
    

    而且它有效! 非常感谢您的帮助,@Dwardu!

    【讨论】: