【问题标题】:How to serve a single page application in a Swift iOS app?如何在 Swift iOS 应用程序中提供单页应用程序?
【发布时间】:2023-04-01 16:32:01
【问题描述】:

我有一个带有 webview 的 Swift 项目,它从本地文件夹 vai GCDwebserver 提供文件,但是该网站被设计为单页应用程序,有什么方法可以将所有 url 请求重写为 index.html?

我目前正在使用 GCDwebserver,但我愿意更改服务器以将 SPA 加载到 web 视图中。

使用 nginx 我会做类似的事情

server {
     listen 8080;
     listen [::] 8080;
     root /root/bundled;
 location / {
      try_files $uri $uri/ /index.html;
 }
}

如何在 osx 中的 webview 上获得相同的重写效果?

【问题讨论】:

    标签: ios swift webview single-page-application gcdwebserver


    【解决方案1】:

    只需使用默认处理程序即可捕获所有 GET 请求:

    - (void)addDefaultHandlerForMethod:(NSString*)method requestClass:(Class)aClass processBlock:(GCDWebServerProcessBlock)block;
    

    如果您想进行更多花哨的匹配,也可以使用正则表达式:

    - (void)addHandlerForMethod:(NSString*)method pathRegex:(NSString*)regex requestClass:(Class)aClass processBlock:(GCDWebServerProcessBlock)block
    

    或者甚至一直到匹配块:

    - (void)addHandlerWithMatchBlock:(GCDWebServerMatchBlock)matchBlock processBlock:(GCDWebServerProcessBlock)processBlock;
    

    【讨论】:

      【解决方案2】:

      我必须承认我从未使用过 GCDWebserver,但如果您在 iOS 应用程序中有任何要求重定向 url,您可以使用 NSURLProtocol。你可以在这里阅读更多关于它的信息https://www.raywenderlich.com/76735/using-nsurlprotocol-swift。阅读完链接后,您基本上需要使用 canonicalRequestForRequest 方法来捕获当前请求并返回一个新请求。希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-21
        • 2016-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多