2011-12-11 59 views
7

比方說,我有一個現有的iOS應用程序住在AppStore上這是版本1.0iPhone應用程序更新Vs的新版本

現在我做一些修改應用程序,並要提交回來。

有2種不同的提交方式嗎? 像我可以仍然保持版本爲1.0,只提交應用程序或 我需要創建一個新的1.1版,然後提交它?

這個過程有什麼不同?

同樣從客戶端,這對新用戶/現有用戶如何工作?

回答

10

我剛剛發現了一些關於版本升級和App Store的內容。剛纔,由於iOS系統的行爲,我遇到了問題和用戶崩潰,這是我以前無法想象的。而且,非常重要的是,iTunes,AppStore和iOS在最新版本中修改了一些升級和安裝規則。現在,它以這種方式工作: - 當用戶安裝新版本時,捆綁包中的所有文件都會下載並複製到先前的現有捆綁包中,但不會刪除舊文件或組件(或並非全部刪除)。所以,最終捆綁包不等於新版本的全新安裝捆綁包。 - 例如,如果xib/nib文件已針對新版本本地化爲不同語言,則更新的軟件包將包含兩個版本:一個位於根文件夾中,另一個位於每個本地化文件夾中。顯然,系統將使用第一個,只有全新的安裝纔會顯示該文件的本地化版本。 我的一個應用程序顯示了MainWindow.xib的問題,並且由於引用和類中存在一些修改,每次嘗試運行時更新的應用程序都會崩潰,因爲它使用obsolet對象。我已經構建了一個新版本,用於更改已經本地化的xib/nib文件的名稱。由於MainWindow就是其中之一,所以我必須修改info.plist中的引用當然。

好的,知道的是,您可以在軟件包中構建具有完全不同組件的新版本,如果以前版本的文件確實存在,則應用程序會爲用戶提供使用它們的選項。也就是說,應用程序的兩個版本在一個圖標和包中。不是很難做到。

但是,非常奇怪的是我認爲新的iOS版本和iTunes不允許降級。我試圖做到這一點,但沒有完成。也就是說,如果您安裝了一個版本,例如1.2,那麼AFAIK不可能在設備上或iTunes - >「應用程序」中安裝後者v1.1。所以,雙版本捆綁將一直存在,直到重新安裝應用程序。

+0

非常翔實的答案Gaberiel :)你能讓我知道sqlite部分嗎?如果新舊版本具有相同的命名sqlite文件(比如說abc.sqlite1.0),到底發生了什麼?我的應用程序新版本的行爲如何?它會覆蓋舊的SQLite嗎?或者我會從兩個sqlite中獲取數據。 –

+0

是的。我所說的全部是關於應用程序包中的項目。如果它們在捆綁中具有相同的名稱,則按預期將舊的替換爲新的。 – Gabriel

+0

@Gabriel:在更換之前,有沒有辦法將數據從舊數據庫複製到新數據庫? – Mrunal

8

您需要創建一個新的版本號,這是有道理的,因爲這是一個新版本的應用程序。這將作爲您的客戶的更新。我不認爲你可以上傳一個具有相同版本的新的二進制文件,而無需從商店中刪除舊版本。

您在iTunes連接中添加新版本,然後更新Xcode中的版本號以匹配並創建新的存檔。這非常簡單。

2

您必須始終增加應用的任何更新的版本號。

用戶將在設備上的App Store圖標上和電腦上的iTunes上看到徽章。進入更新部分,它會列出您的應用程序以及您提供的更改列表以及安裝更新的按鈕。他們還可以一次更新所有應用程序。

1
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; 
NSLog(@"version is%@",version); 
+0

謝謝,簡單地說.. – 2013-11-27 10:03:04

+0

您可以使用'[[[NSBundle mainBundle] infoDictionary] objectForKey:@「CFBundleShortVersionString」]'來處理版本更改爲共享首選項中的數據庫或新的/棄用的鍵('[NSUserDefaults standardUserDefaults] ')。這裏是例子:http://stackoverflow.com/a/23082595/2835520 – IgniteCoders

0

您不必打開要提交的版本號。打開Xcode,進入窗口 - 管理器 - 歸檔並分發您已成功創建的應用程序。

相關問題