2010-06-21 70 views
8

既然iPhone SDK 4.0可供下載,並且iOS 4.0將很快面向消費者,那麼開始使用4.0操作系統中可用的新功能是否有意義?支持傳統iPhone用戶

我主要關心的是,使用4.0功能要求最終用戶也將他們的手機/ ipod更新到4.0。雖然這個過程非常輕鬆,但大多數用戶更新是否合理?應用程序本身並不需要任何新操作系統中引入的任何東西,但現在一些傳統的動畫技術「不鼓勵」而轉向基於塊的對應。這對我來說很好,我寧願使用塊方法,但我擔心這對最終用戶來說是一件麻煩事。

那麼對此有什麼一般的經驗?你有沒有嘗試過最新,最好的版本,還是堅持使用最新的版本?

p.s.這假定GM當最終用戶可用時安裝操作系統 - 不是測試版。

+0

類似的討論發生在去年推出3.0的時候。例如,這個問題討論了在2.0兼容的應用程序中使用3.0功能:http://stackoverflow.com/questions/986589/how-do-you-optionally-use-iphone-os-3-0-features- in-a-2-0-compatible-app – 2010-06-25 17:25:04

+0

@progrmr - 是的,只要賞金被授予,它將從特色問題標籤中刪除。我希望儘可能多的迴應來驗證問題。此外,SO已經提醒我接受答案。在一天結束之前,我會獎勵一些答案。 – 2010-06-30 20:21:02

回答

22

這取決於。你至少有3個選項,並以最好的方式取決於您的應用程序的要求:

  1. 自己的應用不要求任何的iOS 4.0的API - 你應該建立與BaseSDK 4.0,但設定的目標部署到您必須擁有的最低版本(即:3.0)。
    優點:(1)您的應用可以在任何至少具有該目標部署版本的設備上運行,以及(2)它將支持具有iOS 4.0的設備上的快速應用切換。 缺點:您的目標部署版本後無法使用任何API。

  2. 您的應用程序將更好地與4.0 API,但它仍然是可用的,沒有他們 - 如果你可以有條件地使用4.0的API或者通過當前的iOS 4.0設備提供精簡功能或通過提供類似的功能,同時使用不同當您使用4.0版本的設備時,您可以使用BaseSDK 4.0進行構建,將Target Deployment設置爲您必須擁有的最低版本(即:3.0),並有條件地使用iOS 4.0 API調用。 優點:您可以在至少擁有最低iOS版本的所有設備上運行。 缺點:所有這些條件性調用可能會變得複雜。

  3. 您的應用程序需要在某些iOS 4.0的API,以功能 - 在這裏,你別無選擇。使用BaseSDK 4.0構建,設置Target Deployment 4.0並使用這些4.0 API。
    優勢:代碼更簡單,適用於iOS版本 缺點沒有條件語句:您的應用程序將無法在iPad上運行,但(他們在「2010年秋季」獲得4.0),您的應用程序將永遠不會在iPhone上運行早於3G (他們沒有得到4.0),一些iOS 4.0功能在iPhone 3G上無法使用。

在所有情況下,你的基地SDK將是4.0,你的目標部署會,你需要,如果你需要一個新的API,如果設備有它,你可以有條件地使用它的最小值。

只要編譯BaseSDK 4.0,即使您不使用任何4.0功能,您也可以在4.0設備上快速切換應用程序。即使目標iOS 2.0,所有應用程序都應該至少這樣做。如果您不需要它們,請不要使用4.0功能,並且您可以定位更多更舊的設備和尚未升級的設備。

recent answer on SO總結了如何爲BaseSDK和Target Deployment執行此設置,以及如何有條件地使用API​​來定位多個固件版本。

1

我個人通常會將目標鎖定在一個主要版本(即目標3.1而不是4.0)上,通常會給我一個窗口「去年更新過手機嗎?」但取決於您的應用程序,您可能可以使用多任務或僅在4.0中的其他功能。然後,這是你認爲你的用戶會馬上想要的事情。如果你認爲他們可以稍微等一下,看看事情進展如何;如果您發現很多用戶正在迅速轉移到4.0,那麼請推出您的更改。

0

是的,IMO使用OS 4.0中的新功能絕對有意義。安裝了4.0的用戶對於不支持快速應用切換的應用(以及iPhone 4的更高分辨率顯示器)至少不會有太大的容差。

我主要關心的是,使用4.0功能要求最終用戶也將他們的手機/ ipod更新到4.0。

這不是真的。支持這些新功能並不要求您放棄對舊操作系統版本的支持。只需將基礎SDK設置爲4.0,並將部署目標設置爲3.x.並確保您的代碼不調用特定於4.0的方法而不檢查它們是否存在(respondsToSelector:)。

+0

我想你可能錯過了這一點。如果我要承諾使用4.0功能 - 這確實要求4.0操作系統。我不需要新操作系統提供的任何東西。 3.x方法依然存在並且得到支持 - 它們只是「不鼓勵」。我不想維護兩個單獨的代碼庫,它們混合在由if(... respondsToSelector:...)條件分隔的相同源文件中。 – 2010-06-21 21:55:52

+0

有時候需要動態檢查是否有特定的函數和類可用。 iOS平臺(和Mac OS X)支持弱鏈接,但對於需要使用NSClassFromString的類,因爲較弱的類鏈接對於較早的平臺來說太新以支持它。 – 2010-06-24 18:11:54

+0

「3.x方法依然存在並得到支持 - 他們只是'灰心'。」由於沒有正式的棄用(其中有一些),所以在3.x下你可以做的任何事情都不會因爲4.0版本而「氣餒」。只要您對運行混合環境非常敏感,您就可以大膽進入任何新功能4.0提供給您的功能。我正在構建包含每日本地通知的應用程序。即使在UI級別,我也必須處理這個問題 - 如果您的操作系統不支持它,我甚至不會向您顯示該按鈕。 – 2010-06-25 18:34:37

4

建議配置是將Base SDK設置爲最高(即4.0),並將Deployment Target設置爲適當的版本(取決於您的應用中使用了哪種框架功能)。

當然,應用程序可以隨時檢查操作系統版本並跳過對不支持的框架的調用。這是構建iPad和iPhone通用應用程序的常用技術。

+0

這是要走的路。 – 2010-06-22 01:40:41

+1

同意。它本身並不值得一個答案,但世界會更好,關於這個主題的一個簡單的常見問題頁面**,特別是**,因爲這是第一個iPhone更新不適用於整個安裝基礎。 – 2010-06-22 01:49:13

+0

這似乎合乎邏輯,但你強調'推薦'。這在哪裏推薦?蘋果有沒有官方聲明? – 2010-06-22 03:40:22

1

在我看來,如果你可以等待幾個月讓人們轉換到4.0,那麼稍微拖延一下,否則就繼續使用4.0的功能。

根據我以前的年度統計數據,2.0-> 3.0升級需要花費一年時間才能完成,但主要是iPod touch用戶,因爲蘋果收取10美元的費用。

我認爲4.0採用率會更快,但請記住,第一代iPhone/iPod沒有得到4.0升級。

1

我認爲期待大多數用戶升級是安全的,因爲這是從3.0免費升級。 很顯然,蘋果熱衷於讓用戶在4.0上,這就是爲什麼它是免費的。

與正常更新一樣,iTunes會對升級嘮叨,如果您需要重新安裝手機,通常會重定向到最新版本。

由於您正在銷售應用程序,因此您可以相當確信您的買家可以上網,並且至少會偶爾停靠手機並獲得免費更新請求。之前更新過手機的用戶很可能會升級到iOS4。

目前,正如我所看到的,繼續使用3.x的主要動機是iPad兼容性。

您還應該考慮在未來6個月內您的銷售預計會如何。不使用最新功能的成本是多少?你將能夠削減開發時間或增加4.0的前沿功能?競爭應用可以利用4.0功能獲得優勢嗎?將其作爲4.0版本進行宣傳可能會對應用程序的感知產生積極影響。

還有由於您使用4.0而無法運行您的應用程序的人數會佔一定比例。訣竅是弄清楚這種銷售損失是大於還是小於將它們留在後面的收益。

您期望的買家越多,讓所有人都運行您的應用程序越有價值。另外,買家可能是擁有電腦知識的人嗎?如果是這樣的話,那麼他們可能更難以繼續使用3.x.

另外,請記住,iPhone 3G以前的手機不支持iOS4。

還有一個另外:

蘋果已經開始排除在AppStore 2.0的應用程序,請參見https://developer.apple.com/iphone/checklist/

1

我發現,在看的iPhone/Mac電腦等的數量與老VS安裝新的操作系統並沒有告訴你很多關於其所有者的消費習慣。

在應用商店花錢的人更有可能更新操作系統軟件。

如果您的應用程序具有任何複雜程度,則需要一段時間才能發貨,並且您將擁有一個非常小的窗口,iPad仍在運行3.x.

針對多個操作系統級別開發是一件痛苦的事情。除了需要在iPad/iPhone/iPod上運行應用程序,現在您還必須使用2個操作系統來執行此操作。錯過檢查一個地方,你只能在很少執行的代碼中調用4.0,並且你會崩潰。

爲了您的代碼庫的長期穩定性,僅在新應用程序上構建4.0版本也不錯。簡單更好。