Открывайте документ Microsoft Office непосредственно из моего приложения для iOS для редактирования на месте
Я хочу иметь возможность редактировать файлы Office, размещенные на моем собственном сервере. На месте я имею в виду открыть файл в Office, отредактировать его и получить изменения, отправленные обратно на мое приложение / сервер напрямую.
Я частично добился этого, внедрив Расширение провайдера файлов для отображения моих файлов в приложении "Файлы" (iOS 11+), где оно автоматически запускает приложение Office и возвращает изменения для загрузки на мой сервер. Я также могу просматривать свои файлы из меню Office "Открыть", и редактирование происходит на месте.
Я бы запустил этот поток прямо из моего приложения. Есть идеи?
Я и многие пытались следовать руководству Microsoft по интеграции с Office, но оно работает только для файлов, размещенных в FileShare или OneDrive. Я хочу редактировать файлы, размещенные на моих собственных серверах.
1 ответ
Мне удалось заставить его работать (iOS 11+):
Для начала вам нужно иметь работающее расширение File Provider для вашего приложения. Который у меня уже был.
Затем добавил в мое главное приложение классы File Provider и File Provider моего расширения. Единственное, что не получилось из-за расширения, это попытка получить доступ к файлообменнику. 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
(который создает скрытый (.myfile.docx.icloud
файлы) волшебным образом заставляет Word поверить, что файл поступает из приложения Файлы.