2011-04-04 50 views
3

我目前正在將現有的iOS應用調整爲一個非常類似的應用系列(每個應用實例可能會映射到不同的國家/地區) 。管理相關iOS應用系列的最佳做法

我打算在具有不同的構建目標,所有這些情況下,它們之間唯一的區別應該是:

  • 圖像(可能只是濺射屏幕和圖標)
  • 本地化
  • 字符串變量:基本URL用於遠程服務,應用ID,支持電子郵件等(可能一半這樣的變量的一打)

代碼本身應該是SA我在所有的應用程序。

我想知道的是你認爲是管理這類應用系列的最佳實踐。

關於圖像和本地化(或一般的資源),它應該只是從目標添加/刪除適當的文件(我猜我甚至可以在不同的目錄中使用相同的圖像名稱)。

我不知道的主要是其他配置變量。

我聽說過的幾個選項/念頭:

  • 使用預處理宏,並與不同的URL的主要配置的頭文件,身份證,等
  • 從plist中加載它們(或類似配置文件),只要應用程序啓動,並具有一個目標一個這樣的文件
  • 創建空.sqlite文件(此應用已經使用了核心數據),並與缺省配置變量填充它,並具有一個目標一個這樣的文件

我覺得第一個選項是最快一發不可收拾一旦我有這個應用程序的少數情況下,再加上我必須重新編譯每次我更改這些設置一次。

第三個選擇,我也不能確定,因爲我會增加實體到我的數據庫不覺得自己屬於那裏,加上它那種感覺就像矯枉過正的東西可能會是5-10設置。我也不確定如何在更新中添加新設置。

所以我更傾向於第二種選擇。

想法?任何替代這些?

更新#1:

關於第二個選項,也有一個缺點,即這些字符串(IDS,網址等)會稍微暴露(即,如果某人是打開的應用程序,並通過看plist),而不是源代碼。並不是說這是一個大問題,而只是需要考慮的問題。

更新#2:

如何直接使用應用程序的Info.plist並將其存儲在那裏? (因此有一個信息。每個目標配置的plist)雖然最初我想的是有一個單獨的plist,並且有一個「配置單例」,它可以在啓動時加載所有內容,但我認爲簡單地將它放在info.plist中可能更簡單,然後通過[[[NSBundle mainBundle] infoDictionary] objectForKey:@"com.example.mykey1"]閱讀。

回答

2

我最終選擇了plist,而不是創建一個新的,我用這個info.plist文件,因此不需要爲每個目標額外的文件,因爲我已經需要有一個單獨的信息。爲每一個plist。我乾脆直接從同捆加載它們:

[[[NSBundle mainBundle] infoDictionary] objectForKey:@"com.example.mykey1"] 

我還使用了預處理器(與目標設置中設置標誌)的一對夫婦的事情,但是這主要是因爲當我想禁用/刪除徹底一些部分應用程序(例如,爲了確保我獲得了所有我評論過的枚舉值,甚至包括在幾個地方)。

我認爲這是比較乾淨的,我可以很容易地複製此爲未來建立沒有太多亂七八糟的。

1

鑑於變化是每個國家/地區,而這些變量是字符串,你爲什麼不乾脆把他們當作本地化字符串,從而減少問題一個已經解決了?

否則,我會去plist。 Sqlite似乎是一個矯枉過正的,並不是源代碼控制友好的。有條件的編譯會很快變得混亂。

+0

沒想到的是,確實也將讓事情變得簡單......但我不知道我會想,以配合各建一個只有一個特定的(一套)語言(S)。另外,關於sqlite源代碼管理問題的好處,我沒有考慮過。 – 2011-04-05 07:45:16

4

我會採取預處理器選項。你可以把你所有的預處理器放在一個文件/方法中,它不會太混亂。就像oefe說的那樣,改變.sqlite是過度殺傷性的。隨着多重plist,你會發現自己拖動東西並做了很多容易出錯的操作。

然而,我也不會做了很多的應用程序。我只會製作一個應用程序,讓用戶在啓動時選擇他的城市。您還可以添加應用內購買,讓用戶在需要時添加更多城市。

  • 您的應用將更容易維護:您是否想要在每次更新時上傳,更改10個應用的描述和屏幕截圖?我覺得這是痛苦做了1個應用...
  • 你不會垃圾郵件的AppStore的:具有完全相同的目的,在AppStore 10+更多的應用程序是荒謬的......這也正是爲什麼蘋果做應用內購買,以避免這種情況。
  • 你必須找到每個城市不同的圖標:你的圖標是最重要的一個方面賣你的應用商店應用時。你希望它儘可能拋光。蘋果公司不會允許多個應用具有相同的圖標,並通過在其上放置標籤來區分圖標而不是是一個不錯的選擇。
+0

雖然我瞭解你的意圖,但是沒有製作大量的應用程序,它們的內容(從遠程服務器訪問的內容)將它們區分開來,甚至可能只是在各自的國家/地區發佈每個版本App Store,而不是其他人。我們更感興趣的是讓每個應用在自己的國家都有吸引力,而不是製作一個通用的應用,而這個應用對於任何人都不具吸引力。應用內購買也不適用於此 - 這些都將是免費應用。 – 2011-04-05 07:37:15

+0

預處理器也是我的第一選擇,它很可能是最快的一個實現,我只是擔心5-6個不同的構建後潛在的混亂...... – 2011-04-05 07:40:58

+0

如果你只有1或2個地方你做條件,這不是那麼混亂。我發現有6個相同名稱的文件比較麻煩......! – gcamp 2011-04-05 13:36:06

相關問題