Re: [情報] 蘋果新規定:所有新應用必須適配iOS 7
剛好有在做 iOS App 的開發 可以稍微幫大家解釋清楚一點
首先如果還是用 iOS 6 或是之前的 iOS 的使用者
目前還不用太過擔心明年 2 月 1 號之後真的會沒有辦法用新的或是更新的 App
目前 Apple 官方的公告內容如下 無論是一般使用者或是開發者都只看到同一份公告
https://developer.apple.com/news/index.php?id=12172013a
"Starting February 1, new apps and app updates submitted to the
App Store must be built with the latest version of Xcode 5 and
must be optimized for iOS 7. Learn more about preparing your
apps by reviewing the iOS Human Interface Guidelines."
簡單翻譯
"從 2 月 1 號起,遞交到 App Store 的新 App 以及 App 的升級版本必須使用
最新版的 Xcode 5 建置而且需針對 iOS 7 做最佳化。
回顧 iOS Human Interface Guidelines 以學習如何準備您的 App"
就這樣簡單的內容
其中明確的只有一定要使用 Xcode 5 來建置要上傳到 App Store 的 App
但對於 "針對 iOS 7 做最佳化" 的部分 Apple 官方目前也沒有什麼明確的標準
我 google "optimized for iOS 7" 看了 10 篇左右今天新的國外網誌和報導
也沒有看到有人確切知道這是什麼意思
甚至在 iOS Developer Forum 上也有開發者對於這項公告提問 也沒有進一步細節
總而言之 目前很明確的只有一定要使用 Xcode 5 的新版本建置 App 而已
而什麼叫做必須針對 iOS 7 最佳化還不清楚 應該也不需要太擔心
接下來跟大家分享一下有沒有使用 Xcode 5 的差別
Xcode 是一套 Apple 出的 IDE (Integrated Development Environment)
可以用來建置 Mac 或是 iOS 的程式
其中包含了 iOS 的 SDK 裡面有很多官方準備好的函式和功能
在 Xcode 4 的最後板本中只有支援到 iOS 6 的 SDK
而新版 iOS 7 的 SDK 則是只有在 Xcode 5 中才支援
大家都知道 iOS 7 的很大改變之一就是 UI 也就是使用者介面
而這些新的 UI 元素就包含在新版的 iOS 7 SDK 當中
所以 在目前 App Store 上的 App 大概有兩種類型
1. 使用 Xcode 5 建置 使用 iOS 7 的新 UI
2. 使用 Xcode 4 建置 使用 iOS 6 以前的 UI
以上兩種 App 都可以在 iOS 6 (如果支援) 或是 iOS 7 執行
但是在 UI 上會有些許不同的呈現如下:
運作裝置 iOS 版本
iOS 6 iOS 7
iOS 6 SDK iOS 6 UI iOS 6 UI
iOS 7 SDK iOS 6 UI iOS 7 UI
而至於什麼版本以上的 iOS 裝置可以運作則是透過 Target 參數設定
跟什麼版本的 iOS SDK 沒有直接關係
以目前我負責的 App 來說
我使用 Xcode 5 + iOS 7 SDK 而支援的平台則是設定 iOS 5 以上
因此建置出來的 App 可以在 iOS 5 以上的裝置使用
而同一個 App 跑在 iOS 5/6 上會使用以前的 UI
在 iOS 7 則會使用新的 UI
那為什麼現在會強制要求使用 Xcode 5 呢?
因為就我所知有一些開發者會為了一些因素繼續使用 Xcode 4 來開發
即使是這陣子遞交到 App Store 的更新依然如此
會造成這樣的原因 其中之一就是 UI 的改變太大
有可能這個 App 前陣子才基於 iOS 6 的 UI 元素做設計
根據了 iOS 6 的按鈕、表格呈現方式、元件大小等等方面做過客製化
也就是做了風格跟 iOS 內建 UI 很像的特製 UI 元件
所以忽然又要重新更改一次既費時又費工
發現繼續使用 Xcode 4 就可以在 iOS 5~7 都用同一種呈現方式
所以就繼續這麼做了
目前 Apple 這麼努力的推動 iOS 7 的新 UI 風格
這種方式當然就是這次公告限制的目標之一
另外客製化的元件如果在 iOS 7 上太像 iOS 6 的風格
我相信應該也會是限制的目標
總結來說
Apple 不會也沒有要求開發者的新 App 只能支援 iOS 7
但是要使用最新的 Xcode 5 和 iOS 7 SDK
也沒有說不能客製化 UI
但是要就要針對 iOS 6 和 iOS 7 分別配合內建 UI 風格設計
BUT BUT BUT BUT BUT BUT BUT BUT...
因為 iOS 7 和 iOS 6 以前的 API 也已經有很多不同
有很多的新架構以及新功能 甚至在 UI 上很多座標或是大小都不同
要同時支援 iOS 6 以前的版本以及 iOS 7 對開發者來是是很辛苦的事
很多的開發者會乾脆針對 iOS 7 的 UI 重新設計
同時也使用了只有在 iOS 7 才能使用的新 API 和新功能
這種情況下 開發者就會讓新的 App 只支援 iOS 7
像是 Dropbox 就是其中一個例子
在這種情況 因為一個 App 的版本歷史裡有支援 iOS 6 以前以及只支援 iOS 7
所以 App Store 在前陣子引入了新的功能 讓使用者可以下載最後支援的版本
以前的話 會直接在 App Store 上找不到不支援這個裝置的 App
舉例來說 一個 App 如果在 1.0 ~ 1.9 版支援 iOS 6 以上
而 2.0 的最新版只支援 iOS 7 以上
那麼一台還在用 iOS 6 的裝置就可以更新或是新安裝 1.9 版本 而不是找不到 App
特別注意的是 iOS 的策略一向都是支援某個版本"以上"
所以舊 App 可以跑在新的 iOS 上而不用更新
不會有 iOS 6 可以跑而 iOS 7 不行的狀況
當然因為某些因素在新版本不相容會有問題的例外
最後再補充一點
現在在 App Store 上面可以看到 App 會特別標明 "optimized for iPhone 5"
我查了一下 看起來判斷的標準就是支不支援 4 吋的螢幕 也就是上下不會有黑邊
如果以此類推
"optimized for iOS 7"也有可能代表必須要包含 iOS 7 要求的新圖片
可能很多人並不知道在 iOS 7 中多了一些不同尺寸的圖片
像是 iPad 的 App 開啟圖片 或是 App 的 Icon
這些都和以前 iOS 6 的有些許的不同
詳細資訊
http://ivomynttinen.com/blog/the-ios-7-design-cheat-sheet/
目前的話 在上傳到 App Store 的時候只會顯示警告訊息提醒缺少了一些圖片
未來可能直接在發現缺少這些新圖片的時候就顯示錯誤不讓你繼續下一步了
再補充一點
要分辨現在 App 是用 Xcode 4 或 Xcode 5 建置的話
最簡單的方式應該是找個可以打字的地方讓鍵盤出現
如果是舊的鍵盤的話就是使用 Xcode 4 建置的
以上是我在開發 iOS App 的一些心得和整理
因為每天都會來 iPhone 板逛逛 想說這裡有不少 iOS 使用者
希望一些整理過的資訊可以讓大家更清楚 不需要有太多的擔心
有任何問題歡迎指教或是討論 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.86.169.108
推
12/19 03:17, , 1F
12/19 03:17, 1F
※ 編輯: timestop 來自: 219.86.169.108 (12/19 03:22)
推
12/19 03:54, , 2F
12/19 03:54, 2F
推
12/19 04:05, , 3F
12/19 04:05, 3F
推
12/19 04:11, , 4F
12/19 04:11, 4F
→
12/19 04:12, , 5F
12/19 04:12, 5F
→
12/19 04:13, , 6F
12/19 04:13, 6F
推
12/19 07:16, , 7F
12/19 07:16, 7F
→
12/19 08:03, , 8F
12/19 08:03, 8F
→
12/19 08:04, , 9F
12/19 08:04, 9F
→
12/19 08:05, , 10F
12/19 08:05, 10F
→
12/19 08:07, , 11F
12/19 08:07, 11F
→
12/19 08:08, , 12F
12/19 08:08, 12F
推
12/19 08:44, , 13F
12/19 08:44, 13F
→
12/19 08:44, , 14F
12/19 08:44, 14F
→
12/19 08:45, , 15F
12/19 08:45, 15F
→
12/19 08:46, , 16F
12/19 08:46, 16F
→
12/19 08:48, , 17F
12/19 08:48, 17F
推
12/19 08:53, , 18F
12/19 08:53, 18F
→
12/19 08:54, , 19F
12/19 08:54, 19F
→
12/19 08:54, , 20F
12/19 08:54, 20F
→
12/19 09:12, , 21F
12/19 09:12, 21F
推
12/19 09:21, , 22F
12/19 09:21, 22F
→
12/19 09:39, , 23F
12/19 09:39, 23F
推
12/19 10:07, , 24F
12/19 10:07, 24F
→
12/19 10:09, , 25F
12/19 10:09, 25F
→
12/19 10:09, , 26F
12/19 10:09, 26F
→
12/19 10:09, , 27F
12/19 10:09, 27F
→
12/19 10:10, , 28F
12/19 10:10, 28F
→
12/19 10:10, , 29F
12/19 10:10, 29F
→
12/19 10:11, , 30F
12/19 10:11, 30F
推
12/19 10:28, , 31F
12/19 10:28, 31F
推
12/19 10:33, , 32F
12/19 10:33, 32F
推
12/19 10:34, , 33F
12/19 10:34, 33F
→
12/19 10:45, , 34F
12/19 10:45, 34F
推
12/19 11:58, , 35F
12/19 11:58, 35F
→
12/19 12:20, , 36F
12/19 12:20, 36F
→
12/19 12:21, , 37F
12/19 12:21, 37F
推
12/19 12:27, , 38F
12/19 12:27, 38F
推
12/19 12:48, , 39F
12/19 12:48, 39F
推
12/19 12:51, , 40F
12/19 12:51, 40F
推
12/19 13:18, , 41F
12/19 13:18, 41F
推
12/19 13:30, , 42F
12/19 13:30, 42F
推
12/19 14:12, , 43F
12/19 14:12, 43F
推
12/19 14:16, , 44F
12/19 14:16, 44F
推
12/19 14:54, , 45F
12/19 14:54, 45F
推
12/19 14:58, , 46F
12/19 14:58, 46F
推
12/19 15:35, , 47F
12/19 15:35, 47F
推
12/19 16:08, , 48F
12/19 16:08, 48F
推
12/19 20:30, , 49F
12/19 20:30, 49F
推
12/19 22:26, , 50F
12/19 22:26, 50F
推
12/20 01:19, , 51F
12/20 01:19, 51F
推
12/20 15:49, , 52F
12/20 15:49, 52F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):