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

时间:2017-05-16 03:33:40

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

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

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

使用nginx,我会做像

这样的事情
server {
     listen 8080;
     listen [::] 8080;
     root /root/bundled;
 location / {
      try_files $uri $uri/ /index.html;
 }
}

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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

我必须承认我从未使用过GCDWebserver,但如果您在iOS应用中有任何要求重定向网址,则可以使用NSURLProtocol。您可以在此处详细了解https://www.raywenderlich.com/76735/using-nsurlprotocol-swift。一旦你阅读了链接,你基本上需要使用方法canonicalRequestForRequest来捕获当前请求并返回一个新请求。希望有所帮助。