实施url sheme协议

时间:2019-12-10 00:03:02

标签: xcode url-scheme

我知道在Xcode中很容易创建一个URL方案。
就像我输入tg://123一样,电报将打开。
如何实现类似hello://的自定义网址方案,我的程序将打开?

有没有办法实现?我还没有找到任何解决方案。

1 个答案:

答案 0 :(得分:0)

XCode自定义URL方案

下面的文档/内容由https://developer.apple.com提供。

我只是在文档/内容中放了一些细节行。

通过执行以下操作来支持自定义URL方案:

myphotoapp:albumname?name=”albumname”
myphotoapp:albumname?index=1

注册您的URL方案

以下文档/文档由doc.qt.io

提供
  • 在“ URL方案”框中指定用于URL的前缀。
  • 为您的应用选择角色:
    • 为您定义的URL方案指定编辑者角色。
    • 为您的应用采用的方案指定查看者角色,但不指定 定义。
  • 为您的应用指定标识符。

有关更多参考和逐步检查自定义URL方案,请检查https://developer.apple.com

更新QT自定义URL方案

QT Custom URL Scheme

要为QtWebEngine实现自定义URL方案,首先必须创建QWebEngineUrlScheme的实例,并使用QWebEngineUrlScheme::registerScheme()注册它。

注意:请确保在实例化QGuiApplicationQApplication对象之前创建并注册scheme对象。

然后,您必须创建一个从QWebEngineUrlSchemeHandler派生的类,并重新实现requestStarted()方法。

最后,通过QWebEngineProfile::installUrlSchemeHandler()QQuickWebEngineProfile::installUrlSchemeHandler()安装方案处理程序对象。

class MySchemeHandler : public QWebEngineUrlSchemeHandler
{
public:
    MySchemeHandler(QObject *parent = nullptr);
    void requestStarted(QWebEngineUrlRequestJob *request)
    {
        // ....
    }
};

int main(int argc, char **argv)
{
    QWebEngineUrlScheme scheme("myscheme");
    scheme.setSyntax(QWebEngineUrlScheme::Syntax::HostAndPort);
    scheme.setDefaultPort(2345);
    scheme.setFlags(QWebEngineUrlScheme::SecureScheme);
    QWebEngineUrlScheme::registerScheme(scheme);

    // ...
    QApplication app(argc, argv);
    // ...

    // installUrlSchemeHandler does not take ownership of the handler.
    MySchemeHandler *handler = new MySchemeHandler(parent);
    QWebEngineProfile::defaultProfile()->installUrlSchemeHandler("myscheme", handler);
}