1

ここで参照されている Cordova メディア オブジェクトを IOS で使用しています。

http://cordova.apache.org/docs/en/2.5.0/cordova_media_media.md.html#Media

Android デバイスでは完璧に動作し、数秒でロードされます。ただし、IOS デバイスでは、1 分以上かかる場合があります。その次に、私のデバイスはほとんど応答しなくなります。

コンソールに次の通知が表示されます。

 void SendDelegateMessage(NSInvocation *): delegate (webView:resource:didFinishLoadingFromDataSource:) failed to return after waiting 10 seconds. main run loop mode: kCFRunLoopDefaultMode

実際にはストリーミングではなく、完全なファイルをデバイスにロードするだけであると述べました。この問題を解決する方法はありますか? コルドバ 2.5.0 の使用

4

1 に答える 1

1

何が起こるかというと、コードバはまずファイルをダウンロードしてから実行します。私がしたことは、(CDVSound.m) のメソッド prepareToPlay を変更し、NSURLConnection を使用してファイルをダウンロードし、CFRunLoopRun () を実行することでした。これにより、loding アイコンを表示できるようになりました。ユーザーにとって、問題は解決しませんでしたが、私は私のために働きました。

NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:request delegate:self];

if (theConnection) {
  receivedData = [NSMutableData data];
  CFRunLoopRun();
} else {
 // Inform the user that the connection failed.
 }



- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

  // This returns control to wherever you called
  // CFRunLoopRun() from, so you can still clean up
  // or do other interesting things.
    NSLog(@"Termina de cargar...");
    CFRunLoopStop(CFRunLoopGetCurrent());

 }

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    NSLog(@"Error: %@", error);
    CFRunLoopStop(CFRunLoopGetCurrent());
  }
于 2013-04-08T21:15:57.563 に答える