Мне удалось заставить его работать (iOS 11 +):
Сначала вам нужно иметь работающее расширение File Provider для вашего приложения.Что у меня уже было.
Затем добавили классы File Provider и File Provider Item моего расширения в мое основное приложение.Единственное, что не получилось из-за расширения, это попытка получить доступ к файлу провайдера documentStorageURL
.Я исправил это, реализовав метод получения внутри моего пользовательского класса:
- (NSURL *)documentStorageURL
{
return NSFileProviderManager.defaultManager.documentStorageURL;
}
Затем я мог бы инициализировать его и использовать из моего основного приложения:
// I created a singleton for my custom FileProvider class
NSURL* url = [FileProvider.sharedFileProvider URLForItemWithPersistentIdentifier:item.itemIdentifier];
// Calling providePlaceholderAtURL is key
[FileProvider.sharedFileProvider providePlaceholderAtURL:url completionHandler:^(NSError * _Nullable error)
{
if (error)
{
// ...
}
// This will download the requested file from my server
[FileProvider.sharedFileProvider startProvidingItemAtURL:url completionHandler:^(NSError * _Nullable error)
{
[APP_DELEGATE hideHUD];
if (error)
{
// ...
}
// Now I can use the url to start a UIDocumentInteractionController
UIDocumentInteractionController * controller = [UIDocumentInteractionController interactionControllerWithURL:url];
// Call presentOpenInMenuFromRect ...
}];
}];
Это делает Word (и другие Officeи приложения) вместо «Копировать в Word» отображается «Открыть в Word», что позволяет редактировать на месте непосредственно из моего приложения.
Использование классов моего расширения и вызов providePlaceholderAtURL
(что создает скрытый (* 1015)* файлы) волшебным образом заставляет Word поверить, что файл поступает из приложения Файлы.