- 打開 Xcode, 選 File - New - Project 照下圖選取, 按 Next

取一個專案名稱, 按 Next

專案存放位置, 預設在我的文件, 直接按 Create (它會用您取的專案名稱建一個資料夾)

- 中間往下捲一點, Deployment Info 可以設定手機畫面要不要旋轉, 若不要旋轉只勾第一個 Portrait 就好

選左邊 PROJECT 下方的專案名稱, Deployment Target 是 App 要向下相容的 ios 版本

- 左邊選 Main StoryBoard, 右上角點一下"+", 找到 WebKit View 用滑鼠拉到 Storyboard 裡

點右上方有個三角形的圖示, Arrange 下拉選取填滿水平方向, 再一次選填滿垂直方向

此時 WebKit View 已擴展到整個手機畫面, 但其實邊界還是有空隙
找到 Storyboard 視窗最右下角有一個三角形圖示, 按一下選 Reset to Suggested Constraints

- 點右上方新增視窗圖示, 左邊會多一個視窗, 內容一樣是 Main StoryBoard, 點一下它上方 Main 改選 ViewController 主程式

左邊會載入 ViewController.swift 檔, 一手按住 Control 鍵, 一手用滑鼠將 WebKit View 拖曳到左邊 ViewController 放開
出現一個小視窗, 取名 webView 再按 Connect 鈕, 最後關閉左視窗

- 將 App 的圖示複製到專案資料夾裡的 Assets.xcassets/AppIcon.appiconset 資料夾即可(注意, 包括 json 檔一起, 覆蓋原檔)
選 Assets 再選 Appicon 可以看到 App 圖示, 若有尺寸不對, 該圖示右側會出現一個黃色小三角形警告

- 因為安全理由 WebKit View 限制只能顯示 https:// 開頭的網頁, 如果要顯示一般 http:// 開頭的網頁必須設定如下:
左邊選 Info.plist 右邊空白處按滑鼠右鍵選 Add Row, 選 App Transport Security Settings
再在新增的 Key 右方按加號, 然後選 Allow Arbitrary Loads, 然後將其右邊 "NO" 改為 "YES"

- 綁定 URL Scheme: (此例即為 kids://)

- 從現有的 app 將 ViewController.swift 內容整個複製過來, 並修改包覆網址
點 File - Save 存檔, 然後點 File - Close Project 關閉專案(或直接關閉 Xcode 也可以)

- 登入 Firebase 後控台新增一個專案, 或從現有的專案新增應用程式也可以
此例中, 我用 Android Studio 推播的同一專案選"新增應用程式", 選 iOS

輸入其 Bundle ID(即套件名稱), 按"註冊應用程式"

下載 GoogleService-Info.plist 先存起來(之後再從此專案裡下載也可以), 按繼續, 後面按繼續、下一步、前往控制台即可

- 將下載的 GoogleService-Info.plist 放到 Xcode 專案資料夾裡(跟 .xcodeProj 檔在一起)

打開終端機, 切進到專案資料夾裡, 輸入 pod init 該資料夾中會出現一個檔 Podfile
用文字編輯器在其中加入下列兩行, 然後存檔
pod 'Firebase/Analytics'
pod 'Firebase/Messaging'


回到終端機, 輸入 pod install 完成後資料夾中會產生一個 .xcworkspace 檔, 對它點兩下, Xcode 會將它打開

在左邊任一檔案按滑鼠右鍵, 選 Add Files to "xxx"...
選 GoogleService-Info.plist 加進專案裡


在專案設定的 General 頁 Display name 檢查"中文名稱"(最新版 Xcode 有時這裡中文會消失), 分類要不要選都可以

- 回到 Apple 開發者後台, 選擇 Identifiers, 再選右邊加號


選 App IDS 再按 Continue

選 App 再按 Continue

輸入 App 名稱, Bundle ID, 往下捲 勾選 Push Notifications 再按 Continue, Register

- 左邊點 Profiles , 再點右邊加號

選 Distribution 下方的 App Store, 按 Continue

下拉選單選取 App, 按 Continue

選開發者帳戶的電子憑證, 再按 Continue (電子憑證產生流程按這裡)

取個名稱, 按 Generate

按 Download 下載 Profile 檔放到桌面, 點兩下打開, Xcode 會將它加進專案裡

- 專案設定選 Signing & Capabilities 頁, 如果看到畫面中有紅色或黃色警告, 請從功能表選 Xcode - Settings...
在彈出的視窗中選 Accounts 頁, 登入開發者帳戶, 如果是灰色則略過此步驟

點右上方加號, 找到 Push Notification 點兩下

再點一次右上方加號, 找到 Background Modes 點兩下

將 Background Modes 的 Background fetch 和 Remote notifications 勾起來

- 到 Firebase 後控台點左上方齒輪圖案選"專案設定", 再點"雲端通訊"

往下捲, 找到套件名稱, 在"APN 驗證金鑰"右邊按"上傳" (APN 金鑰製作流程點這裡)

輸入金鑰ID及團隊代號 (團隊代號看這裡)

- 到 Xcode 從現有的 App 複製 AppDelegate.swift 及 SceneDelegate.swift 兩個檔的內容, 不需修改
如果要安裝在實機, 只要用線連接起來, 模擬器那邊就會出現你的 iPhone/iPad, 按 Play 就會安裝並執行
然後確定模擬器選擇 "Any iOS Device(arm64)", 再選 Product - Build
再選 Product - Archives, 稍待片刻出現一個視窗, 選右邊 Distribute App

選 Next

選 Export, 再按 Next

後面都按預設按鈕 Next 即可, 最後一步存到我的文件底下, 就可得到 .ipa 檔用於上傳審核


- 回到 Apple 開發者後台, 選擇 Apps, 點"+"號 - 新的 App, 然後照下圖填寫

裡面有四頁表單必須填寫, 準備提交、App 資訊、定價與供應狀況、App 隱私權
- 準備提交: 截圖 iPhone 6.5 吋用模擬器 iPhone 11 Pro Max, iPhone 6.5 吋用模擬器 iPhone 8 Plus, iPad 兩個都用模擬器 iPad Pro(12.9")
必填欄位描述、關鍵字、支援URL(填官網即可)、版權(例: 2023偉德仕幼兒園)、試用帳密、聯絡人姓名電話信箱
從 Mac 的 Transporter 將上一步驟最後編譯的 ipa 檔上傳到 Apple


幾分鐘後會有 E-mail 通知 ipa 處理完畢, 此時重新整理開發者後台頁面, 依下列圖片點選




- App 資訊: 主要類別必選, 內容版權選"否,我的 App 未包含、顯示或存取第三方內容"
年齡分級全部都選"無", 第二頁全部選"否", 然後按"完成"即可
- 定價與供應狀況: 價格 0.00 USD, 然後按下一步、下一步、確認
供應狀況選"所有國家或地區", 按下一步、確認
- App 隱私權: 將隱私權政策網址貼上, 再按下方"立即開始", 選"否,我們不會從這個 App 收集資料", 儲存
最後按一下右方"發佈"鈕
回到準備提交, 按右上方"新增以供審查"即可, 若有必填欄位沒填的話, 它會提示
- 上架成功後, 若要暫時下架, 選"定價與供應狀況" - 供應狀況選"停止銷售" - "儲存"
- 每隔三年, Apple 會發 E-mail 通知要更新版本, 編譯新版本要注意以下事項


- 前一版本的資料會自動帶過來, 檢查試用帳密能否登入?
登入檢查內容頁面與截圖是否相符, 不符的話要重新用模擬器截圖
- 準備提交頁會多一欄"新功能"是必填, App 沒有新功能的話可以填"bug fixed"或"support ios xx"之類
- Xcode 開啟專案, 版本號也要加 0.1 以相符合, build 也要至少 +1
- 2023年10月之前做的 App 還沒有 URL Scheme, 如果要加的話, 除了用 步驟 7 綁定 URL Type 之外
還要複製最近製作的 App 的 ViewController.swift 內容(僅修改包覆網址)以及 SceneDelegate.swift 內容(不需修改)
- 到開發者後台點 Profiles 檢查相應的 Profile 過期沒?
如果過期先點 Remove 將它移除, 重覆 步驟 12 新增 Profile 並下載點兩下加到 Xcode 專案裡

==================== 電子憑證產生流程(一年做一次) =====================
- 從 Mac 打開鑰匙圈, 功能表選 "鑰匙圈存取" - 憑證輔助程式 - 從憑證授權要求憑證

填好 E-mail 和英文姓名, 選"儲存到磁碟", 按繼續

按儲存, 完成, 桌面會有一個 CSR 檔

- 到開發者後台選 Certificates 按 "+"

選 iOS Distribution (App Store and Ad Hoc) 按 Continue

然後點 Choose File 給它上個步驟產生的 CSR 檔, 按 Continue

按 Download 下載 .cer 存到 Mac 桌面, 點兩下, 點"加入", 它會加到鑰匙圈的憑證裡

==================== APN 金鑰產生流程(只做一次, 永久有效) =====================
- 到 Apple 開發者後台選 Keys 右邊點選 "+" 加號

自行取個名稱, 將 Apple Push Notofications service(APNs) 打勾, 按 Continue, 將金鑰儲存磁碟

==================== 團隊代號(每個開發者帳戶的固定代號) =====================
- 到 Apple 開發者後台選 Membership details
