Hallo zusammen!
Ich arbeite zur Zeit an einer App für macOS, die E-Mails aus Apple Mail via Drag and Drop entgegen nehmen können muss.
Apple Mail legt dafür ja glücklicherweise sogar die .eml Repräsentationen der gedragten E-Mails via File Promise in das dragging pasteboard, ganz ohne private API oder ähnliches.
Bei mir kommt es beim resolven des File Promis jetzt aber zu einem "interessanten" Problem: Der Code Block zum resolven des File Promise bleibt, nachdem die E-Mails in das richtige View gedragt worden sind, für relativ genau 60 Sekunden hängen und gibt dann folgenden Fehler zurück:
Gleichzeitig schreibt Apple Mail aber die .eml Datei(en) an die location, die ich meinem FilePromiseReceiver mitgebe.
Und wenn ich den gleichen Code nehme, und eine E-Mail aus, beispielsweise, Microsoft Outlook drauf ziehe, funktioniert der Code und das File Promise funktioniert ohne Probleme und gibt auch die richtige URL zurück. Doppel .
Mein Code für das File Promise hier, und ein komplettes Xcode Project für eine macOS app, die das Problem demonstriert gibt es hier.
Alles anzeigen
Hat hier jemand eine Idee, woran das liegen könnte? Das kann doch nicht wirklich ein Problem mit Apple Mail selbst sein... hoffe ich. Ich bin jedenfalls kurz davor, ein code-level support Ticket hierauf zu verbrennen, weil's mich langsam in den Wahnsinn treibt...
Ich arbeite zur Zeit an einer App für macOS, die E-Mails aus Apple Mail via Drag and Drop entgegen nehmen können muss.
Apple Mail legt dafür ja glücklicherweise sogar die .eml Repräsentationen der gedragten E-Mails via File Promise in das dragging pasteboard, ganz ohne private API oder ähnliches.
Bei mir kommt es beim resolven des File Promis jetzt aber zu einem "interessanten" Problem: Der Code Block zum resolven des File Promise bleibt, nachdem die E-Mails in das richtige View gedragt worden sind, für relativ genau 60 Sekunden hängen und gibt dann folgenden Fehler zurück:
Gleichzeitig schreibt Apple Mail aber die .eml Datei(en) an die location, die ich meinem FilePromiseReceiver mitgebe.
Und wenn ich den gleichen Code nehme, und eine E-Mail aus, beispielsweise, Microsoft Outlook drauf ziehe, funktioniert der Code und das File Promise funktioniert ohne Probleme und gibt auch die richtige URL zurück. Doppel .
Mein Code für das File Promise hier, und ein komplettes Xcode Project für eine macOS app, die das Problem demonstriert gibt es hier.
Quellcode: DropView.swift
- private lazy var destinationURL: URL = {
- let destinationURL = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(
- "Drops")
- try? FileManager.default.createDirectory(
- at: destinationURL, withIntermediateDirectories: true, attributes: nil)
- return destinationURL
- }()
- override func performDragOperation(_ sender: NSDraggingInfo) -> Bool {
- let pasteboard: NSPasteboard = sender.draggingPasteboard
- guard
- let filePromises = pasteboard.readObjects(
- forClasses: [NSFilePromiseReceiver.self], options: nil) as? [NSFilePromiseReceiver]
- else {
- return false
- }
- print("Files dropped")
- let operationQueue = OperationQueue()
- print("Destination URL: \(destinationURL)")
- filePromises.forEach({ filePromiseReceiver in
- filePromiseReceiver.receivePromisedFiles(
- atDestination: destinationURL,
- options: [:],
- operationQueue: operationQueue,
- reader: { (_, error) in
- print("we're le done")
- if let error = error {
- dump(error)
- } else {
- print("Received file at url ")
- }
- print(filePromiseReceiver.fileNames, filePromiseReceiver.fileTypes)
- })
- })
- return true
- }
Hat hier jemand eine Idee, woran das liegen könnte? Das kann doch nicht wirklich ein Problem mit Apple Mail selbst sein... hoffe ich. Ich bin jedenfalls kurz davor, ein code-level support Ticket hierauf zu verbrennen, weil's mich langsam in den Wahnsinn treibt...