㈠ 如何為iOS設備開發通用的應用程序
當首次引進iphone的時候,開發人員並沒有關注於創建一個簡單的代碼庫以使能夠運行在多重設備上。沒有其它的設備。在iPodTouch進入市場的時候,界面-尺寸和解析度-幾乎是等同於第一代的iPhone。開發、編譯以及發布與這兩個設備兼容的通用應用程序是非常簡單的。如今,開發一套能夠在所有設備上運行的簡單應用程序並不會太難。
過程步驟AppleXcode使得通用二進制代碼的編碼變得很簡單,但沒有實現自動化。需要一點附加的工作-規劃和編碼階段均需要-以使得生成可擴張的通用應用程序。開發一個通用的應用程序的第一步是從設備菜單中選擇通用選項。Xcode會為iPhone、iPod以及iPad設備使用代碼創建一項目。創建了兩個故事板文件並將其附加到通用項目中。其中一個故事板文件支持iPhone和iPod設備的屏幕尺寸和解析度,而另外一個故事板文件要獨屬於設備產品中的iPad家族系列。
圖A除了設備-獨有的故事板文件之外,一個通用的項目會包括兩個單獨的區域用於單獨地控制每個類型設備的配置設置。被支持的方向、應用程序圖標以及登錄圖片由在項目設置下面的概要標簽的不同部分內進行管理。
圖B圖C圖D正如您所看到的,Xcode具有用於開發通用應用程序的內置的支持。如果開發人員的意圖是維持所有設備的一般體驗,那麼只需遵循在每個故事板上的相同的設計和流型,編譯然後運行即可。然而如果有必要在每一個設備上具有不同的體驗,就會需要額外的編碼。
在iOS編程指南的高級應用程序技巧部分,Apple使用了開發在iPad設備中的橫向和在iPhone以及iPod設備中的縱向上支持登錄的通用應用程序的例子。Info.plist是使用元數據控制iOS應用程序某些方面的非常有效的方式。將特定鍵附加到Info.plist文件上是控制代碼庫之外的參數的一種簡單又可擴展的方法。可以參考一下列表鍵引用,以獲得在Info.plist文件中可以定義的參數的一覽表。
在Info.plist文件內部的一組名稱/數值結構如下:
keyUserInterfaceOrientation//string該key標簽識別屬性,string標簽附上數值。在上面的例子中,由我們的通用應用程序支持的每一個設備都將以橫向模式啟動。為了針對一個特定的設備,我們將這三個設備類型的其中一個附到鍵上。舉例來說,如果我們需要讓iPhone設備以縱向模式啟動,我們應當將以下的代碼加到Info.plist文件中:
keyUserInterfaceOrientation-iphone//string可接受值為iphone,ipad以及ipod。
越過界面有時候需要創建條件代碼路徑以支持設備-獨有的功能。Apple包含了用於容易地測定當前設備類型的宏。UI用戶界面慣用語宏是UIKit框架的一部分,可供所有的應用程序使用。如果該設備是iPad,那麼從該宏中返回的值將會是UIUserInterfaceIdiomPad。如果該設備是iPhone或是iPodTouch,返回的值則是UIUserInterfaceIdiomPhone。
If==UIUserInterfacePhone){//PlaceiPhone/iPodspecificcodehere...}else{//PlaceiPad-specificcodehere...}開發人員一直在不
2012經典語錄
斷地尋找使開發iOS應用程序所需要的代碼數量最小化的方法。其中一個方法當然是維護用於再使用的類別、方法和函數的程序庫。考慮在通用應用程序中用到這些類別的可能性是非常重要的。考慮到這一點,您應當在必要時使用條件代碼路徑開發類別。
最終想法開發通用應用程序有利有弊。從維護和支持的角度來看,更易於管理代碼庫。同時,一個通用的應用程序方法意味著單一發行-升級和補丁-同時覆蓋所有的設備。然而商業需求可能會推翻開發和發布通用應用程序的可行性。有時候對iPhone應用程序和為iPad發布的相同應用程序採取不同的價格點可能會更合適。目前,應用程序商店對每一個應用程序僅支持一種價格。
㈡ 初次使用七牛雲存儲,請問這是什麼問題
使用七牛雲存儲解決ios7.1的app部署問題
一.問題描述
開發完ios版本的app。需要將.ipa文件和.plist文件打包上傳,供用戶下載,在線安裝。用戶安裝過程簡單描述如下:
首先通過手機瀏覽器safari或者掃描二維碼獲取到下載.plist的地址。然後瀏覽器會自動跳轉到這個地址,下載、讀取.plist。(用戶跳轉的地址是.plist的下載地址。)這個過程,顯然使用http協議來下載.plist文件。最後,iphone通過讀取.plist文件中配置的.ipa下載地址,來安裝.ipa文件,來完成ios版本的app。
舉例,網站首頁中,下載.plist的代碼:
<ahref="itms-services://?action=download-manifest&url=http://www.ekwing.com/ekwing.plist"class="mobile-ios"></a>
但是,蘋果從ios7.1開始,用戶安裝app,需要使用https協議,來下載plist文件。也就說,在安裝app的第一步,下載.plist文件,需要使用https協議。https協議如下:
這里不詳細描述https協議。HTTPS的信任繼承基於預先安裝在瀏覽器中的證書頒發機構(如VeriSign、Microsoft等)(意即「我信任證書頒發機構告訴我應該信任的」)。因此,一個到某網站的HTTPS連接可被信任,當且僅當:
1. 用戶相信他們的瀏覽器正確實現了HTTPS且安裝了正確的證書頒發機構;
2. 用戶相信證書頒發機構僅信任合法的網站;
3. 被訪問的網站提供了一個有效的證書,意即,它是由一個被信任的證書頒發機構簽發的(大部分瀏覽器會對無效的證書發出警告);
4. 該證書正確地驗證了被訪問的網站(如,訪問https://example時收到了給「Example Inc.」而不是其它組織的證書);
5. 或者互聯網上相關的節點是值得信任的,或者用戶相信本協議的加密層(TLS或SSL)不能被竊聽者破壞。
簡單描述,用戶使用https來下載.plist文件。則需要網站支持https協議。支持https協議,除了服務端做一些配置外,還需要申請一個數據簽名證書。這個簽名證書是由簽發機構簽發的。不能自己配置生成。而申請簽名證書需要一段時間。而我們的目的只是希望能夠讓我們的app被用戶正常下載安裝即可。
二.問題分析
解決該問題,就2個方法:
1.自己網站服務上配置https服務,並購買數字簽名證書以保證每種類型及其不同版本的瀏覽器能夠安裝了證書頒發機構頒發的,我們購買的數據簽名證書。時間開銷7天左右。
2.將app文件託管到支持https協議的第三方伺服器上。
三.解決問題
使用七牛雲存儲,可以快速,免費解決這個問題。只需要到http://www.qiniu.com/注冊一個賬號。然後,開通https協議的域名即可。最後將.plist和.ipa文件上傳到七牛雲存儲上即可。操作過程,非常簡單。只要注意幾點:
1. 開通一個http協議的域名,和一個https協議的域名。
如上圖。後綴名是.qiniudn.com的是支持http協議的域名。後綴名是.qbox.me的是支持https協議的域名。上傳.plist、.ipa到七牛雲存儲。
2. 修改下載.plist文件的地址,修改.plist文件內容。
網站首頁,下載.plist地址改成上傳到七牛雲存儲上的支持https協議(域名後綴名是.qbox.me)的下載鏈接地址。
<ahref="itms-services://?action=download-manifest&url=https://dn-ekwing.qbox.me/ekwing.plist"class="mobile-ios"></a>
3. 將.plist文件內容中,.ipa的下載地址,改成七牛雲存儲上的支持http協議(後綴名是.qiniudn.com)
<string>http://ekwing.qiniudn.com/ekwing.ipa</string>
4. 總結,.plist的下載用https協議,而.ipa的下載用http協議即可。修改完後,就可應用ios6、ios7、ios7.1進行測試了。
四. 感謝七牛雲存儲
感謝七牛運存儲提供免費服務。不過,目前防盜鏈還不能用。希望能夠加上防盜鏈功能。
五. 因ios7.1安裝app,需要用https協議而提示的錯誤
無法安裝應用程序因為證書無效
<Warning>:[ERROR]: Cannot load non-https manifest URL:http://192.168.1.22/ekwing.plist
<Warning>:Could not load download manifest with underlying error: ErrorDomain=SSErrorDomain Code=128 "無法連接" UserInfo=0x1669d990 {NSLocalizedDescription=無法連接}
<Warning>: NSURLConnection/CFURLConnection HTTP loadfailed (kCFStreamErrorDomainSSL, -9813)
<Warning>: Could not load download manifest withunderlying error: Error Domain=NSURLErrorDomain Code=-1202 "無法連接到商店" UserInfo=0x166bc640{NSLocalizedDescription=無法連接到商店,NSLocalizedRecoverySuggestion=您仍要連接此伺服器嗎?,NSLocalizedFailureReason=無法建立安全連接。請檢查「日期與時間」設置。,NSErrorFailingURLStringKey=https://192.168.1.22/ekwing.plist,NSUnderlyingError=0x165b37e0 "此伺服器的證書無效。您可能正在連接到一個偽裝成「192.168.1.22」的伺服器,這會威脅到您的機密信息的安全。",=<SecTrustRef:0x166b83e0>,NSErrorFailingURLKey=https://192.168.1.22/ekwing.plist}