2015-07-22 1 views
4

Я использую https://github.com/apache/cordova-plugin-file на устройстве iOS, и я пытаюсь записать файлы. Я могу писать файлы нормально, но в соответствии с макетом файловой системы iOS все эти места, где я пишу, являются частными.Как вы можете экспортировать файл из iOS при использовании плагина-файла cordova?

Я предполагаю, что это связано с моделью безопасности Sandbox от Apple, так что каждое приложение может видеть только файлы в своем собственном пакете. Это отличается от Android, где cordova.file.externalRootDirectory не является частным.

Мой вопрос: Как вы экспортируете этот файл с устройства iOS?

Файл, который я пишу, содержит длинный список местоположений GPS, захваченных приложением Кордовы. Я бегу. Я могу увидеть файл в XCode под устройствами и экспортировать весь контейнер, чтобы просмотреть файл. Но должен быть лучший способ передать файл. Можно ли перенести созданный с Кордовы файл с устройства iOS на компьютер - возможно, через iTunes или iCloud?

Я также пробовал использовать cordova.file.syncedDataDirectory, и я могу писать файлы в это место просто отлично. Но файл не отображается в моей учетной записи iCloud.

ответ

5

Вы должны использовать ITunes общий доступ к файлам

файлообменных поддержки

файлообменных поддержка позволяет приложениям делать файлы пользовательских данных доступны в Itunes 9.1 и более поздних версий. Приложение, объявляющее о своей поддержке файла , делает доступным содержимое своего каталога/Documents для пользователя . Затем пользователь может перемещать файлы из этого каталога и из него в виде , необходимых из iTunes. Эта функция не позволяет вашему приложению делиться файлами с другими приложениями на одном устройстве; для этого поведения требуется картон или объект контроллера взаимодействия с документом.

Чтобы включить общий доступ к файлам для вашего приложения, выполните следующие действия:

Добавить ключ UIFileSharingEnabled в Info.plist файл вашего приложения, и установите значение ключа в YES.

Включите любые файлы, которые вы хотите использовать в каталоге документов вашего приложения.

Когда устройство подключено к компьютеру пользователя, iTunes отображает раздел «Общий доступ к файлам» на вкладке «Приложения» выбранного устройства .

Пользователь может добавить файлы в этот каталог или переместить файлы на рабочий стол.

Приложения, поддерживающие общий доступ к файлам, должны иметь возможность распознавать, когда файлы были добавлены в каталог Документов и отвечают соответствующим образом. Например, ваше приложение может создавать содержимое любых новых файлов , доступных из его интерфейса. Вы никогда не должны предоставлять пользователю список файлов в этом каталоге и попросить их решить, что делать с этими файлами.

Итак, добавьте UIFileSharingEnabled к вашей информации.PLIST и установить его на YES

https://developer.apple.com/library/ios/documentation/Miscellaneous/Conceptual/iPhoneOSTechOverview/CoreServicesLayer/CoreServicesLayer.html#//apple_ref/doc/uid/TP40007898-CH10-SW30

+1

плагин 'Cordova-плагин-itunesfilesharing' добавляет этот ключ с правильным' значения YES' автоматически –

4

@ ответ jcesarmobile помог мне отследить, что мне нужно, чтобы включить общий доступ к файлам в прошивке. После подтверждения того, что я могу включить совместное использование файлов, изменив файл info.plist в XCode, я обнаружил, что вы можете напрямую установить UIFileSharingEnabled в файле config.xml, но это немного сложнее, потому что это не стандартное предпочтение.

<gap:config-file platform="ios" parent="UIFileSharingEnabled" mode="replace"> 
    <true/> 
</gap:config-file> 

После помещения этого файла в файл config.xml, он сработал.

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

http://docs.build.phonegap.com/en_US/configuring_config_file_element.md.html#Config%20File%20Elements

+0

да, который будет работать для пользователей PhoneGap сборки. Пользователям, выполняющим локальную разработку, придется вручную отредактировать .plist или создать плагин, который просто пишет, что на info.plist – jcesarmobile