Невозможность общего доступа к файлу через расширение iOS Share

Я получил следующий журнал от клиента, который утверждает, что делится фотографиями из приложения для фотографий через Share Extension. Клиент полагает, что интернет-соединение с роутером плохое. Поведение, описанное клиентом, выглядит следующим образом:

  1. Загрузить файл через расширение общего доступа через плохое соединение
  2. Оставьте устройство в спящем режиме, в нашем случае соединение должно быть разорвано, а файл не загружен на наши серверы.
  3. Попытайтесь повторно загрузить тот же файл.

Ожидаемый результат: файл должен загружаться нормально.

Фактический результат: Share Extension никогда не загружается, это означает, что пользователь может бесконечно щелкать значок приложения без успеха при отображении представления.

Кроме того, нам никогда не удавалось воспроизвести такую ​​проблему в доме. Однако клиент может делать это каждый раз, находясь в аэропорту.

Я заглянул в журналы его устройства, и я вижу следующее, не имея ни малейшего представления о том, что происходит. Начиная с исключений вне границ, которые я не могу объяснить из-за того, что представление никогда не загружалось.

Есть идеи или кто-нибудь еще сталкивался с такой же проблемой?

13 апреля 15:11:07 audi pkd[153]: назначение плагина (2.1.2) для песочницы плагина

13 апреля 15:11:07 audi pkd[153]: включение pid=386 для плагина (2.1.2) D89CEF37-B025-4C6F-A8B6-FBB6B4D94A84/private/var/container /Bundle/Application/AF69E215-04AE-4929-A8C8-51BE8FADF397/.app/Plugins/.appex

13 апреля 15:11:07 audi kernel[0]: xpcproxy[451] Контейнер: /private/var/mobile/ Контейнеры / Данные /PluginKitPlugin/669C0F52-1C21-441D-9906-E2EFBD8A7D00(песочница)

13 апреля 15:11:08 audi kernel[0]: LwVM::_generateMappedExtentsList - не удалось сопоставить диапазон unmap с разделом

13 апреля 15:11:08 audi backboardd[60]: невозможно загрузить порт начальной загрузки с именем.gsEvents: неизвестный код ошибки (1102) 13 апреля 15:11:08 audi [451]: * Завершение работы приложения из-за невыполненного исключения "NSRangeException", причина: '* - [__ NSArrayI objectAtIndex]: индекс 1 за пределами [0 .. 0] Первый стек бросить вызов: (0x18400ae38 0x18366ff80 0x183eeb158 0x1000e4a40 0x1000e4738 0x183a554bc 0x183a5547c 0x183a5ab84 0x183fc0dd8 0x183fbec40 0x183ee8d10 0x1857d0088 0x1891bdf70 0x183cacd74 0x183caea2c 0x184acbd30 0x18b2e2c48 0x18b2e28dc 0x18b2e2c6c 0x1848de058 0x183a868b8)

13 апреля 15:11:08 audi MobileSlideShow[386]: плагин прерван

13 апреля 15:11:08 audi MobileSlideShow[386]: плагин отключен

13 апреля 15:11:08 audi Diagnostic [84]: информация о процессе оценки ошибок - pid: 451, puniqueid: 451

13 апреля, 15:11: audi mediaserverd[28]: параметр '' (pid = 451) DiscoveryMode = DiscoveryMode_None, currentDiscoveryMode = DiscoveryMode_None

13 апреля 15:11:08 audi MobileSlideShow[386]: 2016-04-13 15:11:08.629|MobileSlideShow|0x14ce07cd0: HOST: не удалось загрузить контроллер удаленного просмотра с ошибкой: Ошибка Domain=NSCocoaErrorDomain Code=4099 "Соединение с служба с именем.viewservice была прервана, но сообщение было отправлено через дополнительный прокси, и поэтому этот прокси стал недействительным." UserInfo= {NSDebugDescription= Соединение со службой с именем.viewservice было прервано, но сообщение было отправлено через дополнительный прокси, и поэтому этот прокси стал недействительным.}

13 апреля 15:11:08 audi MobileSlideShow[386]: 2016-04-13 15:11:08.633|MobileSlideShow|0x14ce07cd0: лист не отображается, вызывая преждевременное завершение

13 апреля 15:11:08 audi com.apple.xpc.launchd[1] ([451]): служба закрыта из-за сигнала: прерывание прерывания: 6

13 апреля 15:11:08 audi ReportCrash[452]: Составление отчета для трупа [451]

13 апреля 15:11:08 audi ReportCrash[452]: отчет типа "109(109_)" не сохранен, так как достигнуто ограничение в 25 журналов.

13 апреля 15:11:08 audi ReportCrash[452]: Примечание. Этот отчет сокращен для включения в системный журнал, поскольку его невозможно сохранить на диск.

Символизация может быть возможна путем ручной очистки и включения в раздел "Бинарное изображение" полного отчета с этого же устройства - удачи!

13 апреля 15:11:08 audi ReportCrash[452]: процесс: [451] Путь: /private/var/containers/Bundle/Application/AF69E215-04AE-4929-A8C8-51BE8FADF397/.app/PlugIns/.appex/

0 ответов

Во многих случаях файл большой, и соединение освобождается перед завершением, или что-то в той же лопатке происходит, если это что-то в этой лопатке, возможный способ обойтись, сначала запишите свой файл в папку документов приложения, затем загрузите через URL-адрес из папки с документами в приложении, например: (пример с изображением)

let documentsDirectoryPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
let path = documentsDirectoryPath.appending("/outImage.jpg")
let outURL = URL(fileURLWithPath: path)

try? FileManager.default.removeItem(at: outURL)

        if let data2c = self.newImage.jpegData(compressionQuality:1.0)
        {
            do
            {
                try data2c.write(to: outURL)

                DispatchQueue.main.async
                {
                    var filesToShare = [Any]()
                    filesToShare.append(outURL)

                    let activityVC = UIActivityViewController(activityItems: filesToShare, applicationActivities: nil)
                    activityVC.excludedActivityTypes = [.print,.assignToContact,.copyToPasteboard,.addToReadingList,.markupAsPDF,.postToTencentWeibo,.postToTencentWeibo]
                    activityVC.popoverPresentationController?.sourceView = self.view
                    activityVC.preferredContentSize = CGSize(width: self.view.frame.size.width, height: self.view.frame.size.height-60)
                    activityVC.modalPresentationCapturesStatusBarAppearance = true

                    self.present(activityVC, animated: true, completion: nil)
                }

            } catch {
  print("Couldn't write file")
            }
        }
Другие вопросы по тегам