Après de nombreux essais, la façon la plus efficace d'exporter un fichier semble être :
if([[UIApplication sharedApplication] canOpenURL:fileurl]) {
[[UIApplication sharedApplication] openURL:fileurl
options:@{} completionHandler:nil];
} else {
documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:fileurl];
assert(documentInteractionController);
documentInteractionController.delegate = self;
[documentInteractionController presentPreviewAnimated:YES];
}
La première partie avec openURL: est pour Mac, la deuxième pour iPhone et iPad.
On ne peut pas utiliser de compilation conditionnelle parce qu'une application iPadOS est tout de même TARGET_OS_MAC, le TARGET_OS_MACCATALYST n'est plus utilisé, le TARGET_OS_IOS est toujours là. De même, UIDevice.currentDevice.systemName renvoie "iPadOS" sur Mac.
Le code ci-dessus semble fonctionner (iPhone, iPad, Mac), on verra à l'usage.
Commentaires