2017-05-16 4 views
1

Ich habe ein Swift-Projekt mit einem Webview, das Dateien aus einem lokalen Ordner vai GCDwebserver bereitstellt, aber die Website ist als eine einzelne Seite Anwendung konzipiert, gibt es eine Möglichkeit, die ich alle URL-Anfragen in index.html neu schreiben kann?Wie kann ich eine einzelne Anwendung in einer Swift iOS App bereitstellen?

Ich benutze derzeit GCDwebserver, aber ich bin bereit, Server zu ändern, um das SPA in der Webansicht zu laden.

Mit nginx würde ich tun somthing wie

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

Wie kann ich die gleiche Rewrite Wirkung auf eine Webansicht in osx bekommen?

Antwort

0

Ich muss zugeben, ich habe noch nie GCDWebserver verwendet, aber wenn Sie eine Anforderung in einer iOS-App haben, um eine URL umzuleiten, können Sie NSURLProtocol verwenden. Sie können mehr darüber hier lesen https://www.raywenderlich.com/76735/using-nsurlprotocol-swift. Sobald Sie den Link gelesen haben, müssen Sie grundsätzlich die Methode canonicalRequestForRequest verwenden, um die aktuelle Anfrage zu erfassen und eine neue zurückzugeben. Ich hoffe, das hilft.

1

einfach einen Standard-Handler verwenden, um alle GET Anfrage zu fangen:

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

oder ein regulärer Ausdruck ein, wenn Sie mehr Phantasie passende tun wollen:

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

Oder sogar den ganzen Weg gehen zu einem Vergleichsblock:

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