在這一章節,你將學會如何在真機上運行你的App,你將學會如何創建證書、注冊你的測試設備,設置你的App ID和provisioning profiles。這章節將介紹和練習部分合二為一,所以在看這一章節時,要確保打開Xcode,邊看邊操作。
真機上測試App需要注冊開發者賬戶(Apple Developer account)(現在蘋果已經允許開發者沒有帳號也能在真機上運行了,作者寫這本書的時候,蘋果的政策還沒有開放給所有人。),將App發布到App Store上也需要這個賬戶。Apple Developer Program為開發者提供了最新版本的iOS和OSX,注冊開發者帳號可以觀看WWDC中的視頻。WWDC全稱Worldwide Developer Conference,每年在San Francisco舉行。蘋果公司會在WWDC上發布新的產品和軟件,注冊開發者還能獲得專門的技術支持,每年需要繳納99美元,這將是你一筆劃算的投資。
可以用你的名字或者公司名稱來注冊開發者賬戶,注冊在你個人名下就是個人開發者賬戶,注冊在公司名下需要公司的鄧白氏編碼和可證明公司的合法文件。鄧白氏編碼是你公司獨一無二的編碼,你可以在[https://developer.apple.com/support/ios/ D-U-N-S.php](https://developer.apple.com/support/ios/ D-U-N-S.php)這個網站上了解更多的信息。在大多數情況下,注冊成個人開發者會更簡單一些,當你需要的時候,可以把個人開發者賬戶轉換成公司賬戶。更多信息,請見[https:// developer.apple.com/programs/]( https:// developer.apple.com/programs/)。
Page 257
完成注冊后,就可以進入Member Center。Member Center中提供了蘋果開發者需要的工具、更新,在[https://developer.apple.com/member center/](https://developer.apple.com/member center/)注冊登錄Member Center。Member Center中有部分叫做Certifications, Identifiers, and Pro‐files,這部分就是Provisioning Portal,控制管理在你開發過程中需要使用的設備和profiles。
用瀏覽器打開http://developer.apple.com(見圖10-1)
點擊右上角的Member Center,輸入你的蘋果開發者帳號密碼,然后登錄(見圖10-2)。
Page 258 | Chapter 10: Running on a Device
點擊“Certifications, Identifiers and Profiles”這個鏈接,接著點擊“Certificates”鏈接。
Provisioning Portal有四部分:Certificates、Identifiers、Devices、Profiles,把這頁加入收藏夾,因為我們以后會經常用到這個頁面。
Certificates
第一部分是Certificates.在你運行App時,Certificates用來確認你的身份。唯一的certificate就像是你的簽名,這樣能夠限制其他人在未經你允許的情況下向App Store提交App。
打開Certificate部分后,你會看到一個銀色入口(見圖10-3)。左邊是一排選項,Pending表示你目前正在使用的一些certificate,Development certificates表示用于本地電腦上的證書,Production certificates是用在App Store上的。
Certificates | Page 259
點擊右上角的加號按鈕,選擇iOS App Development,然后點擊Continue繼續。接著會出現
向導,讓你想創建的證書的類型(見圖10-4)。選擇iOS App Development box,點擊Continue。向導接下來會讓你創建CSR(Certificate Signing Request),CSR是創建Certificate的一個條件。
Page 260 | Chapter 10: Running on a Device
想要創建CSR,我們首先要打開你Mac中的Keychain Access這個應用程序。點擊Mac屏幕右上角的Spotlight搜索圖標,輸入keychain Access,然后點擊搜索出來的第一個選項。Keychain Access啟動后會列出你當前電腦上所有的certificates。點擊頂部菜單欄中的Keychain Access,然后選擇Certificate Assistant --> Request a Certificate From a Certificate Authority(見圖10-5)。
接著屏幕上會出現圖10-6的向導。填寫email和common name,CA Email address這一欄空著,然后勾選“Saved to disk”,點擊Continue。選擇存放證書的文件夾,然后保存。現在回到瀏覽器繼續Provisioning Portal。
Certificates | Page 261
創建好CSR后,點擊瀏覽器中Continue按鈕(見圖10-7)。
接下來需要你上傳CSR文件。點擊Choose File按鈕,找到.certSigningRequest文件(見圖10-8)。
Page 262 | Chapter 10: Running on a Device
接下來點擊Generate,向導開始創建證書。證書創建好后,會出現一個Download按鈕(見圖10-9)。點擊Download下載證書,開發Downloads文件夾,雙擊剛剛下載的ios_development.cer文件,這樣就把文件添加到你的keychain中了。
Certificates | Page 263
再次打開瀏覽器,點擊左邊的All選項。用于App Store的第二個證書也需要創建。再次點擊右上角的加號按鈕,選擇“App Store and Ad Hoc”點擊Continue(見圖10-10)。CSR創建界面這時會彈出來,這一次,你用上次已經創建好的CSR就可以了。點擊Continue。
點擊Choose File按鈕選擇之前創建好的.certSigningRequest,點擊Generate按鈕。出現Download下載按鈕,點擊Download下載新的證書(見圖10-11)。雙擊*ios_distribution.cer
*文件即可添加到keychain中。然后再次打開瀏覽器。
Page 264 | Chapter 10: Running on a Device
Identifiers
Provisioning Portal的第二部分是Identifiers,在Certificates下方。Identifiers是用來管理App的ID的。有點類似美國人的社保號,每個App都有自己獨一無二的App ID。
要創建一個App ID,我們首先要左邊的側邊欄中點擊App ID,然后點擊右上角的加號按鈕,出現創建App ID的界面(見圖10-12)。Name一欄中輸入App ID Selfie,不要使用下方列出的特殊符號。App ID Prefix一欄空著,勾選Explicit App ID。Bundle ID這部分使用部分倒序的方式書寫,就像是在瀏覽器地址欄中輸入網址,只不過順序是相反的。不用使用圖片中的Bundle ID,例子中的Bundle ID是無效的。輸入你自己的Bundle ID,確保使用以下格式:com.domain.app(例如:com.johnsmith.selfieapp)。
Identifiers | Page 265
Bundle ID會進入Xcode中,當你向App Store提交App時,會核對Bundle ID。App Services,你可以為你的應用添加格外的服務。點擊Continue。需要你再次確認App ID,如果各項都正確點擊Submit。這樣,App ID和Bundle ID都創建完成了(見圖10-13)。
Page 266 | Chapter 10: Running on a Device
Devices
Provisioning Portal的第三部分是Devices。不能隨筆拿個iOS設備就來真機測試你的應用,測試機需要注冊。開發者可以每年注冊最多100臺測試設備,如果這個設備被移除了,就再也不能添加回來了。Devices部分包括了所有可以使用開發者賬戶的設備,我們使用一串唯一的串碼UDID來關聯設備。
點擊Devices下方的All,然后點擊右上角的加號按鈕。
我們需要獲取設備的UDID(見圖10-14),獲取UDID的方法是,先把設備鏈接到Mac上,運行Xcode,設備連接上后,打開Xcode,選擇頂部菜單Window --> Devices,出現設備窗口,從左側欄中選擇iOS設備,這時iOS設備上會彈出是否信任這臺電腦(Trust This Computer)的提示,點擊信任(Trust)。UDID就會在Identifier后面,復制UDID,然后打開瀏覽器。
把UDID粘貼到輸入框中,給這個設備命名(見圖10-14),點擊Continue。
Devices | Page 267
Profiles
一旦你的設備已經激活了開發者模式且添加到了Devices中,你就可以創建provisioning profile了。provisioning file列舉出哪些設備可以運行你的App。把provisioning profile添加到Xcode,然后檢查此設備是否授權運行App,provisioning profile用于本地開發和App Store。然而,App Store的provisioning profile不限于具體的設備。
點擊Provisioning Profiles下方的All,接著點擊右上角的加號按鈕。
選擇iOS App Development,點擊Continue(見圖10-15)。Development用來在你電腦上運行App,Distribution是預留你的App提交到應用市場或者群體測試。
接下來,從下拉菜單中選擇你的應用的 App ID,點擊Continue(見圖10-16)。選擇你要使用此provisioning profile的證書,大部分情況下,你只需要一個可用證書即可。選擇你的證書然后點擊Continue。
Page 268 | Chapter 10: Running on a Device
接下來,會出現一個你賬戶下授權設備清單(見圖10-17)。選擇你想要測試應用的設備。
最后,使用projectNameDev或projectNameAppStore格式來命名profile name(見圖10-18)(例如:MySelfieAppDev)。使用這種格式命名,可以在Xcode中更容易找到provisioning profile。點擊Generate,然后下載profile。
Profiles | Page 269
打開瀏覽器,點擊Provisioning Profile下方的All,接著點擊右上角的加號按鈕。
選擇App Store點擊Continue。從下拉菜單中選擇App的App ID,點擊Continue。選擇證書,點擊Continue。命名profile(例如:MySelfieAppStore),然后點擊Generate。
下載profile,然后去文件夾中打開你剛剛下載的provisioning profile。會以.mobileprovision結尾的兩個profile(見圖10-19)(MySelfieAppDev.mobileprovision和MySelfieAppStore.mobileprovision)。雙擊這兩個profile即可添加到Xcode,添加成功后,就可以在工程中看到這兩個文件了。
Page 270 | Chapter 10: Running on a Device
打開Xcode工程,點擊Project Navigator中的工程名字,Editor中會顯示出工程的詳細信息。在Team里的下拉菜單中選擇Add an Account。登錄你開發者帳號和密碼,接著點擊Add(見圖10-20)。
Profiles | Page 271
關閉Accounts對話框,回到工程詳細信息中來,點擊上方名為Info的tab按鈕,清空Bundle Identifier,然后輸入上創建App ID時輸入的倒序Bundle ID(例如:com.johnsmith.selfieapp)。
接著選擇Build Settings,滑到Code Signing區域,在Code Signing Identity下方,Debug一欄選擇iPhone Developer:你的名字。確保下方所有的iOS SDK都是同樣的名字。Release一欄選擇iPhone Distribution:你的名字。確保所有的iOS SDK都是同樣的名字(見圖10-21)。
點擊上方General這個tab選項,確認bundle和團隊信息是否正確無誤。
打開瀏覽器,到AppSchool下載App icons(圖10-22)。(這個網址我一直打不開,我也不知道咋回事,一開始以為是被墻了,后來覺得可能是網站已經關閉了吧)
Profiles | Page 273
打開存放icons的文件夾,然后打開Xcode,把文件夾中的圖標拖動到Xcode中的Images.xcassets里。
現在,你可以在真機上運行你的程序了,把你的iOS設備連接到Mac上,點擊Xcode頂部iOS Simulator下拉菜單,選擇iOS device,點擊Play按鈕(Run)。
如果你在真機上運行我們之前講解的小應用Selfie,你可能會看到Xcode的警告“process launch failed: Security”,這是第一次運行時的警告,打開你的設備(iPhone或iPod等等),點擊Trust from the App Developer,接著App會向你獲取使用攝像頭的權限。點擊Home鍵,回到桌面,你看會看App的圖標已經顯示在桌面上了。
祝賀你,現在,你已經成功地在真機上運行應用了。
如果你收到了錯誤或者警告,不要擔心,熟能生巧,到網站上下載源碼(這個網站可能廢掉了),對比學習,多練習幾次,直到成功~
Profiles | Page 273