2010-01-14 10 views
7

Pracuję nad aplikacją na iPhone'a, która do pobierania danych używa serwera. Gdzieś w kodzie źródłowym aplikacji zakodowałem adres URL, z którego można się połączyć. To jest w porządku, z tym wyjątkiem, że nie zawsze chcę testować używając serwera produkcyjnego! Nie chcę mieszać danych na żywo, aby przetestować coś na miejscu. Dlatego skonfigurowałem lokalną wersję tego samego serwera. Jednak aby aplikacja na iPhone'a korzystała z tego serwera, należy zmienić zakodowany adres URL w kodzie źródłowym.iPhone - Przełączanie między środowiskiem lokalnym a środowiskiem produkcyjnym

To jest trochę bolesny w dupę, jeśli często przełączasz się między dwoma serwerami. Mogę też przypadkowo zwolnić aplikację, która nadal używa lokalnego adresu URL!

Myślałem, że może XCode może mi w tym pomóc, ponieważ ma pojęcie "Debugowanie" i opcję "Release" do budowania. Moje pytanie brzmi: czy mogę w jakiś sposób zmienić konfigurację Debugowania w taki sposób, aby wskazywał na lokalny adres URL serwera? Może poprzez wskazanie właściwości lub pliku plist zawierającego adres URL specyficzny dla środowiska. Mógłbym następnie utworzyć dwie wersje tego pliku właściwości i ustawić punkt konfiguracji debugowania na jeden, podczas gdy konfiguracja wydania wskaże na drugą.

Czy ktoś wie, jak mogę to osiągnąć?

Odpowiedz

2

W jednym z plików nagłówkowych (takich jak wstępnie skompilowany plik nagłówkowy) zdefiniuj makra z adresem URL. Spójrz na this article i zastosuj podobne podejście.

Nawiasem mówiąc, używam metody rejestrowania z tego artykułu we wszystkich moich aplikacjach - działa jak urok, gorąco polecam!

+0

Takie podejście jest trochę trudne. Ponieważ możesz sprawdzić komentarze do artykułu, niektórzy mieli problem z tym. Musisz także zdefiniować flagi kompilacji, kiedy możesz domyślnie używać flag/identyfikatorów, które iPhone SDK/GCC już implementuje ('__OPTIMIZE__', '__DEBUG__', lub cokolwiek innego) – vfn

+0

Mam go do pracy - ale myślę, że musisz ustaw dla każdego rozpoczętego projektu, będzie to kłopot w długich, a nawet krótkich seriach. To powinno być ustawione w XCode lub IMO środowiska kompilatora. – Jonny

1

Można definiować makra pre-proccessor w Xcode po prostu edytując ustawienia języka gcc:

Przejdź do menu Projekt i wybierz „Edytuj ustawienia projektu”. Przejdź do zakładki "Kompilacja".

Przejdź do sekcji oznaczonej "GCC 4.0 - Language". Istnieje ustawienie o nazwie "Inne flagi C". Dodaj wszystkie potrzebne makra "-Dwhatever".

5

Wpisz ten kod, w którym musisz użyć konfiguracji opartej na trybie (debug/release) = (development/production).

Najlepszym miejscem do umieszczenia pliku jest plik "ProjectName" _Prefix.pch.

#ifndef __OPTIMIZE__ // __OPTIMIZE__ is not enabled, it means that the active config is Debug, so here you have to put your code for development mode 

// For example 
#define SERVER_URL @"http://my.test.server/something" 

#else //__OPTIMIZE__ is defined, so put here your production code 

// For example 
#define SERVER_URL @"http://my.production.server/something" 

#endif // __OPTIMIZE__

Cheers,
VFN

Powiązane problemy