【发布时间】:2012-11-19 22:47:45
【问题描述】:
我正在尝试将本地 mp3 文件的路径发送到 javascript,并从那里创建一个填充了源的音频标签。但是,当我尝试此操作时,会出现“无法播放音频文件”消息。文件本身来自应用程序特定的沙箱,因此路径看起来像这样
/Users/username/Library/Application Support/iPhone Simulator/6.0/Applications/818263D7-4246-4DEC-9186-6AC14F0175A3/Documents/audiofile.mp3
问题是我可以使用相同的方法从我的桌面播放 mp3,而不是存储在应用程序本身的沙盒或本地文件系统中的 mp3。这是我用来获取路径并通过 webview 将其发送到 javascript 的代码。任何帮助将不胜感激。
UIWebView *webContainer = [[UIWebView alloc] initWithFrame: self.view.bounds];
webContainer.backgroundColor = [UIColor grayColor];
webContainer.autoresizingMask = ( UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight );
[webContainer setBackgroundColor:[UIColor clearColor]];
webContainer.delegate = self;
[self.view addSubview:webContainer];
NSString *imagePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *imPath = [NSString stringWithFormat:@"%@/angels.mp3",imagePath];
imPath = [imPath stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
[webContainer stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"setupAudio('%@');", imPath]];
【问题讨论】:
-
setupAudio()在这里工作怎么样?它来自哪里,它的目的是什么?您在评估 JS 时是否查看过生成的字符串,是您所期望的吗? -
setupAudio 函数非常简单,它构建音频标签标记并使用 jquery 将其添加到 dom,如下所示:
function setupAudio($path){ var tx = '<audio class="dioHold" controls="controls"><source class="dio" src="'+$path+'" type="audio/mp3"></audio>'; $('.ac').append(tx); }
标签: objective-c cocoa-touch uiwebview uiwebviewdelegate