這次要操練的對象是 Apple 的 App Store Connect,並且在其中建立一個 App 可供上傳:

也就是讓 App Store Connect 則成為 App 正式亮相前的後台舞台,從 App 名稱、語言、Bundle ID 到 SKU,都必須與前面建立好的資料互相呼應。整個流程的核心不是單純填表,而是替 App 建立一條可信任、可追蹤、可發佈的路徑。
這次要操練的對象是 Apple 的 App Store Connect,並且在其中建立一個 App 可供上傳:

也就是讓 App Store Connect 則成為 App 正式亮相前的後台舞台,從 App 名稱、語言、Bundle ID 到 SKU,都必須與前面建立好的資料互相呼應。整個流程的核心不是單純填表,而是替 App 建立一條可信任、可追蹤、可發佈的路徑。
如果在 前篇 沒啥意外,應該要順利的能透過 Visual Studio 發佈經過簽署的 iOS 應用程式到 App Store Connect 當中。
不出意外的話…馬上就會出意外
,這是通則。
如果無法順利直接透過 Visual Studio 發佈經過簽署的 iOS 應用程式到 App Store Connect 當中的話,那該怎辦?
其實也別擔心,只要確定 Visual Studio 有產出經過簽署的 iOS 應用程式(*.ipa),那就可以透過 Xcode 或是 Transporter 來發佈到 App Store 當中。
.NET MAUI 撰寫好 iOS 應用程式後,不外乎就是要發佈該 iOS 應用程式到 App Store Connect 當中,除非所寫的是專屬給企業內部使用的 iOS 應用程式。
而在 Xamarin 的時代就已經可以透過 Visual Studio 的介面操作,直接發佈 iOS 應用程式的 *.ipa 到 App Store Connect,詳情請看:
透過 Visual Studio 串接 App Store Connect 發佈 iOS App
https://dotblogs.com.tw/jamestsai/2020/06/05/Using-Visual-Studio-publish-iOS-App-to-App-Store-Connect
而微軟官方文件也有相關的撰寫:
在 前篇 中已經順利在 Visual Studio 登入 Apple Developer Account 並且透過 API Key 存取 Apple Developer 的相關資訊。

可是這時候注意到一件事情:
Status 顯示 Not In Keychain
若想要透過 Visual Studio 開發 .NET MAUI 並進行 iOS 應用程式的開發,勢必要在 Visual Studio 當中登入 Apple Developer Account,以利取得憑證等資訊。
取得相關資訊後,在進行 iOS 應用程式部署的時候(安裝到測試實機上) 或是打包發版(發佈到 AppStore Connect)的時候,都會相對簡便。
不過,現在不再支援直接使用登入帳號密碼的方式使用。
請改用 Apple Developer 的 API Key 來存取囉!
本篇介紹是要替一個即將登上 App Store 的 iOS App 進行實機開發、測試、與發佈的設定準備
App 不是只要寫好程式就能出發,它還需要在 Apple Developer 裡擁有清楚的身分,也就是正確的 Bundle Identifier;需要能證明開發者身分的 Certificates;也需要讓開發、測試與發佈流程順利通行的 Provisioning Profiles。
當這些資料都整理好後,macOS 的 Xcode 也就可以像是一個本機端的檢查站,負責確認 Apple Account、Team、憑證與 Profiles 是否都能被正確使用。
在這當中就是要確保 Identifier、Certificate、Profile 與 App Store Connect 的 App 紀錄彼此對得上。
開始吧~~~
如果根據 前篇 操作後有發現 macOS 所建立的憑證不受信任的話,請參考此篇處理。

開發 Apple 的 iOS 應用程式,若在 Mac 裝置安裝好 Xcode 時,就可以透過 Xcode 直接建立該 Mac 裝置的機器憑證,送至 Apple 的 Developers 網站當中以利後續使用 "iOS 裝置" 開發或測試應用程式。
甚至,後續要將 iOS 應用程式發佈至 AppStore Connect 當中,無論是要先進行 TestFlight 測試;或是對自己的 iOS 應用很有信心要直接送審,也都是需要先有 Mac 裝置製作的機器憑證,作為 iOS 應用程式發佈憑證才行。

也就是說無論要用哪種開發技術,想要發佈 iOS 應用程式到 App Store 都必須處理這檔事。
Windows 上如果設定了時區(無論手動或自動),透過 TimeZoneInfo 取出的時區識別碼,都是根據所設定的地區的時區,並且回應成 Windows 使用的 TimeZone 格式識別碼。

例如設定為 (UTC +08:00) 台北取出來的識別碼的值會為:"Taipei Standard Time" 的字串資料。
但是…
這篇有提到:
在 macOS 上最主要就是要安裝 Xcode,而如果要安裝 Xcode 的管道,基本上有兩種:
- 透過 macOS 上的 App Store 安裝。(登入 Apple 帳號後即能免費下載使用)
- 透過 Apple Developers 網站來下載 .xip 安裝。(需要先有訂閱 Apple 開發者帳號才能下載使用)
本篇就來談談如何透過 .xip 來安裝 Xcode。
如果要順利在 Visual Studio 來連接 macOS 透由 .NET MAUI 開發 iOS 的話,對於要連接的 macOS 上是需要事先安裝好 Xcode 等 Apple 所設計的 iOS 開發工具的。
不然,就算有開啟遠端登入等功能讓 Visual Studio 能夠連線並自動安裝 mono 等軟體元件,那也沒有 iOS 的相關 SDK 供使用。
在 macOS 上最主要就是要安裝 Xcode,而如果要安裝 Xcode 的管道,基本上有兩種:
本篇介紹是使用第一種方式來完成唷~~~
在 Nuget 的相依協助下,已經某種程度上可以是協助擺脫 dll hell 的一大工程(功臣?)
但是如果在一個解決方案當中有多個專案要引用相同的 Nuget 套件時,可能會發生各個不同的專案有各自使用不同 Nuget 套件的版本(套件相同版本不同)。
而每次要更新某個 Nuget 套件時就會要針對不同專案要處理更新,就會顯得相當繁瑣。
在 .NET 6.0 的設計中,開始可以使用中央的套件管理 Central Package Management (CPM) 的處理方式來處理這個問題。
在使用 .NET MAUI 的時候可以透過 Google 推出的 Android Emulator 來建立 Android Virtual Device (AVD),以便進行基本的 Android App 開發與前期的測試。

雖然在 App 的開發到後期通常會直接使用 實際的裝置 進行測試會比較恰當,但不可質疑的 AVD 在 Android App 很多開發情境當中仍是扮演著測試環節中很重要的部分。
而 Google 所推出的 Android Emulator 可以透過 Visual Studio 當中的 "Android 裝置管理員" 來使用,並且建立所需的 AVD 環境。
續接前篇,趕緊來看看怎達成下圖效果吧!

在 Visual Studio 要透由 .NET MAUI 來開發 iOS 應用,連接 macOS 的環境並且使用 iOS Simualtor 進行開發上的處理,應該會是最輕鬆的方式。

由於 Visual Studio 在安裝 .NET MAUI 的工作負載時,只會安裝 "基本" 的 Android 所需的開發與執行環境。如果有遇到一些狀況需要其他的進階使用時,那對於 Android SDK 的元件安裝就必須再進一步的調整。
例如在 前篇 的介紹當中,要啟動所建立的 Android Emulator 時就 "可能" 會有看到類似的提示畫面:

可以怎樣進一步嘗試調整呢?
可以看看本篇介紹。
而由於 .NET MAUI 是一套建置跨平台應用的開發技術,所以如果要在 上回 所建構出的 .NET MAUI 專案,直接切換建置 Android 出應用程式並不是什麼難事:

使用 .NET MAUI 開發 Windows 應用不是什麼難事:

看看如何透過 Visual Studio 的安裝來設定相關的開發環境囉~~
Windows Sandbox (Windows 沙箱) 是一套很方便的 Windows 所內建的隔絕 Windows 環境:

如果要做什麼一些 "不太有把握" (aka 壞壞) 的事情,可以透過 Windows Sandbox 進行測試後,確認真的沒問題再拿到真實的 Windows 環境當中來使用。
這不是一個什麼 .NET 的新特點了…只是一個犯蠢的紀錄。

只是近期常常發生這種犯蠢的事情,所以來我獨自筆記一下。