iOS で PhoneGap (Cordova) の AudioEncode プラグインを使用しています。Cordova の新しいバージョン用に数行を更新した後、wav ファイルを m4a として正しくエンコードしているようです。Xcode コンソールに次のように表示されます。
AVAssetExportSessionStatusCompleted
doing success callback
スマホでファイルシステムを見てみると確かにwavファイルがm4aになっていました。ただし、成功のコールバック (ファイルをサーバーにアップロードする場所) は実行されません。これは、プラグインの関連コードです。
-(void) doSuccessCallback:(NSString*)path {
NSLog(@"doing success callback");
NSString* jsCallback = [NSString stringWithFormat:@"%@(\"%@\");", self.successCallback, path];
[self writeJavascript: jsCallback];
[self.successCallback release];
}
アプリ内の私のコードは次のようになります。
function encodeSuccess (path) {
console.log('Audio encoded to M4A! Preparing to upload...')
// file transfer code...
}
console.log('Preparing to encode audio file...')
window.plugins.AudioEncode.encodeAudio(entry.fullPath, encodeSuccess, fail)
プラグインのdoSuccessCallback
機能を更新する必要があると思いますが、Objective C または PhoneGap プラグインの経験がないため、この時点で行き詰まっています。
何か案は?
アップデート
上記の Objective C 関数で、 をログself.successCallback
に記録しようとしたところ、 としてログが記録されまし<null>
た。それから main 関数の先頭まで行って、( )encodeAudio
に割り当てられた引数も としてログに記録します。そのため、コールバックがメイン関数に正常に渡されていないように思えます。self.successCallback
[arguments objectAtIndex:1]
<null>
これは AudioEncode.h ファイルです。誰かがここで問題を見つけることができるかもしれません:
@interface AudioEncode : CDVPlugin {
NSString* successCallback;
NSString* failCallback;
}
@property (nonatomic, retain) NSString* successCallback;
@property (nonatomic, retain) NSString* failCallback;
- (void)encodeAudio:(NSArray*)arguments withDict:(NSDictionary*)options;