我敢肯定它在科爾多瓦的錯誤...
這是怎麼一回事呢,我們先從:
navigator.notification.beep
將觸發(科爾多瓦,1.6.1.js) :
beep:function(count) {
(new Media('beep.wav')).play();
}
創建媒體對象將導致:
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中沒有方法創建...
而且因爲沒有方法「創建」我們得到的「媒體」:
cleanApp[24713:707] ERROR: Method 'create:withDict:' not defined in Plugin 'Media'
cleanApp[24713:707] FAILED pluginJSON = {"className":"Media","methodName":"create","arguments":["INVALID","b6acfbad-1e26-de77-1557-0d7c2f87a00a","beep.wav"]}
那麼我們怎麼能聽到聲音?
很好的問題。如果你看看:
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;
我有同樣的錯誤... argh任何人? – Francesco 2012-04-17 14:57:43
聽起來很愚蠢,但你確定iPad沒有靜音嗎? – Marius 2012-04-19 12:05:07
是的,我確定。已檢查並重新檢查。 – 2012-04-22 19:24:19