alex_lip
alex_lip27 грудня 2017 р. 05:43

QDesktopServices::openUrl не работает под IOS

Открываю локальный файл следующим образом

QDesktopServices::openUrl(QUrl::fromLocalFile(QStandardPaths::
writableLocation(QStandardPaths::GenericDataLocation) + "/temp_esd/file."+file_ext));

После установки на ipad вылезает ошибка - this plugin does not support. В доке по QT написано

Warning: URLs passed to this function on iOS will not load unless their schemes are listed in the LSApplicationQueriesSchemes key of the application's Info.plist file. For more information, see the Apple Developer Documentation for canOpenURL(_:) . For example, the following lines enable URLs with the HTTPS scheme:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>https</string>
</array>

Во первых - непонятно что и где прописать. А во вторых - может другой способ есть?



Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

18
Evgenii Legotckoi
  • 27 грудня 2017 р. 07:23

Я с iOS не работаю, но судя по информации в доках, нужно добавить в pro файл платформозависимую информацию о Info.plist.

ios {
    QMAKE_INFO_PLIST = ios/Info.plist
}
Подробнее посмотрите в доках по платформе iOS на этой странице
Ну и судя по всему информация записывается таким образом в этом листе.
<key>CFBundleIcons</key>
<dict>
    <key>CFBundlePrimaryIcon</key>
    <dict>
        <key>CFBundleIconFiles</key>
        <array>
            <string>AppIcon29x29.png</string>
            <string>AppIcon29x29@2x.png</string>
            <string>AppIcon40x40@2x.png</string>
            <string>AppIcon57x57.png</string>
            <string>AppIcon57x57@2x.png</string>
            <string>AppIcon60x60@2x.png</string>
        </array>
    </dict>
</dict>
<key>CFBundleIcons~ipad</key>
<dict>
    <key>CFBundlePrimaryIcon</key>
    <dict>
        <key>CFBundleIconFiles</key>
        <array>
            <string>AppIcon29x29.png</string>
            <string>AppIcon29x29@2x.png</string>
            <string>AppIcon40x40@2x.png</string>
            <string>AppIcon57x57.png</string>
            <string>AppIcon57x57@2x.png</string>
            <string>AppIcon60x60@2x.png</string>
            <string>AppIcon29x29~ipad.png</string>
            <string>AppIcon29x29@2x~ipad.png</string>
            <string>AppIcon40x40~ipad.png</string>
            <string>AppIcon40x40@2x~ipad.png</string>
            <string>AppIcon50x50~ipad.png</string>
            <string>AppIcon50x50@2x~ipad.png</string>
            <string>AppIcon72x72~ipad.png</string>
            <string>AppIcon72x72@2x~ipad.png</string>
            <string>AppIcon76x76~ipad.png</string>
            <string>AppIcon76x76@2x~ipad.png</string>
        </array>
    </dict>
</dict>
То есть, если я понял правильно, то ваш URL не удастся открыть, если о нём нет информации в данном листе.

    alex_lip
    • 27 грудня 2017 р. 07:53

    В доках говорится что qt сам генерит этот list. Поэтому хотелось бы через qt указывать необходимые параметры, а не перезаписывать каждый раз его заново. И непонятно что для xls прописывать, а что для word или pdf.

      Evgenii Legotckoi
      • 27 грудня 2017 р. 08:06

      А ещё там же написано, что желательно заменить данный файл своим собственным, чтобы избежать постоянной генерации файла утилитой qmake, а соответственно и настроить данный файл потребуется руками и самостоятельно.

      It is advisable to replace the generated Info.plist with your own copy, to prevent it from being overwritten the next time qmake is run. You can define a custom information property list with QMAKE_INFO_PLIST variable in your .pro file.
        alex_lip
        • 27 грудня 2017 р. 08:11
        • (відредаговано)

        так фраза
        You can define a custom information property list with QMAKE_INFO_PLIST variable in your .pro file.
        как раз и говорит, что можно настроить данный файл через QMAKE_INFO_PLIST variable in your .pro file

        Забавно - в одном абзаце две противоречащих друг другу рекомендации

          Evgenii Legotckoi
          • 27 грудня 2017 р. 08:14
          а не перезаписывать каждый раз его заново.
          я это к тому, что его нужно переписать только один раз своим файлом. В документации сказано, что как только файл сгенерен, заменяете его своей копией и работаете. qmake не должен его переписывать при дальнейших запусках.
          Там уже определяете свои собственные параметры.
          Я очень сомневаюсь, что в Qt Creator есть утилита для настройки в стиле мышкотыканья, учитывая, что в документации написано, что можете прописать все кастомные параметры самостоятельно.

            alex_lip
            • 27 грудня 2017 р. 08:14

            вот пример со всякими социальными сетям. А как называется word, excel and pdf - вот вопрос.

            <key>LSApplicationQueriesSchemes</key>
                <array>
                 <string>fb</string>
                 <string>fbapi</string>
                 <string>fbauth2</string>
                 <string>fbshareextension</string>
                 <string>fb-messenger-api</string>
                 <string>twitter</string>
                 <string>viber</string>
                 <string>whatsapp</string>
                 <string>wechat</string>
                 <string>line</string>
                 <string>instagram</string>
                 <string>kakaotalk</string>
                 <string>mqq</string>
                 <string>vk</string>
                 <string>comgooglemaps</string>
                 <string>googlephotos</string>
                 <string>ha</string>
                </array>
              alex_lip
              • 27 грудня 2017 р. 08:58

              вот здесь тема обсуждалась
              http://www.cyberforum.ru/qt/thread1919853.html
              сам все проверю - если что-то получится - отпишусь.


                alex_lip
                • 28 грудня 2017 р. 03:54

                Похоже что директива

                ios {

                QMAKE_INFO_PLIST= ios/Info.plist
                }
                защищает info.plist от автоматической перезаписи. Смотрел через xcode - проект компилится с нужным info.plist.
                Для word и excel http://wopi.readthedocs.io/projects/officewopi/en/latest/scenarios/from_app.html
                https://msdn.microsoft.com/en-us/library/office/dn911482.aspx#sectionSection1
                прописал
                <key>LsApplicationQueriesSchemes</key>
                <array>
                <string>ms-word:</string>
                <string>ms-powerpoint:</string>
                <string>ms-excel:</string>
                </array>

                Безрезультатно.
                ОЧЕНЬ сильно напрягает вот эта инфа https://stackoverflow.com/questions/38528983/cannot-connect-to-url-ms-word-url-scheme   - For the ms-word url scheme to work, the document must live in SharePoint or OneDrive
                получается чтобы открыть эти файлы надо их в специальное место поместить?????
                Думаю может как-нибудь их броузеру подсунуть через
                 QWebView view
                или openUrlExternally.





                  alex_lip
                  • 28 грудня 2017 р. 06:08
                  • Відповідь була позначена як рішення.

                  Due to the security model of iOS applications, it’s not possible to directly open a local file from an application to another application.

                  - вот ведь...

                    alex_lip
                    • 28 грудня 2017 р. 09:21

                    вот здесь интересный вариант https://code.tutsplus.com/tutorials/ios-sdk-previewing-and-opening-documents--mobile-15130
                    У вас был опыт работы с UIDocumentInteractionController
                    - в QT есть возможность его использовать?

                      alex_lip
                      • 11 січня 2018 р. 01:23

                      В общем разработка под IOS та еще песня... Конкретно мою задачу можно решить только на Objective-C. Благо в QT можно делать нативные вставки. Вот в этом блоге все детально расписано. https://blog.qt.io/blog/2017/12/01/sharing-files-android-ios-qt-app/

                        Evgenii Legotckoi
                        • 11 січня 2018 р. 02:25

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

                          alex_lip
                          • 11 січня 2018 р. 05:34

                          В этом блоге задача более широко поставлена. Но факт остается фактом - отдельно процедура под андроид - отдельно под ios.

                            Evgenii Legotckoi
                            • 11 січня 2018 р. 06:22

                            Ясно. Было бы здорово, если бы Вы описали в виде статьи свой опыт с этой задачей, если, конечно, у вас будет время и желание.

                              alex_lip
                              • 11 січня 2018 р. 07:09

                              Я боюсь без матерных выражений мою встречу с apple не описать. Сам процесс разработки - то что ты должен идти на поклон к apple за временным сертификатом даже для того чтобы оттестировать свою прогу на своем же устройстве(ipad или iphone) - это нечто! Когда все домучаю - постараюсь коротко описать основные этапы.

                                Evgenii Legotckoi
                                • 11 січня 2018 р. 07:11

                                Вау... Прикол с сертификатом для своего же устройства - это действительно что-то вон выходящее за рамки...
                                Жду с нетерпением этой эпической повести!

                                  alex_lip
                                  • 12 січня 2018 р. 08:38

                                  Написал текст - посмотрите

                                    Evgenii Legotckoi
                                    • 12 січня 2018 р. 08:57

                                    Всё отлично!
                                    Единственное, только Qt вместо QT.
                                    На сайте в правом верхнем углу есть ссылка "Написать статью", там будет редактор, создадите статью, перенесите текст туда, и нажмите Опубликовать. После публикации будет первичная модерация, на которой я поправлю огрехи вёрстки, если такие будут и подготовлю финальную версию.
                                    Хорошо пишите, с душой ))))

                                      Коментарі

                                      Only authorized users can post comments.
                                      Please, Log in or Sign up
                                      sf

                                      C++ - Тест 004. Указатели, Массивы и Циклы

                                      • Результат:90бали,
                                      • Рейтинг балів8
                                      МВ

                                      Qt - Тест 001. Сигналы и слоты

                                      • Результат:68бали,
                                      • Рейтинг балів-1
                                      ЛС

                                      C++ - Тест 001. Первая программа и типы данных

                                      • Результат:53бали,
                                      • Рейтинг балів-4
                                      Останні коментарі
                                      A
                                      ALO1ZE19 жовтня 2024 р. 08:19
                                      Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                                      ИМ
                                      Игорь Максимов05 жовтня 2024 р. 07:51
                                      Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                                      d
                                      dblas505 липня 2024 р. 11:02
                                      QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                                      k
                                      kmssr08 лютого 2024 р. 18:43
                                      Qt Linux - Урок 001. Автозапуск програми Qt під Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                                      АК
                                      Анатолий Кононенко05 лютого 2024 р. 01:50
                                      Qt WinAPI - Урок 007. Робота з ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                                      Тепер обговоріть на форумі
                                      J
                                      JacobFib17 жовтня 2024 р. 03:27
                                      добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
                                      ИМ
                                      Игорь Максимов03 жовтня 2024 р. 04:05
                                      Реализация навигации по разделам Спасибо Евгений!
                                      JW
                                      Jhon Wick01 жовтня 2024 р. 15:52
                                      Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
                                      КГ
                                      Кирилл Гусарев27 вересня 2024 р. 09:09
                                      Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
                                      F
                                      Fynjy22 липня 2024 р. 04:15
                                      при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

                                      Слідкуйте за нами в соціальних мережах