我們從#defines開始,將我們的應用程序指向dev,qa和實時API服務器。那麼,這很懶,更不用說管理上的痛苦了。iOS和XCode:爲iOS應用程序存儲連接設置(即URL)的最佳方式是什麼?
我正在考慮將默認URL /連接設置存儲在.plist中,並創建將使用相應.plist進行連接的dev | stage | live構建配置。
有沒有更乾淨的方法來做到這一點? .plist有多安全?
我們從#defines開始,將我們的應用程序指向dev,qa和實時API服務器。那麼,這很懶,更不用說管理上的痛苦了。iOS和XCode:爲iOS應用程序存儲連接設置(即URL)的最佳方式是什麼?
我正在考慮將默認URL /連接設置存儲在.plist中,並創建將使用相應.plist進行連接的dev | stage | live構建配置。
有沒有更乾淨的方法來做到這一點? .plist有多安全?
下面是我如何處理它。
我有一個單獨的文件,我存儲這樣的信息。讓我們把這個文件配置{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發佈的評論聽起來很有趣。也許我可以在將來某個時候實施。總是尋找更安全的方式來做事情:)
感謝您的答覆。你如何處理階段與生產服務器的構建?更多#ifdefs?爲什麼不使用.plist? – dixkin
你可以將它存儲在鑰匙串中 - 它是安全的 - 但我不知道你爲什麼想這樣做。
你可以使用的extern常量,而不是定義的: extern NSString *const in a class.
您可以使用預處理指令,以幫助您管理地址: http://www.techotopia.com/index.php/Using_Objective-C_Preprocessor_Directives
您可以創建一個單獨的類,將例如閱讀這些網址從.plist開始,然後交給任何感興趣的課程。
關於安全:
根本不安全。如果你想要一個更安全的方式,你可以在運行時建立你的URL字符串,從數組中抓取每個字符。這樣,二進制文件不包含字符串。(然而,大多數人不打算查看二進制文件,只有他們手上有太多時間的人) – klcjr89