1

我正在使用 IOS 中引用的 Cordova 媒体对象:

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

在 android 设备上,它可以完美运行,几秒钟内即可加载。但在 IOS 设备上,有时需要一分钟以上。旁边我的设备变得几乎没有响应。

在控制台中,我收到此通知:

 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

发生的是cordova,在运行之前先下载文件,我所做的是更改(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 回答