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
                                      i
                                      innorwallNov. 11, 2024, 10:12 p.m.
                                      Django - Tutorial 055. How to write auto populate field functionality Freckles because of several brand names retin a, atralin buy generic priligy
                                      i
                                      innorwallNov. 11, 2024, 6:23 p.m.
                                      QML - Tutorial 035. Using enumerations in QML without C ++ priligy cvs 24 Together with antibiotics such as amphotericin B 10, griseofulvin 11 and streptomycin 12, chloramphenicol 9 is in the World Health Organisation s List of Essential Medici…
                                      i
                                      innorwallNov. 11, 2024, 3:50 p.m.
                                      Qt/C++ - Lesson 052. Customization Qt Audio player in the style of AIMP It decreases stress, supports hormone balance, and regulates and increases blood flow to the reproductive organs buy priligy online safe Promising data were reported in a PDX model re…
                                      i
                                      innorwallNov. 11, 2024, 2:19 p.m.
                                      Heap sorting algorithm The role of raloxifene in preventing breast cancer priligy precio
                                      i
                                      innorwallNov. 11, 2024, 1:55 p.m.
                                      PyQt5 - Lesson 006. Work with QTableWidget buy priligy 60 mg 53 have been reported by Javanovic Santa et al
                                      Now discuss on the forum
                                      i
                                      innorwallNov. 11, 2024, 8:56 p.m.
                                      добавить qlineseries в функции buy priligy senior brother Chu He, whom he had known for many years
                                      i
                                      innorwallNov. 11, 2024, 10:55 a.m.
                                      Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
                                      9
                                      9AnonimOct. 25, 2024, 9:10 a.m.
                                      Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

                                      Follow us in social networks