2014-02-21 34 views
0

我們,我們需要建立一個iOS應用「A」,將有菜單選項的多種功能,並且這些功能會隨時間增長的要求。所以,客戶建議我們做一個只顯示菜單選項的iOS應用程序'A',點擊時的選項每個都會啓動駐留在設備上的另一個iOS應用程序(實現該功能)。考慮到用戶將不得不從每個鏈接的「A」移出,這將是不好的用戶體驗。同時,由於'A'的大小變得太大,我們不能在'A'中構建所有的特徵。 這種應用程序是否有優雅的設計解決方案?如何設計一個容器,如iOS應用程序,可以增加功能?

+0

你可以建立一個容器項目,包括一些靜態庫,以支持所有不同的功能。這並不能解決你的「太大」的問題,但它可以像你希望的那樣模塊化。 – Putz1103

+1

告訴你的客戶,他的建議永遠不會通過App Store審查過程。這可能只是事實。但「邪蘋果不會接受你的巧妙設計」比一個更好的說法「stoopid開發商拒絕履行你的巧妙設計,他或她可能只是太愚蠢或懶得去做。」你覺得這個應用會有多大?我將幾十萬行代碼從MacOS X移植到iOS,並且大小並不是真正的問題。 – gnasher729

+0

@ gnasher729:我不認爲蘋果會在此基礎上拒絕它。在那裏還有其他的應用軟件可以做這種事情,有時候有合法的理由。 –

回答

0

啓動針對每個功能不同的應用程序似乎起初有點笨重,但在另一方面,它確實提供了增加額外的模塊,而無需重建,每一次重新分配你的應用程序的靈活性。如果模塊足夠獨立以至於用戶不需要不斷地在它們之間切換,這可能不是一個不好的解決方案。

您可以使用custom URL schemes來啓動每個模塊,並使用(例如)一個XML文件來配置哪些模塊可用以及啓動每個模塊的URL方案。這樣,您可以遠程更新XML文件(使應用程序在啓動時調用Web服務以檢查更新的配置文件)。你的配置文件可能就像這樣簡單:

<modules> 
    <module name="Module A" url="moduleA://myModuleA"/> 
    <module name="Module B" url="moduleB://myModuleB"/> 
    <module name="Module C" url="moduleC://myModuleC"/> 
</modules> 

然後應用程序可以提供一個按鈕來啓動每個模塊。您可以爲每個模塊所需的任何其他信息添加額外的標籤(例如圖標圖像或其他)。

當您添加一個新的模塊,更新服務器上的配置文件和應用程序會發現它在下次啓動。您的應用必須將用戶重定向到應用商店,才能下載並安裝新模塊(如果該模塊尚未安裝在其設備上)。

當然,如果你的模塊需要相互或共享數據通信時,它變得更復雜。您可以在自定義URL模式中的模塊之間傳遞參數,但是如果他們需要共享大量數據(如數據庫或其他東西),那麼您需要其他方式來共享該數據。

希望這會有所幫助。

相關問題