2014-03-26 74 views
0

我們從#defines開始,將我們的應用程序指向dev,qa和實時API服務器。那麼,這很懶,更不用說管理上的痛苦了。iOS和XCode:爲iOS應用程序存儲連接設置(即URL)的最佳方式是什麼?

我正在考慮將默認URL /連接設置存儲在.plist中,並創建將使用相應.plist進行連接的dev | stage | live構建配置。

有沒有更乾淨的方法來做到這一點? .plist有多安全?

+1

根本不安全。如果你想要一個更安全的方式,你可以在運行時建立你的URL字符串,從數組中抓取每個字符。這樣,二進制文件不包含字符串。(然而,大多數人不打算查看二進制文件,只有他們手上有太多時間的人) – klcjr89

回答

1

下面是我如何處理它。

我有一個單獨的文件,我存儲這樣的信息。讓我們把這個文件配置{H,M}

在我的.h(頭)文件,我宣佈常數是這樣的:

#pragma mark - API 
extern NSString * const kAPIHost; 
extern NSString * const kAPIVersion; 

在我的.m(實現)文件,我完成它關閉與此

#pragma mark - API 

#if TARGET_IPHONE_SIMULATOR 
NSString * const kAPIHost = @"http://localhost/"; 
#else 
NSString * const kAPIHost = @"http://liveserver.com"; 
#endif 

NSString * const kAPIVersion = @"v2/"; 

這裏發生的是,它會檢查,看看是否我在SIM卡上運行,如果我的話,就使用本地主機,如果它在設備上運行,它使用活的服務器。

最後,我在我的預編譯頭(PCH)文件中導入Configuration.h。現在

#import Configuration.h 

,這個文件是整個應用程序可用,而無需將其導入的每一個文件。我這樣使用它。

NSURL * url = [NSURL URLWithString:[kAPIHost stringByAppendingString:[kAPIVersion stringByAppendingString:@"apiEndPoint/"]]]; 

雖然troop231發佈的評論聽起來很有趣。也許我可以在將來某個時候實施。總是尋找更安全的方式來做事情:)

+0

感謝您的答覆。你如何處理階段與生產服務器的構建?更多#ifdefs?爲什麼不使用.plist? – dixkin

0

你可以將它存儲在鑰匙串中 - 它是安全的 - 但我不知道你爲什麼想這樣做。

你可以使用的extern常量,而不是定義的: extern NSString *const in a class.

您可以使用預處理指令,以幫助您管理地址: http://www.techotopia.com/index.php/Using_Objective-C_Preprocessor_Directives

您可以創建一個單獨的類,將例如閱讀這些網址從.plist開始,然後交給任何感興趣的課程。

關於安全:

  • 使用帶的.plist和運輸應用單不會透露你的測試/開發地址。
  • 使用#define,externs和預處理程序指令即#ifdef DEBUG也不會在生產代碼中顯示您的開發/測試地址。
相關問題