WKWebView Download [macOS | Objective-C]

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • WKWebView Download [macOS | Objective-C]

    Hallo zusammen,

    bei der Umstellung einer App (macOS | Objective C) von WebView auf WKWebView gibt es ein Problem.
    Ich bekomme die Download-Funktion für das WKWebView einfach nicht zustande.

    Kann mir jemand einen Tipp geben, wie ich unter WKWebView einfach erkennen kann, ob eine Datei heruntergeladen werden soll, oder nicht?



    Für die Interessierten:
    Bisher habe ich Downloads mit folgender Methode verarbeitet

    Quellcode

    1. - (void)webView:(WebView *)sender decidePolicyForMIMEType:(NSString *)type request:(NSURLRequest *)request frame:(WebFrame *)frame
    2. decisionListener:(id < WebPolicyDecisionListener >)listener
    3. {
    4. if ([type isNotEqualTo:@"text/html"])
    5. {
    6. [listener use];
    7. NSURL *url = [request URL];
    8. NSArray *parts = [[[url absoluteString] stringByRemovingPercentEncoding] componentsSeparatedByString:@"/"];
    9. NSString *filename = parts[[parts count]-1];
    10. if([filename rangeOfString:@"?"].location != NSNotFound)
    11. {
    12. NSArray *names = [filename componentsSeparatedByString:@"?"];
    13. filename = names[0];
    14. }
    15. NSString *homePath = [self homeDirectory];
    16. NSString *filePath = [NSString stringWithFormat:@"%@/Downloads/%@", homePath, filename];
    17. NSLog(@"Pending Download to:%@",filePath);
    18. DownloadData *downloadData = [[DownloadData alloc] init];
    19. downloadData.fileName = filename;
    20. downloadData.fileSize = 0;
    21. [listDownloadDatas addObject:downloadData];
    22. upDownCellViewController * cellViewController = [[upDownCellViewController alloc] init];
    23. [cellViewController initWithData:downloadData];
    24. [cellViewControllers addObject:cellViewController];
    25. down = [[NSURLDownload alloc] initWithRequest:request delegate:cellViewController];
    26. [down setDestination:filePath allowOverwrite:NO];
    27. [self.downloadTableView reloadData];
    28. [WebDocument setArrayForKey:listDownloadDatas forKey:@"DownloadData"];
    29. NSLog(@"Download did start");
    30. return;
    31. }
    32. [listener use];
    33. NSLog(@"%@", type);
    34. }
    Alles anzeigen
  • Wahrscheinlich nicht; unter iOS würde es zumindest keinen Sinn ergeben, und vermutlich unter macOS auch nicht. Es gibt aber eine analoge Delegate-Methode dafür.

    EDIT: Besser ist es wahrscheinlich, die Weiche schon für die Anfrage zu implementieren.
    „Meine Komplikation hatte eine Komplikation.“

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von macmoonshine ()