Как зарегистрировать тип документа, который должен поддерживать сафари iOS?

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

  • .vlin поддерживается в родном почтовом клиенте iphone
  • при нажатии .vlin файл открывается в моем Vlin приложении.

Я использую кордову и добавил настройки конфигурации в config.xml.

Но почему-то он не работает для браузера сафари iOS. Если я попытаюсь открыть файл в iOS Safari, он откроется в самом браузере как текстовый файл. Я хочу, чтобы он открывался в моем приложении Vlin для iOS.

Мой код info.plist и config.xml:

<platform name="ios">        
<preference name="IosLaunchMode" value="singleTask" />
<config-file platform="ios" target="*-Info.plist" parent="UIFileSharingEnabled">
    <true />
</config-file> 
<config-file platform="ios" target="*-Info.plist" parent="CFBundleDocumentTypes">
    <array>
        <dict>
            <key>CFBundleTypeName</key>
            <string>com.example.vlin.vlin</string>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>LSHandlerRank</key>
            <string>Owner</string>
            <key>LSItemContentTypes</key>
            <array>
                <string>com.example.vlin.vlin</string>
            </array>
        </dict>
    </array>
</config-file>
<config-file platform="ios" target="*-Info.plist" parent="UTExportedTypeDeclarations">
    <array>
        <dict>
            <key>UTTypeConformsTo</key>
            <array>
                <string>public.data</string>
            </array>
            <key>UTTypeDescription</key>
            <string>Vlin document</string>
            <key>UTTypeIdentifier</key>
            <string>com.example.vlin.vlin</string>
            <key>UTTypeTagSpecification</key>
            <dict>
                <key>public.filename-extension</key>
                <string>vlin</string>
            </dict>
        </dict>
    </array>  
</config-file>

Any help is much appreciated, thanks in advance.

  • инфо.plist

        <key>UIFileSharingEnabled</key>
        <true/>
        <key>CFBundleDocumentTypes</key>
        <array>
          <dict>
            <key>CFBundleTypeName</key>
            <string>com.example.vlin.vlin</string>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>LSHandlerRank</key>
            <string>Owner</string>
            <key>LSItemContentTypes</key>
            <array>
              <string>com.example.vlin.vlin</string>
            </array>
          </dict>
        </array>
        <key>UTExportedTypeDeclarations</key>
        <array>
          <dict>
            <key>UTTypeConformsTo</key>
            <array>
              <string>public.data</string>
            </array>
            <key>UTTypeDescription</key>
            <string>Vlin document</string>
            <key>UTTypeIdentifier</key>
            <string>com.example.vlin.vlin</string>
            <key>UTTypeTagSpecification</key>
            <dict>
              <key>public.filename-extension</key>
              <string>vlin</string>
            </dict>
          </dict>
        </array>
      </dict>
    

пример формата файла: invite.vlin

{
 "invite”: {
  "name": “Some College",
  "identifier": “xxxxxxxxxxxxxxxxx”
 },
 “value”: “xxxxxxxxxxxxxx”
}

person pradeep1991singh    schedule 04.10.2016    source источник
comment
Можете ли вы предоставить образец файла .vlin?   -  person jcesarmobile    schedule 11.10.2016
comment
@jcesarmobile Только что добавил пример файла формата invite.vlin.   -  person pradeep1991singh    schedule 11.10.2016
comment
Я имел в виду настоящий файл .vlin, загруженный куда-то, просто чтобы проверить, как его видят браузеры.   -  person jcesarmobile    schedule 14.10.2016


Ответы (1)


РЕДАКТИРОВАТЬ2:

Ваша реальная проблема заключается в том, что Safari видит ваш файл .vlin как текстовый файл и не дает вам возможности открыть его в другом приложении, возможно, если вы правильно настроите сервер, чтобы он обслуживал его как com.example.vlin.vlin или, возможно, как application/json, он должен показать вам открыть с диалогом.

В качестве примера вы можете протестировать этот файл .vlin на моем сервере.

http://jcesarmobile.byethost33.com/test4.vlin

Это не настоящий файл .vlin, это файл .vlin, заархивированный и переименованный в .vlin, и сафари показывает открытие с помощью диалога.

РЕДАКТИРОВАТЬ:

Не знаю, почему люди голосуют против, тег файла конфигурации из config.xml не реализован, см. проблему для его реализации.

Оригинальный ответ:

Вы пока не можете использовать тег config-file внутри config.xml (работа над ним еще не завершена).

Вы можете использовать его в plugin.xml, поэтому вам нужно создать «тупой» плагин, в котором есть только plugin.xml с этими тегами.

Вы можете взглянуть на этот плагин, который просто использует plugin.xml для записи в Info.plist https://github.com/leecrossley/cordova-plugin-transport-security

person jcesarmobile    schedule 07.10.2016
comment
спасибо за ответ, но это не решает мою проблему :) - person pradeep1991singh; 07.10.2016
comment
Вы можете поделиться плагином, который вы создали для этого? добавляются ли эти значения в info.plist? - person jcesarmobile; 07.10.2016
comment
Нет, я не создавал плагин, так как мы добавляем конфиг только в info.plist. все вышеуказанные конфиги добавляются в info.plist с помощью config.xml и работают с файлами, которые находятся на устройстве. Если я отправляю файл .vlin на устройство iphone, он работает, но не работает, если я пытаюсь загрузить файл .vlin из браузера ios safari на самом деле из любого браузера. - person pradeep1991singh; 07.10.2016
comment
только что добавил записи в info.plist - person pradeep1991singh; 07.10.2016
comment
так вы говорите, что это работает из config.xml? какие версии Cordova CLI и Cordova-ios вы используете? - person jcesarmobile; 07.10.2016
comment
кордова версия 6.3.1 - person pradeep1991singh; 07.10.2016
comment
а кордова-ios? это действительно странно, насколько я знаю, мы еще не закончили реализацию этой функции, и она не работает для меня, если я добавлю это в свой config.xml - person jcesarmobile; 07.10.2016
comment
Кстати, если вы загрузите файл в сафари, он не откроется ни в одном приложении, но он должен отображать диалоговое окно сверху с кнопкой «Открыть с помощью», где должно отображаться ваше приложение. - person jcesarmobile; 07.10.2016
comment
Да, вы правы, он показывает открытие для других расширений, таких как .pdf/.doc, но не для моего, которое является .vlin :( - person pradeep1991singh; 07.10.2016
comment
Давайте продолжим обсуждение в чате. - person pradeep1991singh; 07.10.2016