None 的插件可以加载到 Cordova/PhoneGap Android 混合移动应用程序中。怎么解决?

None of the plugins can be loaded in Cordova/PhoneGap Android hybrid mobile app. How to solve?

我已完全按照此处的说明进行操作。 (https://documentation.onesignal.com/v3.0/docs/phonegap-sdk-setup)

我的目标是将推送通知从服务器(Firebase 或 OneSignal)发送到我正在 Chrome 浏览器或 PhoneGap 测试应用程序上测试的 Android 设备。

我已将以下代码添加到我的 onDeviceReady 函数并运行;

console.log("OneSignal is here!");
var notificationOpenedCallback = function(jsonData) {
  console.log('notificationOpenedCallback: ' + JSON.stringify(jsonData));
  alert("Received my notification");
};

// c02be63f-e777-4b99-8775-dec62efxxxxx is my APP ID
window.plugins.OneSignal
  .startInit("c02be63f-e777-4b99-8775-dec62efxxxxx") 
  .handleNotificationOpened(notificationOpenedCallback)
  .endInit();

window.plugins.OneSignal.setSubscription (true);

window.plugins.OneSignal.enableNotificationWhenActive(true);

但是,在 运行 之后,我得到以下错误。有人可以解释一下这个错误是什么意思吗?

Error: exec proxy not found for :: StatusBar :: _ready
(index):365 OneSignal is here!
(index):365 Error: exec proxy not found for :: OneSignalPush :: setNotificationReceivedHandler
(index):365 Error: exec proxy not found for :: OneSignalPush :: setNotificationOpenedHandler
(index):365 Error: exec proxy not found for :: OneSignalPush :: init
(index):365 Error: exec proxy not found for :: OneSignalPush :: setSubscription

我发现我试过的所有其他新插件都出现同样的错误。这意味着出了点问题。

这是我的 config.xml

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.upen.testing" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0">
    <name>Testing</name>
    <description>
        A blank PhoneGap app.
    </description>
    <author email="support@phonegap.com" href="http://phonegap.com">
        PhoneGap Team
    </author>
    <content src="index.html" />
    <access origin="*" />
    <gap:plugin name="onesignal-cordova-plugin" source="npm" spec="^2.2.4" />
    <preference name="phonegap-version" value="cli-7.1.1" />
    <preference name="android-build-tool" value="gradle" />
    <preference name="android-minSdkVersion" value="15" />
    <engine name="browser" spec="~5.0.1" />
    <plugin name="cordova-plugin-whitelist" spec="~1.3.3" />
    <plugin name="onesignal-cordova-plugin" spec="~2.2.4" />
    <plugin name="cordova-plugin-statusbar" spec="~2.3.0" />
    <plugin name="cordova-plugin-fcm" spec="^2.1.2" />
    <engine name="android" spec="~6.3.0" />
</widget>

这是关键

which I am testing on Chrome browser or PhoneGap test app.

如果您在 Chrome 上测试,Cordova 插件在那里不起作用

如果您在 Phonegap 测试应用程序上进行测试,Phonegap 开发人员应用程序是一个 Cordova 应用程序,它是用一些 Cordova 插件构建的,但它不包含 onesignal 插件,因此您不能使用当你在那里测试时插件。

因此,您需要做的是直接在 phone 中编译和 运行 您的应用程序(没有 Chrome 或 Phonegap 应用程序)

我不使用 Phonegap,所以我不确定您需要的确切命令。你可以试试

phonegap run android --device

phonegap cordova run android --device

cordova run android --device(这可能需要安装 Cordova CLI npm install -g cordova

您需要安装 Android SDK 才能使之前的命令生效。