【发布时间】:2015-01-28 03:15:06
【问题描述】:
感谢 rmaddy 通过回答 THIS 问题让我找到了正确的方向,这让我使用这个公认的答案陷入了其他一些问题。对于我在该线程上的原始问题,它确实解决了我想要做的事情。但现在我在其他一些网站上使用时遇到了问题。
我有一个 web 视图,其中有几个指向不同站点的链接,例如 Media Fire、Copy、Box 等。甚至是直接下载链接。例如,媒体触发链接甚至无需访问该站点即可开始下载,就像它只是下载文本一样。直接下载根本不会触发我的下载器。
使用公认的答案,区分这些的最干净的方法是什么?
这是适用于大多数网站的代码。
- (BOOL)webView:(UIWebView *)awebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if (navigationType == UIWebViewNavigationTypeLinkClicked){
//External file links
NSURL* externalURL = [request URL];
NSString *urlString = [externalURL absoluteString];
NSSet *supportedFileExtensions = [NSSet setWithObjects:@"mpeg", @"mpg", @"m1s", @"mpa", @"mp2", @"m2a", @"mp2v", @"mv2", @"m2s", @"avi", @"mov", @"qt", @"asf", @"asx", @"wmv", @"wma", @"wmx", @"rm", @"ra", @"ram", @"rmvb", @"mp4", @"3gp", @"3gpp", @"ogm", @"mkv", @"flv", @"mv4", @"srt", @"swf", @"vob", @"aif", @"iff", @"m3u", @"m4a", @"mid", @"mp3", @"mpa", @"wav", @"aac", @"7z", @"cbr", @"deb", @"gz", @"pkg", @"rar", @"rpm", @"sitx", @"tar.gz", @"zip", @"zipx", @"ipsw", @"bin", @"cue", @"dmg", @"iso", @"mdf", @"toast", @"vcd", @"torrent", @"nes", @"rom", @"doc", @"docs", @"msg", @"odt", @"rtf", @"txt", @"wpd", @"wps", nil];
for (NSString *extension in supportedFileExtensions) {
if ([urlString rangeOfString:extension].location != NSNotFound) {
// Found extension somewhere in the URL - process it as needed
break; // stop looking for more
}
}
}
示例链接:https://www.dropbox.com/s/57jcgnbnfhcpw9y/Test.zip?dl=0 http://www.mediafire.com/download/wt77jvm3szwjehm/Test.zip https://copy.com/QFvw3fw4FF2k4foX https://app.box.com/s/fixnvrym13eylcr73njv
【问题讨论】:
-
你能举个例子吗?还有什么时候调用上面的代码?
-
添加了代码和网址示例。