Открывайте документ Microsoft Office непосредственно из моего приложения для iOS для редактирования на месте - PullRequest
0 голосов
/ 07 сентября 2018

Я хочу иметь возможность редактировать на месте Офисные файлы, размещенные на моем собственном сервере. На месте я имею в виду открыть файл в Office, отредактировать его и получить изменения, отправленные обратно на мое приложение / сервер напрямую.

Я частично достиг этого, внедрив Расширение провайдера файлов , чтобы открывать мои файлы в приложении Файлы (iOS 11+), где оно автоматически запускает приложение Office и возвращает изменения для загрузки в мой сервер. Я также могу просматривать свои файлы из меню Office «Открыть», и редактирование происходит на месте.

Я бы запустил этот поток прямо из моего приложения. Есть идеи?

Я и многие пытались следовать руководству Microsoft Интегрировать с Office , но оно работает только для файлов, размещенных в FileShare или OneDrive. Я хочу редактировать файлы, размещенные на моих собственных серверах.

1 Ответ

0 голосов
/ 18 сентября 2018

Мне удалось заставить его работать (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 поверить, что файл поступает из приложения Файлы.

...