網頁

2012年9月19日 星期三

iOS Data Storage Guidelines(中譯)

【環境:xCode4.3.2 , ios5.1 , USE ARC】
說明:原文連接 - 需登錄開發者帳號
本文說明apple官方對於iOS儲存資料的一些規範。
若想學習如何將你的app,加入iCloud儲存的功能,請參考 此連結




iCloud 已存在自動每天從Wi-Fi備份使用者的iOS device中的功能。任何存在于你app中的根目錄下的資料均會備份,除了應用程式本身有夾帶的bundle,cache目錄和temp目錄。可備份的包含『已購買的音樂、應用程式、書籍,相片、device的設定,主屏幕和app的組織,訊息和手機鈴聲也會備份』。

因是用無線(網路)備份的方式儲存在 iCloud ,每份資料務必為最小儲存容量。容量較大的檔案將延長執行備份的時間,並消耗更多 iCloud 上可利用的空間。

確保備份的動作盡可能的有效率,確定將儲存在你app中的資料符合下列規範:
  1. 只有用戶自主產生的資料或文件,或無法以其他的方式在app中重新創建的資料,應儲存在 <Application_Home>/Documents 路徑,並將自動備份到iCloud中。
  2. 資料能被重復下載或者重復產生等,應被儲存在<Application_Home>/Library/Caches目錄。如應該把數據緩存文件和下載內容(如:雜誌、報紙和地圖應用),放在緩存目錄中。
  3. 臨時的資料應該放在<Application_Home>/tmp目錄下,雖然這些文件不會被備份到iCloud中,但當不繼續使用這些資料時,請記得去刪除這些資料,以免佔去用戶設備的空間。
  4. 使用"不要備份"屬性來指定那些需要保留在設備中的文件(即使是低存儲空間情況下)。那些能夠重新生成,但在低存儲空間時仍需保留,對應用正常運行有影響,或者用戶希望文件在離線時可用的文件,需要使用這個屬性。無論哪個目錄下的文件(包括Documents目錄),都可以使用這個屬性。這些文件不會被刪除,也不會包含在用戶的iCloud或iTunes備份中。由於這些文件一直佔用著用戶設備的存儲空間,應用有責任定期監控和刪除這些文件。 
ps:如何防止文件被備份到iCloud上,請參閱 Learn more
For more information read the iOS App Programming Guide.



其它相關資料:

iOS 5.0.1開始支持"do not back up"文件屬性,允許開發者明確地指定哪些文件應該被備份,哪些是本地緩存可以自動刪除,哪些文件不需要備份但不能刪除。此外,對目錄設置這個屬性,會阻止備份該目錄和目錄中的所有內容。

注意"do not back up"屬性只能用於iOS 5.0.1以後版本。之前版本的應用需要存儲數據到<Application_Home>/Library/Caches目錄才能避免被備份。由於老的系統忽略這個屬性,你需要確保應用在所有iOS版本中,都遵循上面的iOS Data Storage Guidelines。

數據處理分類
com.apple.MobileBackup文件屬性就是iOS 5.0.1引入的"do not back up"特性,用於指定文件或目錄不需要備份(不管在文件系統的甚麼位置)。通過使用這個新的文件屬性,並且將文件存放在指定的目錄下,文件可以分為以下四種數據類型:s.

關鍵數據
這些是用戶創建的數據,或其它不能重新生成的數據。應該存放在<Application_Home>/Documents目錄下,並且不應該標記為"do not backup"屬性。關鍵數據在低存儲空間時也會保留,而且會被iCloud或iTunes備份。

緩存數據
可以重新下載或生成的數據,而且沒有這些數據也不會妨礙用戶離線使用應用的功能。緩存數據應該保存在<Application_Home>/Library/Caches目錄下。緩存數據在設備低存儲空間時可能會被刪除,iTunes或iCloud不會對其進行備份。

臨時數據
應用需要寫到本地存儲,內部使用的臨時數據,但不需要長期保留使用。臨時數據應該保存在<Application_Home>/tmp目錄。系統可能會清空該目錄下的數據,iTunes或iCloud也不會對其進行備份。應用在不需要使用這些數據時,應該盡快地刪除臨時數據,以避免浪費用戶的存儲空間。

離線數據
可以下載,或重新創建,但用戶希望在離線時也能訪問這些數據。離線數據應該存放在<Application_Home>/Documents目錄或<Application_Home>/Library/Private Documents目錄,並標記為"do not backup"屬性。這兩個位置的數據在低存儲空間時都會保留,而"do not backup"屬性會阻止iTunes或iCloud備份。應用不再需要離線數據文件時,應該盡快刪除,以避免浪費用戶的存儲空間。ce.


設置Do Not Backup擴展屬性
注意:"do not backup"擴展屬性可以添加到任何文件或目錄,在舊版本的系統中也能夠設置。但舊系統仍然會備份這些文件,一旦設備更新到iOS 5.0.1,這些文件會被重新正確地配置。

使用下面方法來設置"do not back up"擴展屬性。當你創建不需要備份的文件或目錄時,向文件寫入數據,然後調用下面方法,並傳遞一個文件URL。

設置擴展屬性

 
#include <sys/xattr.h>
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
const char* filePath = [[URL path] fileSystemRepresentation];

const char* attrName = "com.apple.MobileBackup";
u_int8_t attrValue = 1;

int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
return result == 0;
}



As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

2012年9月15日 星期六

App Store Review Guidelines(中譯)

【環境:2012/09/15翻譯】

原文出處:App Review
說明:若有新版本請通知並加上,此篇文章為2012/09/15翻譯,翻譯的不好請見諒..給有需要參考的人參考,畢竟要玩遊戲,也必須先瞭解遊戲規則,不然功虧一潰,那還挺令人難過的。


Introduction
對於您將投入您的人力和時間去開發ios的應用程式,我們感到非常榮幸。無論是專業技術和財務上,此篇文章對於在數以萬計的開發者,都是非常有幫助的,我們希望能藉由此文章,順利幫助您加入這個成功的團隊。
apple團隊公佈的 App Store Review Guidelines 希望能帶領你快速的避開可能發生的問題和疑惑,加速批准您所提交的應用程式。

apple認為應用程式不同於書籍和音樂。若妳想批評宗教理念,或許妳應該去寫本真正的書。若你要討論性或者寫歌,或者醫藥的app。或許這有點繁瑣,但apple決定不允許這類型內容的app於app store上架。

請牢記下列原則,將會對你有所幫助:
  • 我們有很多孩子會來app store下載apps,而且除非父母們設置了家長管理(事實很多人不設置),否則孩子們是不受任何限制的。所以我們要關注孩子們。
  • 我們在app store中有超過350,000個apps。我們不需要任何差勁的app,若你的app不做任何有效的或者提供一些惡作劇娛樂性質的app (沒有提供任何持續性娛樂價值的app、譁眾取寵的app或者無聊的app),這將不被我們所接受。
  • 若你的app僅僅只是短時間內拼湊起來的應用程式,或者只是想將你的第一個練習的app放到商店中並於朋友間炫耀,在被apple審查拒絕後,請一定要停止這種行為。我們有大量認真的開發者,不希望自己有質量的app與一些業餘者的app為伍。
  • 我們將拒絕那些不論是內容或者行為都踰越界限的apps。或許妳會問,評斷的界線是?是的,就像是 Supreme Court Justice 曾說過:『我只有在當我看到時,我才會知道』。還有,我們相信當妳越線時,你自己也會知道。
  • 若你的app被拒絕時,我們將提供你一個管道去上訴,若妳發文抱怨我們,這將對你沒有任何實質上的幫助。
  • 若你企圖欺騙系統(例如:試著在審核過程中欺騙,偷取用戶資料,盜用其他開發者的作品,或者企圖操作排名系統,提升你app的知名度),你的app和開發者帳號均會被移除。
  • 此文件將被不斷的更新,因在任何時間內,新的app將產生新的規則,或許你的app可能帶來下一條新的規則。
最後,我們非常珍愛,且以你的作品為榮,為了你的作品,我們真心將平台做到全世界最好,在這裡你可以大展才華,且以此賺取利潤。
或許這些原則聽起來像個控制狂,或許是,但因為我們承諾我們的用戶,在apple的設備上確保他們的產品品質和最佳體驗,就像你也如此的希望。

Table of Contents
  1. 條款與細則
  2. 功能性
  3. 數據資料、評價級數和排行榜
  4. 定位系統
  5. 推撥通知
  6. 遊戲中心
  7. iAD(apple提供開發者放置廣告的平台)
  8. 商標和商業外觀
  9. 多媒體內容
  10. 用戶界面
  11. 購買和貨幣
  12. web頁面的收集和整合
  13. 損壞設備
  14. 人身攻擊
  15. 暴力
  16. 令人反感的內容
  17. 隱私
  18. 色情
  19. 宗教、文化和種族
  20. 競賽(賭博、抽獎和彩卷)
  21. 慈善機構和捐助
  22. 法律上所要求事項
1.條款和細則
作為一個app store的開發者,你受限於以下條款:
 Program License Agreement (PLA) Human Interface Guidelines (HIG) ,還有其他與apple簽訂的證書和協議。下列規則和範例,將幫助你的app獲得認可,而非修正或者取代其他簽訂的協議規定。
2.功能性
    1. 2.1 崩潰的程序將被拒絕。
    2. 2.2 存在明顯bug的app會被拒絕
    3. 2.3 不符合開發者描述的app會被拒絕
    4. 2.4 在審核的過程中,app的內容描述與包含未公開的且隱藏性的功能不一致,將被拒絕
    5. 2.5 app使用非公開的APIs將被拒絕
    6. 2.6 app讀取或寫入資料超出其指定的容器區域將被拒絕
    7. 2.7 app試圖以任何方式或者形式下載代碼,將被拒絕
    8. 2.8 app安裝或者執行其他可執行的代碼,將被拒絕
    9. 2.9 任何以 ”beta”、”demo”、”trial”,or ”test” 為名的版本,將被拒絕
    10. 2.10 iphone apps無須加任何修改的在ipad運行,於iphone解析度和兩倍的iphone 3GS解析度下
    11. 2.11 在app store中重複的app可能會被拒絕,特別是如果有很多的放屁、打嗝、手電筒和愛經的app
    12. 2.12 沒有用處的app,還有與簡單的web界面組合在一起的app,或者沒有提供任何持續性娛樂價值的app(譁眾取寵的app或者無聊的app),將被拒絕
    13. 2.13 僅為市場推廣或廣告的app,將被拒絕
    14. 2.14 意圖提供某種把戲或虛假的功能,並未清楚標示,將被拒絕
    15. 2.15 app大於20MB 將無法於 蜂巢式網路(3g) 下載(app store將會自動處理)
    16. 2.16 多任務的app只能使用下列行為去執行後台運行: VoIP,音頻播放,地理位置,任務記錄,本地提醒等。
    17. 2.17 app訪問web頁面,必須使用iOS WebKit Framework 和 WebKit Javascript
    18. 2.18 鼓勵酗酒、違法藥物,誘導未成年人飲酒、吸煙,將被拒絕
    19. 2.19 提供錯誤訊息或其他不准確的設備資料,將被拒絕
    20. 2.20 通過許多版本的類似應用對App Store造成干擾的開發者會被取消IDP身份。
    21. 2.21 僅僅是一首歌曲或者電影的app,應該提交到iTunes store。若唯一本書,則應提交到iBook store
    22. 2.22 於app中,隨意的透過定位或者某些設備,企圖限制用戶使用app,將被拒絕
    23. 2.23 app必須遵循 iOS Data Storage Guidelines(中譯) ,否則將被拒絕
    24. 2.24 在Newsstand(書報亭、報攤)提供的應用程序,必須符合附表1,第2和第3的DeveloperProgram許可協議,否則將被拒絕
3.數據資料、評價級數和排行榜
    1. 3.1 app中提到其他任意移動平台,將被拒絕
    2. 3.2 app中有 placeholder text 將被拒絕描述的功能就必須實現,如有些功能寫出來但還沒實現,或app跟描述有較大偏差
    3. 3.3 app中描述不相關的內容和功能,將被拒絕
    4. 3.4 app在iTunes Connect和device中顯示的名稱應該相似,否則會造成混淆
    5. 3.5 不同尺寸的icons 必須相似,否則會造成混淆
    6. 3.6 app的 app icons 和 screenshots 不遵守4+年齡級距,將被拒絕
    7. 3.7 app的類別和類型的選擇與其內容並不相關,將被拒絕
    8. 3.8 開發人員對於自己的app選擇適當的評級,不適當的評級,將被拒絕
    9. 3.9 開發人員對於自己的app選擇適當的關鍵字,不適當的關鍵字,將被拒絕
    10. 3.10 通過偽造,付費評價或其他非正規手段,獲取App Store中較好的評價與星級的開發者會被取消IDP身份。
    11. 3.11 任何提示用戶需重新啓動iOS device來安裝或運行的app,將被拒絕
    12. 3.12 app在提交審核過程中,所有涉及到的URL都要處於正常運行狀態,例如保密協議,相關支持頁面等。
4.定位系統
  1. 4.1 app並無通知用戶且獲得用戶同意下,收集、傳遞或者使用位置資料數據,將被拒絕
  2. 4.2 app使用 location-based 自動或自主去控制車輛、飛行器或其他裝置,將被拒絕
  3. 4.3 app使用 location-based 用於調度、車隊管理、緊急服務等,將被拒絕
  4. 4.4 位置資料只能用於app提供的直接相關功能或服務,或者有授權的廣告。
5.推撥通知
  1. 5.1 app提供推撥通知,但並非使用app所提供的api,將被拒絕。
  2. 5.2 app使用APN (Apple Push Notification) 伺服器,並無從apple獲取Push Application ID 的app,將被拒絕。
  3. 5.3 app寄送APN時並無取得用戶的允許,將被拒絕。
  4. 5.4 app利用APN寄送敏感的私人資料或者機密資訊,將被拒絕。
  5. 5.5 app利用APN寄送未經請求的訊息,或以發垃圾郵件、網路釣魚為目的APN,將被拒絕。
  6. 5.6 app不得利用APN寄送廣告、活動或任何形式的直接推廣方式。
  7. 5.7 app不可提供收費使用的APN。
  8. 5.8 過度使用APN服務,佔用網路頻寬或容量或通過APN大量佔用系統資源的app,將被拒絕。
  9. 5.9 利用APN傳送病毒、文件、電腦代碼或程式,可能損害或破壞APN伺服器正常運行的app,將被拒絕。
6.遊戲中心
  1. 6.1 向終端用戶或第三方展示Player ID的應用會被拒。
  2. 6.2 Player ID被用於Game Center條款款意外的用途的應用會被拒。
  3. 6.3 試圖通過Game Center反查,跟蹤,描述,關聯,發掘,收割,或利用Player ID,別名或其他信息的開發者會被取消IDP身份。
  4. 6.4 Game Center信息,例如Leaderboard得分,只能通過Game Center用於應用中。
  5. 6.5 使用Game Center發送主動消息,欺騙或干擾信息的應用會被拒。
  6. 6.6 使用Game Center過度佔用網絡帶寬或容量的應用會被拒。
  7. 6.7 傳輸病毒,文件,代碼或程序,導致破壞或擾亂正常的Game Center操作,的應用會被拒。
7.iAD
  1. 7.1 人為增加曝光次數或點擊次數,將被拒絕
  2. 7.2 含有空的廣告橫幅,將被拒絕
  3. 7.3 設計主要用來展示廣告的app,將被拒絕
8.商標和商業外觀
  1. 8.1 app必須以下遵守所有的條款和條件的解釋: Guidelines for Using Apple Trademarks and Copyrights and the Apple Trademark List
  2. 8.2 任何誤導或暗示Apple為該應用來源或提供商,或Apple以任何形式認可其質量或功能的應用會被拒。
  3. 8.3 出現任何與現存apple product或廣告議題相似或混淆的app,將被拒絕。
  4. 8.4 app名稱中出現錯誤的蘋果產品的拼寫(如,GPS for Iphone,iTunz),將被拒絕。
  5. 8.5 使用受保護的第三方資源(商標,版權,商業機密,以及其他私有內容),請提供一份文本形式的使用授權。
  6. 8.6 app經由Google Maps API獲得的google maps和google earth圖像,其品牌特徵和原本的內容均須保持不變且為明顯可見,任何覆蓋或者修改google標誌或版權所有人的識別,將被拒絕。
9.多媒體內容
  1. 9.1 app在不使用MediaPlayer framework的情況下,去存取音樂資料庫的媒體,將被拒絕
  2. 9.2 app使用者界面摹仿任何iPod界面,將被拒絕
  3. 9.3 通過蜂窩網絡傳輸的媒體音頻內容不得超過5MB或超過5分鐘。
  4. 9.4 通過蜂窩網絡傳輸超過10分鐘的媒體視頻內容,必須使用HTTP Live Streaming,並包含一條基線64kbps的音頻HTTP Live stream。
10.用戶界面
  1. 10.1 app必須遵守所有已解釋的條款和條件: Apple iOS Human Interface Guidelines
  2. 10.2 app外觀和於iPhone上自帶的app相似,包含App Store, iTunes Store, and iBookstore,將被拒絕
  3. 10.3 不按照Apple iOS Human Interface Guidelines中的描述正確使用系統控件的應用會被拒。
  4. 10.4 試圖創建備用桌面/主屏環境或模擬multi-app widget經驗的app,將被拒絕。
  5. 10.5 修改硬件開關標準功能(例如:音量,震動)的應用會被拒。
  6. 10.6 蘋果公司和我們的用戶都非常期待app擁有簡單、精緻、富創造性和深思熟慮的用戶體驗界面,做到這些必須付出非常大的努力,但卻很值得。apple對於此設置了很高的門檻。若你的使用者介面過於複雜或者不夠好,將被拒絕。
11.購買和貨幣
  1. 11.1 app以透過其他方法,非經由app store以外的方法解鎖或開啓額外特徵或功能,將被拒絕。
  2. 11.2 app透過非 In App Purchase API(IAP) 的功能購買內容、功能或者服務,將被拒絕。
  3. 11.3 app透過IAP購買與應用程式無關的實體商品、產品和服務,將被拒絕。
  4. 11.4 app透過IAP購買信貸或其他貨幣,必須在app中消費使用。
  5. 11.5 app透過IAP購買已過期的信貸或其他貨幣,將被拒絕
  6. 11.6 使用IAP收費訂閱的內容至少要在7天內有效,而且允許在所有iOS設備間共享。
  7. 11.7 用到IAP收費項目的應用必須分派到正確的收費類目中。
  8. 11.8 使用IAP向用戶收費以獲取iOS內建功能(如攝像頭,陀螺儀)的應用會被拒。
  9. 11.9 app含有『出租』內容或會在限定時間內到期的服務,將被拒絕。
  10. 11.10 保險類的app必須是免費的,須遵守發佈地區的法律,且不能使用IAP。
  11. 11.11 一般來說,越貴的app,審核就會越仔細。
  12. 11.12 提供收費訂閱的app必須使用IAP,Apple將會按照Developer Program License Agreement中約定的70/30的比例與開發者分賬。
  13. 11.13 app中如果提供了IAP以外的收費或訂閱機制,如:“buy”按鈕,跳轉到一個購買電子書的web頁面,將被拒絕。
  14. 11.14 app能閱讀和播放已有授權的內容(如:雜誌、新聞、書籍、影音),這些內容可容許非由此app購買或訂閱,只要那些須購買的授權內容並非經由app中的按鈕或者外部連結等方法。蘋果公司將不接受於app外訂閱或購買的授權項目任何部份的收入。
12.web界面的收集與整合
  1. 12.1 從Apple的頁面(如:apple.com, iTunes Store, App Store, iTunes Connect, Apple Developer Programs, 等)抓取內容,或利用Apple頁面和服務中的內容進行排名,將被拒絕。
  2. 12.2 應用可以使用授權的Apple RSS,例如iTunes Store RSS。
  3. 12.3 簡單的web頁面裁剪,內容整合或鏈接收集,將被拒絕。
13.損壞設備
  1. 13.1 app鼓勵用戶去使apple device損壞的行為,將被拒絕
  2. 13.2 快速耗光設備電力或產生大量熱量,將被拒絕。
14.個人攻擊
  1. 14.1 任何涉嫌誹謗,侮辱,狹隘內容或打擊個人或團體,將被拒絕。
  2. 14.2 職業為政治諷刺家和幽默作家不受該條款約束。
15.暴力
  1. 15.1 展示人或動物被殺戮,致殘,槍擊,針刺或其他傷害的真實圖片,將被拒絕。
  2. 15.2 描述暴力或虐待兒童,將被拒絕。
  3. 15.3 遊戲中的“敵人”不能單獨的設定為某特定比賽,文化,真實的政府或組織,或者任何現實事物。
  4. 15.4 含有以鼓勵非法或魯莽使用的方式描述真實武器,將被拒絕。
  5. 15.5 帶有俄羅斯輪盤的賭博遊戲,將被拒絕。
16.不良內容
  1. 16.1 app呈現過於令人反感或粗糙的內容,將被拒絕。
  2. 16.2 設計來惹怒或惡心用戶的應用會被拒。
17.隱私
  1. 17.1 app不得在用戶未經許可的情況下傳送用戶資料,且必須提供用戶將何處及如何被使用這些資訊。
  2. 17.2 app因某些功能而要求用戶分享個資,如:email、地址、生日,將被拒絕。
  3. 17.3 專門收集未成年人的資料,將被拒絕。
18.色情
  1. 18.1 app含有色情內容,韋氏詞典中有“定義明確的描述或顯示性器官或活動,旨在刺激,而不是審美​​情感和情緒的色情”,將被拒絕。
  2. 18.2 app中經常有用戶提供色情內容(例如:Chat Roulette apps),將被拒絕。
19.宗教、文化與總族
  1. 19.1 帶有對一種信仰,文化或種族進行誹謗,侮辱,狹隘,或以他們為目標的暴力或傷害內容的應用會被拒。
  2. 19.2 應用若帶有或應用對一種信仰的文字描述,那麼這個引用或翻譯必須是精確,無歧義的。注釋內容可以具有教育性,信息性,但不可以為煽動性。
20.競賽(賭博、抽獎和彩卷)
  1. 20.1 賭博和競賽必須是由應用開發者或所有公司發起的。
  2. 20.2 應用中必須展示賭博和競賽的官方條款,並聲明Apple不是發起者,並且在任何情況下與此事無關。
  3. 20.3 開發者必須經過法律允許才能上線一款抽奬應用,而且抽奬應用必須具備以下要素:報酬,機會,和奬金。
  4. 20.4 直接允許用戶在應用中購買彩票或抽奬的應用會被拒。
21.慈善機構與捐助
  1. 21.1 含有向已認證的慈善機構捐助功能的應用必須是免費的。
  2. 21.2 慈善募捐必須通過短信息或通過Safari訪問web頁面完成。
22.法律上所要求事項
  1. 22.1 應用必須遵守所有發佈地區當地法律。開發者有義務瞭解和遵守各地的法律。
  2. 22.2 任何帶有虛假,欺詐和帶有歧義的描述的應用會被拒。
  3. 22.3  任何召集,推銷和股東犯罪和魯莽行為的應用會被拒。
  4. 22.4 非法文件共享應用會被拒。
  5. 22.5 任何設計用來非法賭博,包括算牌,的應用會被拒。
  6. 22.6 提供匿名電話或短消息/彩信功能的應用會被拒。
  7. 22.7 任何開發暗中獲取用戶密碼和私有數據的開發者會被取消IDP身份。
  8. 22.8 任何非法律執行部門發佈的帶有DUI檢查點信息,或鼓勵且協助酒後駕車的應用會被拒。
Living document
此Guidelines代表我們盡最大的努力,分享我們如何審查提交到app store的app,我們希望這文件對於您app的開發和上傳審核是一個有用的指南。
這是一個會變更的文件(動態文檔),因新的應用程式會有新的狀況,此文件將會定期更新,以反應這些新的變化狀況。
感謝您致力於開發iOS。雖然這份文檔是告訴開發者什麼不該越矩的一份艱鉅列表,但也同時謹記該做的那份更短的列表。
更重要的是,加入我們並試著帶給用戶驚奇和喜悅。展示世界最具創意的方式給用戶,並讓用戶體驗前所未有的生活方式。
根據我們的經驗,用戶真的會對功能和界面的改善有所反應。
好事多磨,給予用戶超出他們所期待的,帶給用戶前所未有的體驗。我們蓄勢待發的等待您隨時需要我們協助的時候。
© Apple, 2012



As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。