alex_lip
alex_lipDec. 27, 2017, 5:43 a.m.

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>

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



We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

18
Evgenii Legotckoi
  • Dec. 27, 2017, 7:23 a.m.

Я с 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
    • Dec. 27, 2017, 7:53 a.m.

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

      Evgenii Legotckoi
      • Dec. 27, 2017, 8:06 a.m.

      А ещё там же написано, что желательно заменить данный файл своим собственным, чтобы избежать постоянной генерации файла утилитой 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
        • Dec. 27, 2017, 8:11 a.m.
        • (edited)

        так фраза
        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
          • Dec. 27, 2017, 8:14 a.m.
          а не перезаписывать каждый раз его заново.
          я это к тому, что его нужно переписать только один раз своим файлом. В документации сказано, что как только файл сгенерен, заменяете его своей копией и работаете. qmake не должен его переписывать при дальнейших запусках.
          Там уже определяете свои собственные параметры.
          Я очень сомневаюсь, что в Qt Creator есть утилита для настройки в стиле мышкотыканья, учитывая, что в документации написано, что можете прописать все кастомные параметры самостоятельно.

            alex_lip
            • Dec. 27, 2017, 8:14 a.m.

            вот пример со всякими социальными сетям. А как называется 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
              • Dec. 27, 2017, 8:58 a.m.

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


                alex_lip
                • Dec. 28, 2017, 3:54 a.m.

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

                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
                  • Dec. 28, 2017, 6:08 a.m.
                  • The answer was marked as a solution.

                  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
                    • Dec. 28, 2017, 9:21 a.m.

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

                      alex_lip
                      • Jan. 11, 2018, 1:23 a.m.

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

                        Evgenii Legotckoi
                        • Jan. 11, 2018, 2:25 a.m.

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

                          alex_lip
                          • Jan. 11, 2018, 5:34 a.m.

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

                            Evgenii Legotckoi
                            • Jan. 11, 2018, 6:22 a.m.

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

                              alex_lip
                              • Jan. 11, 2018, 7:09 a.m.

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

                                Evgenii Legotckoi
                                • Jan. 11, 2018, 7:11 a.m.

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

                                  alex_lip
                                  • Jan. 12, 2018, 8:38 a.m.

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

                                    Evgenii Legotckoi
                                    • Jan. 12, 2018, 8:57 a.m.

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

                                      Comments

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

                                      C ++ - Test 004. Pointers, Arrays and Loops

                                      • Result:50points,
                                      • Rating points-4
                                      m

                                      C ++ - Test 004. Pointers, Arrays and Loops

                                      • Result:80points,
                                      • Rating points4
                                      m

                                      C ++ - Test 004. Pointers, Arrays and Loops

                                      • Result:20points,
                                      • Rating points-10
                                      Last comments
                                      Evgenii Legotckoi
                                      Evgenii LegotckoiNov. 1, 2024, 12:37 a.m.
                                      Django - Lesson 064. How to write a Python Markdown extension Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                                      A
                                      ALO1ZEOct. 19, 2024, 6:19 p.m.
                                      Fb3 file reader on Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                                      ИМ
                                      Игорь МаксимовOct. 5, 2024, 5:51 p.m.
                                      Django - Lesson 064. How to write a Python Markdown extension Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                                      d
                                      dblas5July 5, 2024, 9:02 p.m.
                                      QML - Lesson 016. SQLite database and the working with it in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                                      k
                                      kmssrFeb. 9, 2024, 5:43 a.m.
                                      Qt Linux - Lesson 001. Autorun Qt application under Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                                      Now discuss on the forum
                                      m
                                      moogoNov. 22, 2024, 6:17 p.m.
                                      Mosquito Spray System Effective Mosquito Systems for Backyard | Eco-Friendly Misting Control Device & Repellent Spray - Moogo ; Upgrade your backyard with our mosquito-repellent device! Our misters conce…
                                      Evgenii Legotckoi
                                      Evgenii LegotckoiJune 25, 2024, 1:11 a.m.
                                      добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                                      t
                                      tonypeachey1Nov. 15, 2024, 5:04 p.m.
                                      google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
                                      NSProject
                                      NSProjectJune 4, 2022, 1:49 p.m.
                                      Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…

                                      Follow us in social networks