2012-04-16 8 views
4

PhoneGap/Cordova 1.6.0でサウンドファイルを再生しようとしています。 私は音を再生すると、私はこれらのエラーを取得:PhoneGapビープ音/サウンドiOSエラー

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()の両方で試しましたが、どちらも同じエラーが発生します。

誰もこの問題を解決する方法を知っていますか?

+0

私は同じエラーがあります...誰ですか? – Francesco

+0

愚かではありますが、iPadがミ​​ュートされていないことは確かですか? – Marius

+0

はい私は確信しています。チェックして再チェックしてください。 –

答えて

0

私はここで

は、それがどのようになるで、我々はで始まる...それはコルドバのバグだかなり確信しています:

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]); 
}; 

beep:function(count) { 
     (new Media('beep.wav')).play(); 
    } 

はになりますメディアオブジェクトを作成します

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"]} 

どのように音が聞こえますか?あなたが見れば

良い質問..:CDVSound.hで

Media.prototype.play = function(options) { 
    exec(null, null, "Media", "startPlayingAudio", [this.id, this.src, options]); 
}; 

new Media('beep.wav')).play(); 

あなたは、のは、それが何をするか見てみましょう)私たちはプレーを(呼び出すことがわかり

- (void) startPlayingAudio:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options; 
+0

アップデート:ちょうど、Cordovaのメンバーから、JSファイルから "create()"を呼び出すことは間違いなくバグです –

0

PhoneGap.exec()の4番目のパラメータがObjective-Cのメソッド名と一致しなかった場合、このエラーが発生しました。

エラーメッセージに記載されている "methodName"が実際にObjective-C実装に存在することを確認してください。 (コルドバ-1.6.1.js)をトリガします

navigator.notification.beep 

+0

はい、あなたは正しいです。 CDVSound.h/mファイルに "create"メソッドはありません。私はexec()呼び出しでそれを置き換えなければならない別の関数があるかどうかわかりません。私はいくつか試しましたが、誰も働いていないようです。 私は古いファイルとGoogleの検索メソッドを検索しようとしましたが、成功しませんでした。 –