PushPlugin 未找到,或者不是 CDVPlugin

Posted

技术标签:

【中文标题】PushPlugin 未找到,或者不是 CDVPlugin【英文标题】:PushPlugin not found, or is not a CDVPlugin 【发布时间】:2016-02-16 10:46:54 【问题描述】:

我正在使用 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 如何编译插件(并生成一些警告),一切似乎都很正常,但由于某种原因,它不能包含在应用程序中。

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

【问题讨论】:

【参考方案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!

【讨论】:

以上是关于PushPlugin 未找到,或者不是 CDVPlugin的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap 要求未使用 PushPlugin 和 node-gcm 定义

Cordova 推送通知 (PhoneGap PushPlugin) 未触发 ecb 回调 (onNotificationAPN)

为科尔多瓦定制 PushPlugin。 (适用于安卓)

错误:未找到插件 '',或者不是 CDVP 插件。检查 config.xml 中的插件映射

未找到插件,或者不是 CDVP 插件。检查 config.xml 中的插件映射

错误:未找到插件“org.apache.cordova.barcodeScanner”,或者不是 CDVP 插件。检查 config.xml 中的插件映射