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
                                      AD

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

                                      • Результат:50бали,
                                      • Рейтинг балів-4
                                      m
                                      • molni99
                                      • 26 жовтня 2024 р. 01:37

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

                                      • Результат:80бали,
                                      • Рейтинг балів4
                                      m
                                      • molni99
                                      • 26 жовтня 2024 р. 01:29

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

                                      • Результат:20бали,
                                      • Рейтинг балів-10
                                      Останні коментарі
                                      ИМ
                                      Игорь Максимов22 листопада 2024 р. 11:51
                                      Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                                      Evgenii Legotckoi
                                      Evgenii Legotckoi31 жовтня 2024 р. 14:37
                                      Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                                      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 аналогично. Могу предположить, что из-за более новой верси…
                                      Тепер обговоріть на форумі
                                      Evgenii Legotckoi
                                      Evgenii Legotckoi24 червня 2024 р. 15:11
                                      добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                                      t
                                      tonypeachey115 листопада 2024 р. 06:04
                                      google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
                                      NSProject
                                      NSProject04 червня 2022 р. 03:49
                                      Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
                                      9
                                      9Anonim25 жовтня 2024 р. 09:10
                                      Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

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