Phonegap蜂鸣音/声音iOS错误
我正在尝试使用PhoneGap/Cordova 1.6.0播放声音文件。 当我播放声音时,会出现以下错误:Phonegap蜂鸣音/声音iOS错误,ios,cordova,Ios,Cordova,我正在尝试使用PhoneGap/Cordova 1.6.0播放声音文件。 当我播放声音时,会出现以下错误: ERROR: Method 'create:withDict:' not defined in Plugin 'Media' FAILED pluginJSON = {"className":"Media","methodName":"create","arguments":["INVALID","94671882-85c3-9173-17a2-ed166310d77d","beep.wa
ERROR: Method 'create:withDict:' not defined in Plugin 'Media'
FAILED pluginJSON = {"className":"Media","methodName":"create","arguments":["INVALID","94671882-85c3-9173-17a2-ed166310d77d","beep.wav"]}
即使我收到这些错误信息,声音也会在模拟器中播放,但不会在我的设备(iPad 2 5.1)上播放。我尝试了navigator.notification.beep和new Media(),但它们都抛出相同的错误
有人知道如何解决这个问题吗?当我的第四个参数PhoneGap.exec()与我的Objective-C方法名称不匹配时,我遇到了这个错误
验证错误消息中描述的“methodName”是否确实存在于您的Objective-C实现中。我很确定这是Cordova中的一个bug 事情是这样的,我们从以下几点开始:
navigator.notification.beep
这将触发(cordova-1.6.1.js):
创建媒体对象将导致:
var Media = function(src, successCallback, errorCallback, statusCallback) {
// successCallback optional
if (successCallback && (typeof successCallback !== "function")) {
console.log("Media Error: successCallback is not a function");
return;
}
// errorCallback optional
if (errorCallback && (typeof errorCallback !== "function")) {
console.log("Media Error: errorCallback is not a function");
return;
}
// statusCallback optional
if (statusCallback && (typeof statusCallback !== "function")) {
console.log("Media Error: statusCallback is not a function");
return;
}
this.id = utils.createUUID();
mediaObjects[this.id] = this;
this.src = src;
this.successCallback = successCallback;
this.errorCallback = errorCallback;
this.statusCallback = statusCallback;
this._duration = -1;
this._position = -1;
exec(null, this.errorCallback, "Media", "create", [this.id, this.src]);
};
如果您查看Cordova.plist,您将看到插件名称“Media”映射到“CDVSound”,而在CDVSound中没有创建方法
由于“媒体”没有“创建”的方法,我们得到:
那我们怎么能听到声音呢
好问题。。如果你看:
new Media('beep.wav')).play();
您注意到我们称之为play(),让我们看看它的作用:
Media.prototype.play = function(options) {
exec(null, null, "Media", "startPlayingAudio", [this.id, this.src, options]);
};
在CDVSound.h中:
- (void) startPlayingAudio:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
我也有同样的错误…有人吗?听起来很傻,但你确定iPad没有静音吗?是的,我确定。你已经检查了又检查了。是的,你是对的。CDVSound.h/m文件中没有“创建”方法。我不知道在exec()调用中是否还有其他函数需要替换。我试过一些,但似乎都不管用。我曾尝试在旧文件和google上搜索create方法,但没有成功。更新:我刚从Cordova成员处获得批准,从JS文件调用“create()”肯定是一个bug
Media.prototype.play = function(options) {
exec(null, null, "Media", "startPlayingAudio", [this.id, this.src, options]);
};
- (void) startPlayingAudio:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;