XAML in Xamarin.Forms 基礎篇 電子書

XAML in Xamarin.Forms 基礎篇 電子書
XAML in Xamarin.Forms 基礎篇 電子書

Xamarin.Forms 快速入門 電子書

Xamarin.Forms 快速入門 電子書
Xamarin.Forms 快速入門 電子書

2016/09/25

Xamarin.Forms 取得核心PCL內的相依性注入容器,並且解析特定類別

由時候,您需要在 ViewModel 內,不透過建構式注入的方式,取得某個介面的實作物件,這個時候,您需要取得 Prism 的容器,自行解析出該介面的註冊實作類別。
想要取得 Prism 內的預設使用容器,可以使用底下程式碼,這個程式碼會回傳 IUnityContainer
IUnityContainer myContainer = (App.Current as PrismApplication).Container;
接著,您可以使用底下程式碼,取得某個介面(在這裡範例為 IMyClass)的實作物件,可以使用泛型Resolve 方法,解析出實作介面的物件。
fooObject = myContainer.Resolve<IMyClass>();

參考

Xamarin.Forms Android平台的退回實體按鍵控制

若是想要停用或者要控制實體退回鍵,需要在該頁面的 code-behind 加入底下方法
        protected override bool OnBackButtonPressed()
        {
            return true;
        }

2016/09/24

建立 Xamarin.Forms 新專案,發生 未正確載入套件 'XamarinAndroidPackage' 錯誤

當您準備要使用 Visual Studio 2015 來建立 Xamarin.Forms 的專案,此時,會發現到這樣的錯誤訊息
未正確載入套件 'XamarinAndroidPackage'。
這個問題能是因為組態變更或者安裝其他擴充功能所造成。您可以檢查檔案 .... 取得詳細資訊。
重新啟動 Visual Studio 可以協助解決此問題。
要繼續顯示這項錯誤訊息嗎?
未正確載入套件 XamarinAndroidPackage
不論回答 Y / N,最終發現到,這個方案內是沒有 Xamarin.Android 的專案產生;而關閉 Visual Studio 且重新開啟 Visual Studio,並再度產生一次 Xamarin.Forms 專案,一樣的錯誤還是會出現,

解決問題方法

請使用檔案總管,切換到底下目錄下
C:\Users\%username%\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache
將這個目錄下的所有檔案刪除,重新開啟 Visual Studio 2015,就可以正常使用了

2016/09/23

Xamarin.Forms 如何回覆 Visual Studio 內的 Xamarin 到以前的版本 upgrade / downgrade

如何恢復 Visual Studio 內的 Xamarin 到以前的版本

若您在開發上遇到問題,想要回覆到較舊的 Xamarin 版本,可以從底下網頁,下載舊的版本,安裝起來就可以囉
downloadXamarin

2016/09/22

《台北》Xamarin.Forms 跨平台行動應用程式開發實戰


最新 Xamarin.Forms 課程資訊

《台北》Xamarin.Forms 跨平台行動應用程式開發實戰 2016-10-21 09:00 ~ 2016-10-31 17:00http://www.accupass.com/go/DCT_105027
《台北》Xamarin.Forms 跨平台行動應用程式開發實戰 2016-10-15 09:00 ~ 2016-10-29 17:00http://www.accupass.com/go/DCT_105034

以往想要開發原生行動應用程式,您必須要遵循每個平台的SDK規範與了解應用程式的生命週期,並且使用專屬程式語言與API使用方式,例如: iOS 需要學習 Swift或者Objective-C,而 Andrdoid 必須要學習 Java,這使得想要開發一套能夠在不同行動裝置下運行的應用程式,您必須學習與精通這些開發工具與程式語言;最重要的是,不論是視覺介面 UI 或者商業邏輯程式碼,都無法跨平台共用,也就是說,同樣的商業邏輯需要使用不同程式語言重覆再寫一次。
Xamarin.Forms 使用 .NET C# 程式語言,配合豐富資源 BCL 與視覺宣告 XAML,搭配地表最強的程式開發工具 Visual Studio,讓您可以一次性開發出可以在 iOS & Android & Windows UWP 下運行的行動裝置應用程式,不論是視覺介面與商業邏輯,開發者也只需要撰寫一次即可,就可以產生出在不同行動裝置下執行的應用程式。另外,Xamarin.Forms 特別適合用於開發企業內部的行動應用。
本次課程包含一堂 1 小時的線上課程與三天共 21 小時的實體課程,將會帶領大家快速上手 Xamarin.Forms 開發工具,您將會認識 Xamarin 開發環境,了解使用 Xamarin.Forms 開發工具所會遇到問題與解決方法,學會 XAML 與 MVVM 開發和設計模式,實際動手做出可以跨平台執行的應用程式,並且學會整個 Xamarin.Forms 開發過程。

Xamarin.Forms 社群分享的使用 Share Plugin

若想要在應用程式內,分享應用程式的內容到到其他應用程式內,您可以在核心 PCL 專案內,使用這個套件Plugin.Share,可以讓您進行文字、連結的分享作業,或者指定一個URL,並且使用瀏覽器開啟這個URL。這些功能將會自動針對當時執行行動裝置的作業系統,執行相對應的工作。
  1. 首先,請先安裝 Plugin.Share NuGet 套件
  2. 要分享某段文字內容,也是相當容易的,使用底下程式碼來執行,此時,手機將會顯示並且請您選擇要分享的應用程式,選擇之後,就可以把這段文字分享出去。
await CrossShare.Current.Share(message, title);
  1. 要分享URL連結,也是相當容易的,使用底下程式碼來執行,此時,手機將會顯示並且請您選擇要分享的應用程式,選擇之後,就可以把URL連結分享出去。
await CrossShare.Current.ShareLink(url, message, title);
  1. 當取得一個網址,想要使用外部瀏覽器開啟這個網址,可以使用底下程式碼
await CrossShare.Current.OpenBrowser(創業空間明細.官方網站);
上述的許多功能都可以正常使用,這是因為您一開建立專案的時候,您有加入許多 NuGet 套件或者插件,而在這個檢視模型的程式碼內,就可以直接呼叫這些套件方法;此時,您只管需要呼叫這些功能,至於每個平台的專屬特性與功能,套件與插件會幫您處理掉這些繁雜問題。+

Xamarin.Forms 解決 FileNotFoundException - Could not load file or assembly 的問題

當您開發一個 Xamarin.Forms 專案,並且在 Android 平台下進行測試,一切都可以正常運作與執行;不過,您切換到 iOS 平台下,執行同樣專案,卻得到類似下圖的異常錯誤。
FileNotFoundException
例外異常訊息為
Microsoft.Practices.Unity.ResolutionFailedException: Resolution of the dependency failed, type = "System.Object", name = "TravelExpensesListPage".

Exception occurred while: Calling constructor XFDoggy.Views.TravelExpensesListPage().

Exception is: FileNotFoundException - Could not load file or assembly 'Behaviors' or one of its dependencies

-----------------------------------------------

At the time of the exception, the container was:



  Resolving XFDoggy.Views.TravelExpensesListPage,TravelExpensesListPage (mapped from System.Object, TravelExpensesListPage)

  Calling constructor XFDoggy.Views.TravelExpensesListPage()
由上述的錯誤訊息,看到的是 'Behaviors' 這個組件似乎找不到,這樣的情況也有可能發生在 Android 平台下。
要解決這樣的問題,您需要在
  • iOS 平台
    在 AppDelegate.cs (FinishedLaunching 方法) 內,產生這個組件的一個物件,或者參考該 NuGet 套件的使用說明,使用初始化的動作。
  • Android 平台
    在 MainActivity.cs (OnCreate 方法內) 內,產生這個組件的一個物件,或者參考該 NuGet 套件的使用說明,使用初始化的動作。

解決方法

請打開 AppDelegate.cs 加入底下程式碼
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            // 需要加入這行解決無法載入組建的問題
            var fooBehaviorBase = new Behaviors.BehaviorBase<Xamarin.Forms.ListView>();
            global::Xamarin.Forms.Forms.Init();
            LoadApplication(new App(new iOSInitializer()));

            return base.FinishedLaunching(app, options);
        }
若不知道要產生甚麼物件,可以打開這個組件的物件瀏覽器,進行查看
Behaviors物件瀏覽器

2016/09/21

Xamarin.Forms iOS發佈之Mac端的操作

產生派送憑證(憑證密鑰) (Distribution Certificate)

在這裡,您需要第一次準備好一個 Certificate Signing Request (CSR),這裡所有的操作,都需要在 Mac 電腦完成
AboutCSR
  1. 點選 Launched > 其他 > 鑰匙圈存取
    其他
  2. 從功能表中,點選 憑證輔助程式 > 從憑證授權要求憑證
    建立憑證
  3. 請在 輔助憑證程式 對話窗,請輸入電子郵件位置與一般名稱,在 已將要求 選項,設定為 儲存到磁碟,最後,點選 繼續 按鈕
    輔助憑證程式
  4. 您可以將這個憑證儲存到桌面,方便日後練習之用
    • 建議可以將這個憑證檔案名稱,加入適合辨識文字
    • 位置 為方便練習,可以選擇 桌面
    • 點選 儲存 按鈕
    • 在 密鑰配對資訊,直接點選 繼續 按鈕
    • 最後,憑證會建立在桌面上
    儲存到桌面
    完成建立憑證

產生派送憑證 (Distribution Certificate)

底下這兩個工作 建立開發環境用的憑證 (Certificates > Development)建立正式環境用的憑證 (Certificates > Product),僅需要在這台電腦上做一次即可。

建立開發環境用的憑證 (Certificates > Development)

  1. 在您的 Mac 電腦上開啟 Safari 瀏覽器,進入 Apple Developer 中心,並且登入該系統
  2. 點選左邊功能表的 Certificates, IDs, Profiles 連結
    AppleDeveloperHome
  3. 在 Certificates, IDs, Profiles 頁面內,點選 Development 連結
    AppleDevCIP
  4. 在 iOS Certificates (Development) 頁面內,點選右上角 + 加號
  5. 在 Add iOS "Certificate" 頁面,選擇 iOS App Development 項目,接著點選最下方的 Continue 按鈕
    AddiOSCert
  6. 在 Add iOS "Certificate" 頁面的 Request 標籤頁次,選擇最下方的 Continue 按鈕
    這是因為,這個頁面要求要做到的事情,已經在前面的 產生派送憑證(憑證密鑰) (Distribution Certificate) 階段已經完成了。
    iOSDevRequest
  7. Add iOS "Certificate" 頁面的 Generate 標籤頁次
    • 點選 Choose File... ,著選擇剛剛在桌面產生的 CSR 憑證
    • 接著點選最下方的 Continue 按鈕
    iOSDevGenerate
  8. Add iOS "Certificate" 頁面的 Download 標籤頁次
    • 點選 Download 按鈕,下載這個 iOS Development 憑證
    • 下載完成後,請點選剛剛下載的憑證,使其安裝到鑰匙圈存取內
    • 最後,點選 Done 按鈕,完成相關工作。
    iOSDevDownload

建立正式環境用的憑證 (Certificates > Product)

  1. 在您的 Mac 電腦上開啟 Safari 瀏覽器,進入 Apple Developer 中心,並且登入該系統
  2. 點選左邊功能表的 Certificates, IDs, Profiles 連結
  3. 在 Certificates, IDs, Profiles 頁面內,點選 Production 連結
  4. 在 iOS Certificates (Development) 頁面內,點選右上角 + 加號
  5. 在 Add iOS "Certificate" 頁面,選擇 iOS App Development 項目,接著點選最下方的 Continue 按鈕
    AddiOSProdCert
  6. 在 Add iOS "Certificate" 頁面的 Request 標籤頁次,選擇最下方的 Continue 按鈕
    這是因為,這個頁面要求要做到的事情,已經在前面的 產生派送憑證(憑證密鑰) (Distribution Certificate) 階段已經完成了。
  7. Add iOS "Certificate" 頁面的 Generate 標籤頁次
    • 點選 Choose File... ,著選擇剛剛在桌面產生的 CSR 憑證
    • 接著點選最下方的 Continue 按鈕
  8. Add iOS "Certificate" 頁面的 Download 標籤頁次
    • 點選 Download 按鈕,下載這個 iOS Distribution 憑證
    • 下載完成後,請點選剛剛下載的憑證,使其安裝到鑰匙圈存取內
    • 最後,點選 Done 按鈕,完成相關工作。
    iOSProdDownload

產生派送提供描述檔 (Distribution Provisioning Profile)

產生 AppID

  1. 在您的 Mac 電腦上開啟 Safari 瀏覽器,進入 Apple Developer 中心,並且登入該系統
  2. 點選左邊功能表的 Certificates, IDs, Profiles 連結
  3. 在 Certificates, IDs, Profiles 頁面內,點選 Identifiers > App IDs 連結
  4. 點選 iOS App IDs 標題頁面右上方 + 按鈕
  5. 在出現 Registering an App ID 頁面
    • 在標題 App ID Description 下的 Name 欄位,輸入 My First iOS App
    • 在 Explicit App ID 標題下的 Bundle ID 欄位內,輸入 com.doggy.XFFirst
    • 最後,在最下方點選 Continue 按鈕
    RegisteringAnAppID
  6. 在出現 Confirm your App ID 頁面,請點選底下 Register 按鈕,最後,再點選 Done 按鈕

產生 Device ID

  1. 在您的 Mac 電腦上開啟 Safari 瀏覽器,進入 Apple Developer 中心,並且登入該系統
  2. 點選左邊功能表的 Certificates, IDs, Profiles 連結
  3. 在 Certificates, IDs, Profiles 頁面內,點選 Devices > All 連結
  4. 點選 All Devices 標題頁面右上方 + 按鈕
  5. 在 Registering a New Device or Multiple Devices 頁面
    • 在 Register Device 標題下方的 Name 欄位,輸入 Vulcan iPhone
    • 在 Register Device 標題下方的 UDID,輸入您裝置的 UDID
    • 最後,點選下方的 Continue
    要取得您裝置的 UDID
    1. 將 iOS 裝置連上有安裝 iTune 的電腦上
    2. 在上方的 摘要 標籤頁次下,會看到 序號 欄位內的值,使用滑鼠點擊該序號
    3. 此時,原先的序號欄位,會變成 識別碼 (UDID),這就是 iOS 裝置的 UDID,把它複製下來
    RegistingNewDevice
  6. 當出現 Review and register 頁面,請點選底下的 Register 按鈕

產生開發時期的派送提供描述檔

  1. 在您的 Mac 電腦上開啟 Safari 瀏覽器,進入 Apple Developer 中心,並且登入該系統
  2. 點選左邊功能表的 Certificates, IDs, Profiles 連結
  3. 在 Certificates, IDs, Profiles 頁面內,點選 Provisioning Profiles > Development 連結
  4. 點選 iOS Provision Profiles (Development) 標題頁面右上方 + 按鈕
  5. 在 Add iOS Provisioning Profiles (Development) 頁面的 Select TYpe 標籤頁次
    • 在 Development 標題下方選擇 iOS App Development
    • 點選最下方的 Continue 按鈕
  6. 當出現 Configure 標籤頁次
    • 選擇您要的 App ID,在這裡選擇的是 My First iOS App,之後
    • 點選 Continue 按鈕
    • 選擇您的憑證,會出現在畫面上讓您挑選,之後,點選 Continue 按鈕
    • 選擇要測試裝置,畫面上會出現您設定好的裝置,選擇好之後,點選 Continue 按鈕
  7. 當出現 Generate 標籤頁次下,在 Profile Name 欄位中輸入 MyFirst_Dev_Prov,之後,點選Continue 按鈕
  8. 當出現 Download 標籤頁次下
    • 點選 Download 按鈕
    • 當下載完成後,雙擊這個下載檔案,安裝這個 Provisioning Profile 到 XCode 內
    • 點選 Done 按鈕

產生正是產品的派送提供描述檔

  1. 在您的 Mac 電腦上開啟 Safari 瀏覽器,進入 Apple Developer 中心,並且登入該系統
  2. 點選左邊功能表的 Certificates, IDs, Profiles 連結
  3. 在 Certificates, IDs, Profiles 頁面內,點選 Provisioning Profiles > Distribution 連結
  4. 點選 iOS Provision Profiles (Distribution) 標題頁面右上方 + 按鈕
  5. 在 Add iOS Provisioning Profiles (Distribution) 頁面的 Select TYpe 標籤頁次
    • 在 Distribution 標題下方選擇 Ad Hoc
    • 點選最下方的 Continue 按鈕
  6. 當出現 Configure 標籤頁次
    • 選擇您要的 App ID,在這裡選擇的是 My First iOS App,之後
    • 點選 Continue 按鈕
    • 選擇您的憑證,會出現在畫面上讓您挑選,之後,點選 Continue 按鈕
    • 選擇要測試裝置,畫面上會出現您設定好的裝置,選擇好之後,點選 Continue 按鈕
  7. 當出現 Generate 標籤頁次下,在 Profile Name 欄位中輸入 MyFirst_Prod_Prov,之後,點選Continue 按鈕
  8. 當出現 Download 標籤頁次下
    • 點選 Download 按鈕
    • 當下載完成後,雙擊這個下載檔案,安裝這個 Provisioning Profile 到 XCode 內
    • 點選 Done 按鈕

Xamarin.iOS 內選擇提供描述檔

建立客製專屬平台的控制項視覺方案

  1. 首先,開啟您的 Visual Studio 2015
  2. 接著透過 Visual Studio 2015 功能表,選擇這些項目 檔案 > 新增 > 專案 準備新增一個專案。
  3. 接著,Visual Studio 2015 會顯示 新增專案 對話窗,請在這個對話窗上,進行選擇 Visual C# >Cross-Platform > Blank Xaml App (Xamarin.Forms Portable)
  4. 接著,在最下方的 名稱 文字輸入盒處,輸入 XFFirst 這個名稱,最後使用滑鼠右擊右下方的 確定按鈕。
  5. 當專案建立到一半,若您的開發環境還沒有建置與設定完成 Mac 電腦與 Xamarin Studio for Mac 系統,此時會看到 Xamarin Mac Agent Instructions 對話窗出現,這個對話窗是要提醒您進行與 Mac 電腦連線設定,這是因為,您無法在 Windows 作業系統進行 iOS 相關應用程式的建立與設計工作,而是需要透過 Mac 電腦安裝的 XCode 來協助您完成這些 iOS 應用程式的建立工作。不過,這不影響您繼續開發 Xamarin.Forms 的應用程式,只不過此時,您無法編譯與執行 iOS 的應用程式。
  6. 接著會看到 新的通用Windows專案 對話視窗,此時,您只需要按下 確定 按鈕即可,此時,專案精靈會繼續完成相關平台的專案建立工作。
  7. 最後,整個新的 Xamarin.Forms 專案就建立完成了。

開始測試

  1. 滑鼠右擊 XFFirst.iOS 專案,選擇 設定為起始專案
  2. 檢查 Visual Studio 上方的工具列之組態設定為 : Debug > iPhoneSimulator
    iOSDebugSimulator
  3. 滑鼠右擊 XFFirst.iOS 專案,選擇 重建
    確認可以在除錯&模擬器環境,正常重建這個專案。
  4. 設定 Visual Studio 上方的工具列之組態設定為 : Release > iPhoneSimulator
    iOSDebugiPhone
  5. 滑鼠雙擊 XFFirst.iOS 專案下的 Properties 節點
    • 點選 iOS Application 標籤頁次
      • 在並勾選標題 iOS IPA Options 下方的 Build ad-hoc/enterprise package (IPA) 檢查盒
    • 點選 iOS IPA Options 標籤頁次
      • 在 Identifier 欄位內輸入 com.doggy.XFFirst
      • 在 Version 欄位內輸入 1
    • 點選 iOS Bundle Signing 標籤頁次
      • 在 iOS Bundle Signing 標題下方的 Identity 欄位,選擇 iPhoe Developer XXX
      *在 iOS Bundle Signing 標題下方的 Provisioning Profile 欄位,選擇 MyFirst_Dev_Prov
  6. 滑鼠右擊 XFFirst.iOS 專案,選擇 重建
    確認可以正常重建這個專案。
    若在 Mac 電腦上出現底下對話窗,請點選 總是允許 codesign
  7. 滑鼠雙擊 XFFirst.iOS 專案下的 Properties 節點
    • 點選 iOS Application 標籤頁次
      • 在並勾選標題 iOS IPA Options 下方的 Build ad-hoc/enterprise package (IPA) 檢查盒
    • 點選 iOS IPA Options 標籤頁次
      • 在 Identifier 欄位內輸入 com.doggy.XFFirst
      • 在 Version 欄位內輸入 1
    • 點選 iOS Bundle Signing 標籤頁次
      • 在 iOS Bundle Signing 標題下方的 Identity 欄位,選擇 iPhoe Distribution XXX
      *在 iOS Bundle Signing 標題下方的 Provisioning Profile 欄位,選擇 MyFirst_Dev_Prov
  8. 滑鼠右擊 XFFirst.iOS 專案,選擇 重建
    確認可以正常重建這個專案。

其他參考

此憑證的簽發人無效

當在 鑰匙圈存取 > 憑證 內發現到新建立的 Development / Distribution 憑證出現了 此憑證的簽發人無效 紅色錯誤訊息,請使用瀏覽器,打開下列網址,重新安裝憑證,即可解決問題
此憑證的簽發人無效
會發生這個問題,是因為欠缺底下憑證
AppleWorldwideDevCA