如何在 Swift iOS 应用程序中提供单页应用程序



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

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

使用nginx,我会做类似的事情

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

如何在 osx 中的网页视图上获得相同的重写效果?

只需使用默认处理程序即可捕获所有 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;

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

相关内容

  • 没有找到相关文章

最新更新