gpt4 book ai didi

ios - 在 QML 中获取自定义 iOS 方案的源 URL 的最佳方法

转载 作者:行者123 更新时间:2023-12-01 18:12:07 24 4
gpt4 key购买 nike

我是 Qt 和 QML 的新手,正在尝试为 iOS 构建我的第一个应用程序。我需要获取我在 info.plist (myApp://) 中定义的自定义 URL 方案的内容。当我打开任何 url myApp://xyz 时,URL 方案有效并且应用程序打开。现在我需要获取 URL 的内容(xyz)。

我在过去的几天里试图这样做,但没有成功,也没有找到一本关于如何做到最好的好的手册,我在这里问。到目前为止我所理解的:有些人创建自己的应用程序委托(delegate)。 github 上很少有使用旧 Qt 版本(我使用 5.4)的示例,但我没有设法将它们集成到我的应用程序中,而且对于这个简单的事情来说似乎相当复杂。另外,正如我在这里看到的:https://github.com/qtproject/qtbase/blob/stable/src/plugins/platforms/ios/qiosapplicationdelegate.mm该 URL 以某种方式已经由 Qt 处理。我不确定 Qt 桌面服务 http://doc.qt.io/qt-5/QDesktopServices.html ,处理它,但(似乎)它不适用于 QML。

最好的方法是什么?非常感谢。

最佳答案

我终于使用 QDesktopServices 和 QML 的信号使它工作。

处理URL.h

#include <QDesktopServices>

#ifndef HANDLEURL
#define HANDLEURL

class HandleURL : public QObject
{
Q_OBJECT

signals:
void incomingURL(QString path);

public slots:
void handleURL(const QUrl &url);
};

#endif

HandleURL.cpp 发出信号
void HandleURL::handleURL(const QUrl &url)
{
emit incomingURL(url.toString());
}

在 main.cpp 中,设置 URLHandler 并创建 QML 上下文属性
HandleURL *URLHandler = new HandleURL();
QDesktopServices::setUrlHandler("myscheme", URLHandler, "handleURL");
engine.rootContext()->setContextProperty("URLHandler", URLHandler);

在 QML 中,听 Signal
Connections{
target: URLHandler;
onIncomingURL: { console.log("Incoming Signal: "+path)
}
}

plist.info
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.myorg.mobile1</string>
<key>CFBundleURLSchemes</key>
<array>
<string>myscheme</string>
</array>
</dict>
</array>

关于ios - 在 QML 中获取自定义 iOS 方案的源 URL 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28822086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com