2017-10-21 143 views
1

我找到了this cordova module,虽然没有使用说明?调用cordova模块?

写作

MusicPlayer.init(
     function (msg) { 
      console.log("audio completed"+ msg); 
     }, 
     // error callback 
     function (e) { 
      console.log("Error getting message=" + e); 
     } 
    ); 

回报Could not load main module: ReferenceError: MusicPlayer is not defined

模块导出像module.exports = new MusicPlayer();,所以调用它的方式是自己?

Trying,window.cordova.plugins.Musicplay.init();也给出了同样的错误。

调用此模块并在cordova中使用的正确方法是什么?

编辑 - 这是怎样的函数定义

var exec = require('cordova/exec'); 

function MusicPlayer() {} 

MusicPlayer.prototype.init = function(successCallback, errorCallback, json) { 
    exec(successCallback, errorCallback, "MusicPlayer", "init", [json]); 
};  
MusicPlayer.prototype.getMusicList = function(successCallback, errorCallback, json) { 
    exec(successCallback, errorCallback, "MusicPlayer", "getMusicList", [json]); 
}; 
.. 
.. 
module.exports = new MusicPlayer(); 

回答

1

检查则会覆盖目标:https://github.com/jasminpethani/cordova-plugin-musicplayer/blob/master/com.srini.musicplayer/plugin.xml#L14-L16

<js-module src="www/musicplayer.js" name="musicplayer"> 
    <clobbers target="musicplayer" /> 
</js-module> 

所以实例名称应该是musicplayer

musicplayer.init(function (msg) { 
     console.log("audio completed"+ msg); 
    }, 
    // error callback 
    function (e) { 
     console.log("Error getting message=" + e); 
    }); 

个提示:

  • 确保MusicPlayer插件在列表中存在,当您运行$ cordova plugin list
  • 确保您拨打musicplayer.init内:

    document.addEventListener("deviceready", function(){/**/}

+0

它的工作!如果你知道,需要传递给[playSong](https://github.com/jasminpethani/cordova-plugin-musicplayer/blob/master/com.srini.musicplayer/www/musicplayer.js#L23)功能?我试着用'getMusicList'返回的第一个值作为第三个参数。但它返回'无效行动'? – arjun

+0

嗯,它没有问你问,但无论如何看到Android和iOS实施:https://github.com/jasminpethani/cordova-plugin-musicplayer/blob/master/com.srini.musicplayer/src/android/MusicPlayer.java #L49。看起来他没有在Android上实现它,在iOS上没有参数。对不起 –

+0

那很糟糕;)。谢谢你的帮助很大。 – arjun