Frage

Ich entwickle eine iPhone-Anwendung, in der ich Daten von einem Webdienst zur Zeit auf einem lokalen Server in LAN befindet sich am abgerufen werden.

Jetzt bin Abrufen ich meine Daten befindet sich auf einem lokalen Server mit URL etwas wie folgt aus:

http: \ 192.168.0.150 \ service \ Service.asmx \ dataFetchingMethod

Aber in Zukunft, wenn meine URL ändert d.h Server so etwas wie folgt aus:

http: \ www.anotherDomain.com \ service \ Service.asmx \ dataFetchingMethod

und

http: \ www.anotherURL.com \ service \ Service.asmx \ dataFetchingMethod

dann wie kann ich es dynamisch ändern?

Zur Zeit habe ich hart die URL in der Anwendung codiert.

War es hilfreich?

Lösung

Anwendungseinstellungen gemacht werden für diese:

- (BOOL) getDataFromWebserver
{
    NSString *url = [[NSUserDefaults standardUserDefaults] stringForKey:@"dataUrl"];

    if(url == nil)
    {
        [self setDefaultPrefs];
        url = [[NSUserDefaults standardUserDefaults] stringForKey:@"dataUrl"];
    }
    [self fetchData:url];//to implement
}

- (void)setDefaultPrefs
{
    NSDictionary *appPrefs = [NSDictionary dictionaryWithObjectsAndKeys:
                                   @"hardCodedUrl", @"dataUrl", nil];

    [[NSUserDefaults standardUserDefaults] registerDefaults:appPrefs];
    [[NSUserDefaults standardUserDefaults] synchronize];        
}

mehr Lesen

Andere Tipps

Sie sollten eine Klasse schreiben, die Eigenschaften aus einer Datei (wie ein plist) liest.

Auf diese Weise, wenn der App läuft, wird es seine Konfiguration aus dem plist, gelesen und Anrufe an der Dienst-URL angegeben werden. Dies kann ohne erneutes Kompilieren der App geändert werden.

Sie gehen zu müssen, um eine Art von Ressource zu verbinden, die entweder nie sehr selten ändert oder ändert. Ich sehe ein paar verschiedene Ansätze.


Proxy-Ansatz

Sie können einen Master-Server einrichten ( http://masterurl.com/ ), die Ihre Anfrage Proxies ein anderer Server. Die Idee dabei ist, dass der Master-Server ändert sich nie, aber die Maschine, dass es als Proxy jederzeit ändern zu können. Zum Beispiel:

App iPhone Unter der Annahme, eine Verbindung zu http://masterurl.com/ :

  1. Alle Anfragen an http://masterurl.com/ sind proxied auf http://someotherurl.com/ .

  2. An einem gewissen Punkt in der Zukunft, Sie ersetzen müssen http://someotherurl.com/ mit http://snazzynewurl.com/

  3. Jetzt können Sie nur ändern http://masterurl.com/ Proxy http://snazzynewurl.com/ .

Um die Anwendung des Benutzers hat sich nichts geändert, und Sie haben nicht Ihre App aktualisieren und erneut zur Überprüfung einreichen.


Standort Datei Ansatz

Sie können den Speicherort einer Datei, wie eine txt oder xml-Datei erhalten.

Angenommen, Ihre Datei Leben unter http://someurl.com/location.txt und die Inhalte sind einfach:

inside location.txt:

http://someotherbaseurl.com/

Ihre Anwendung würde dann in dieser Textdatei lesen und benutzen http://someotherbaseurl.com/ als Basis url für den Rest Ihrer Anwendung. Nun, wenn Sie auf die URL, um eine Änderung vornehmen müssen, können Sie einfach die Textdatei aktualisieren.

Wenn Sie den Speicherort Datei Ansatz nehmen, ich würde empfehlen, die Datei-Hosting mit Amazon S3 oder Rackspace Cloud Files, so dass die Textdatei über eine URL auf dem Content-Delivery-Netzwerk verfügbar ist.

Ich bin sicher, es gibt auch andere Möglichkeiten, dies zu bewältigen. So oder so werden Sie ein Master-URL benötigen, die nie oder selten ändert. Sonst wirst du in eine Situation kommen, wo Sie neu kompilieren werden müssen und erneut einreichen Ihre Anwendung.

Ist das nicht genau das, was DNS ist für die? Sie geben einen einzelnen Domain-Namen, dass Re-leitet, wo man möchte ... es ist nicht viel Hilfe bei der Fehlersuche ist, bevor Sie die Domäne eingerichtet haben, aber bekommen jetzt etwas aufgebaut und umlenken, wo Sie möchten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top