Dropbox で機能を実行するために、PhoneGap アプリケーションから Objective C を呼び出しています。
私が抱えている問題は、ファイルが Dropbox から電話のローカル ファイル システムにダウンロードされる前に、JavaScript へのコールバックが起動していることです。
これは、Dropbox からのファイルのダウンロードを開始する私の Objective C メソッドです -
- (void) restore:(CDVInvokedUrlCommand*)command
{
CDVPluginResult* pluginResult = nil;
NSString* javaScript = nil;
NSLog(@"Dropbox restore method is executing");
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents directory
NSString *localPath = [documentsDirectory stringByAppendingPathComponent:@"PocketHealth-backup.bk"];
NSString *dropBoxFile = @"/PocketHealth-backup.bk";
[[self restClient] loadFile:dropBoxFile intoPath:localPath];
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
javaScript = [pluginResult toSuccessCallbackString:command.callbackId];
[self writeJavascript:javaScript];
}
Objective C には、Dropbox ファイルが電話にダウンロードされたときに実行されるメソッドがあります。Dropbox ファイルのダウンロードが完了した後に、このメソッドが出力する NSLog を取得します。問題は、JavaScript コールバックを返す前に、このイベントがいつ発生するかを知る必要があることです。
Dropbox ファイルのダウンロードが完了したときに実行されるメソッドは次のとおりです。
- (void) restClient:(DBRestClient*)client loadedFile:(NSString*)localPath
{
NSLog(@"File loaded into path: %@", localPath);
}
復元メソッドにある JavaScript コールバックを返す前に、Dropbox ファイルのダウンロードが完了するまで待つにはどうすればよいですか?