Qt QDesktopServices::setUrlHandler在Mac失效,无法接收URL携带数据
问题:Qt应用通过自定义URL协议唤起后无法接收带参数的URL
我已经能通过urlApp://协议唤起Qt应用,但使用urlApp://test传递数据时,HandleURL::handleURL无法接收到完整的URL。
使用环境
- Qt 6.3.0
- macOS 12.4
已完成的配置
1. main.cpp中注册URL处理器
int main(int argc, char *argv[]) { .... HandleURL *URLHandler = new HandleURL(); QDesktopServices::setUrlHandler("urlApp", URLHandler, "handleURL"); .... engine.rootContext()->setContextProperty("URLHandler", URLHandler); .... }
2. HandleURL类实现
#ifndef HANDLEURL_H #define HANDLEURL_H #include <QObject> #include <QDesktopServices> #include <QUrl> class HandleURL : public QObject { Q_OBJECT public: explicit HandleURL(){} signals: void incomingURL(QString path); public slots: void handleURL(const QUrl &url){ emit incomingURL(url.toString()); } }; #endif // HANDLEURL_H
3. info.plist中添加CFBundleURLTypes配置
<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>urlApp</string> <key>CFBundleURLSchemes</key> <array> <string>urlApp</string> </array> </dict> </array>
内容的提问来源于stack exchange,提问作者Otis Lin
相关产品推荐
相关产品推荐

