2014-02-24 57 views
1

在我的应用程序中,我有UIWebView,我想检测MP3文件是否加载(下载)。 所以我用这个UIWebView委托方法:UIWebView检测mp3文件加载

- (BOOL)webView:(UIWebView*)webview shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { 

    NSURL *url = [request URL]; 


    if ([[[url pathExtension] lowercaseString] isEqualToString:@"mp3"]) { 
     [self userDidClickUrl:url]; 
     return NO; 
    } 

    return YES; 
} 

的问题是,有时网址是没有MP3串内部,UIWebView的打开本地播放。有可能检测到它?我想要检测何时开始加载mp3文件。

+0

您是否尝试过allowsInlineMediaPlayback属性设置为YES? – Injectios

+0

它应该做什么? – MTA

+0

Swift 4&ObjC [answer here](https://stackoverflow.com/a/48072230/7576100) – Jack

回答

0

尝试检测MIMEType根据您的请求 - 检查MIMEType从响应是这些种类之一:
audio/mp3 ||音频/ mpeg3 ||音频/ x-mp3 ||音频/ X-MPEG3

更新:检查这已经回答了:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { 

NSURL *url = request.URL; 
NSURLRequest *req = [NSURLRequest requestWithURL:url]; 
NSURLConnection *conn = [NSURLConnection connectionWithRequest:req delegate:self]; 
[conn start]; 
return YES; } 

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ 

NSString *mime = [response MIMEType]; 
NSLog(@"%@",mime); } 

全波纹管链接:

UIWebView Delegate get MIME Type

+0

如何从UIWebView获取响应对象? – sage444

+0

@ user3344236在这个http://musicplanet.in/bollywood-dl/24181-de-di-permission-ritu-pathak-mp3-song-download.html网站,当我点击立即下载。播放器是开放的,歌曲播放,但我不能得到MIMEType,如音频/ MP3 ||音频/ mpeg3 ||音频/ x-mp3 || audio/x-mpeg3它给我MIMEType text/html所以我怎么能得到一个MIMEType –

+0

如果服务器没有返回MIME类型,你可以尝试搜索它的响应的第一个字节,你可以在这里检查我的答案http:// stackoverflow .com/questions/31916714/how-to-differentiate-if-nsdata-is-xls-ppt-or-doc-on-objective-c/34083139#34083139 –