【问题标题】:iOS UIWebView loadRequestiOS UIWebView loadRequest
【发布时间】:2014-04-16 23:07:07
【问题描述】:

我正在使用 UIWebView 播放 .mp3 文件。使用 Safari 是因为它为我提供了无需额外代码的音频控件,而且我看不到如何使用 AVPlayer 来实现这一点。它很简单,并且运行良好,但有一个例外。 .mp3 是根据地区播放的。它将正确播放第一个区域的音频文件。但是每个后续区域首先播放该区域的音频,然后立即播放第一个音频。因此,第一个区域播放 audio_region_1。第二个区域触发 audio_region_2,然后触发 audio_region_1。第 N 个区域触发 audio_region_n,然后再次触发 audio_region_1。它总是播放两个文件,第二个文件总是在应用程序中播放。一个新的 Safari 视图启动、播放、关闭,然后第二个 Safari 视图打开、播放和关闭。关于为什么或如何进行故障排除的任何想法?

NSURL *currentRegion = [[NSBundle mainBundle]URLForResource: regionIdentifier withExtension:@"mp3"];
NSURLRequest *currentRegionForSafari = [NSURLRequest requestWithURL: currentRegion];
[_viewWeb loadRequest: currentRegionForSafari];
NSLog(@"        ** ** ** Narration shud have finished:%@.mp3", regionIdentifier);
  1. 我是否应该使用类似 webViewDidFinishLoad 的东西来显式调用 stopLoading 或类似的东西?
  2. 日志显示我的 NSLog 消息仅针对当前区域,regionIdentifier 的预期值。
  3. 日志显示了两个与上述行为匹配的“设置电影路径:”实例。

提前致谢,请原谅这个问题的简单性质。这是我的第一个 IOS 应用。

【问题讨论】:

  • 如果我理解正确,您需要在播放第一个文件时运行第二个文件吗?对吗?
  • 没有。我想播放一个音频文件。它似乎以某种方式缓存了第一次播放。它首先播放正确的文件,但总是紧随其后的是它在会话期间播放的第一个文件。我可以强制它播放任何区域,它会,但总是会立即启动一个新的 UIWebView 并再次播放第一个文件。

标签: ios audio uiwebview


【解决方案1】:

请确保您每次需要播放另一种声音时都有不同的区域。

我也不确定它是否会对你有所帮助,但请尝试以下代码:

[[NSURLCache sharedURLCache] removeAllCachedResponses];
NSURL *currentRegion = [[NSBundle mainBundle]URLForResource: regionIdentifier withExtension:@"mp3"];
NSURLRequest *currentRegionForSafari = [NSURLRequest requestWithURL: currentRegion];
[currentRegionForSafari setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[_viewWeb loadRequest: currentRegionForSafari];

【讨论】:

  • MA - 我添加了你的 [[NSURLCache sharedURLCache] removeAllCachedResponses];寻找类似的缓存相关并添加:[[NSURLCache sharedURLCache] setDiskCapacity:0]; [[NSURLCache sharedURLCache] setMemoryCapacity:0]; - 没有运气,同样的行为。对于 [currentRegionForSafari setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];由于“NSURLRequest 没有可见的@interface 声明所选的 setCachePolicy”,我无法添加。
【解决方案2】:

根本问题是 UIWebView 正在缓存以前发送给它的 .mp3,并在当前加载请求完成后播放它。有趣的是,它正在缓存发送的第一个 .mp3,而不是您所期望的最后一个。无论如何,我评估了在另一个问题上找到的关于 UIWebView 的一般“清理内容”的两个建议。

这对我有用,添加到我的加载请求方法中。

 [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];

这是另一个问题的网址,如果它对其他人有帮助:

How to clean the content of UIWebView without loading an empty page?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多