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

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

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

Я использую Cordova и добавил настройки конфигурации в 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>

Любая помощь высоко ценится, спасибо заранее.

  • info.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”
}

1 ответ

EDIT2:

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

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

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

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

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

Не уверен, почему люди понижают голос, тег config-file из config.xml не реализован, смотрите вопрос для его реализации.

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

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

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

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

Другие вопросы по тегам