XAML in Xamarin.Forms 基礎篇 電子書

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

Xamarin.Forms 快速入門 電子書

Xamarin.Forms 快速入門 電子書
Xamarin.Forms 快速入門 電子書
顯示具有 C# 標籤的文章。 顯示所有文章
顯示具有 C# 標籤的文章。 顯示所有文章

2017/01/23

Xamarin FAQ 1-22 : 為什麼在核心 PCL 專案內無法使用 HttpClient 這個類別呢?

問題

當您需要在 Xamarin.Forms 專案中,提供可以存取 Web API 的功能,當然,應該要使用 .NET 提供的 HttpClient 類別所產生的物件,就可以進行相關 Get / Post / Put / Delete 等 RESTful 操作,並且這個類別是提供了非同步方法來呼叫,不會造成使用者操作介面被凍結的問題;不過,若您在核心 PCL 專案內取使用 HttpClient 這個類別,卻發現到您是無法參考到這個物件,那麼,該如何解決此一問題呢?

解答

要解決此一問題,請在方案中滑鼠右擊,選擇 管理方案的 NuGET 套件 > 瀏覽 ,請在搜尋文字輸入盒中,輸入 Microsoft.Net.Http 這個套件名稱,接著,將這個套件安裝到所有的專案內。這個安裝動作除了會幫助您安裝 Microsoft.Net.Http 套件,還會幫助您安裝其他相依性 NuGet 套件,Microsoft.Bcl / Microsoft.Bcl.Build / Microsoft.NETCore.UniversalWindowsPlatform

2017/01/10

使用 Xamarin.Forms 進行專案開發,必備哪些基本技能

當您使用 Xamarin.Forms 進行專案開發的時候,有哪些基本技能要熟悉呢?您都學會了嗎?
C# / .NET
XAML語法
XAML標記延伸功能
各種不同螢幕規格的視覺設計
Data Binding
應用程式生命週期
各種頁面
不同版面配置
使用者介面控制項
使用者控制項宣告與使用
降低部署檔案大小
程式碼簽名
在模擬器與實機測試
問題除錯技巧
使用者介面自動測試
呼叫 Web API

2016/09/27

如何在 Mac 電腦上升級 Xcode & Xamarin Studio

Xcode

當您 Mac 電腦上的 Xcode 有新版本推出的時候,App Store 會有提示,如下
AppStoreUpdate
此時,您可以開啟 App Store 這個應用程式,在 更新項目 頁次,可以看到有新版本的 Xcode 推出
AppStore更新項目
請點選右方的更新,就可以進行 Xcode 的開發工具更新。
之後,會出現底下對話窗,您需要輸入 Apple ID
登入來從AppStore下載
Xcode升級
升級完成後,會出現如下畫面
Xcode升級完成

Xamarin Studio

在 Mac 電腦上開啟 Xamarin Stdio 程式
點選功能表 Xamarin Studio Community > Check for Update...
XamarinStudio2的升級前
等候下載完成,點選 Restart and Install Updates

XamarinStudio2的升級前
XamarinStudio2的升級後

2016/09/26

Xamarin 導航工具列的使用與應用 ToolbarItem

想要在頁面中使用工具列功能,這個頁面必須是具備可導航的特性。
工具列的各個按鈕項目,可以使用 ContentPage.ToolbarItem 屬性項目 Property Element 來進行設定。
每個工具列中的按鈕使用 ToolbarItem 控制項來定義其功能
  • Command
    可以用於綁定 ViewModel 內的 ICommand 屬性,執行特定命令工作
  • Text
    這個工具列按鈕要顯示的文字
  <ContentPage.ToolbarItems>
    <ToolbarItem Command="{Binding 查看地圖Command}" Text="查看地圖" Order="Secondary" Priority="0" />
    <ToolbarItem Command="{Binding 撥打電話Command}" Text="撥打電話" Order="Secondary" Priority="0" />
    <ToolbarItem Command="{Binding 發送簡訊Command}" Text="發送簡訊" Order="Secondary" Priority="0" />
    <ToolbarItem Command="{Binding 發送電子郵件Command}" Text="發送電子郵件" Order="Secondary" Priority="0" />
    <ToolbarItem Command="{Binding 分享內容Command}" Text="分享內容" Order="Secondary" Priority="0" />
    <ToolbarItem Command="{Binding 分享連結Command}" Text="分享連結" Order="Secondary" Priority="0" />
    <ToolbarItem Command="{Binding 查看官網Command}" Text="查看官網" Order="Secondary" Priority="0" />
  </ContentPage.ToolbarItems>
若在定義工具列按鈕 ToolbarItem 的時候,想要在程式上顯示圖片代表這個按鈕,可以參考底下程式碼的作法;這是使用了 ToolbarItem.Icon 屬性項目(Property Element)來定義所代表的圖片,並且透過了OnPlatform 來針對不同平台下的圖片檔案所在位置。請特別注意,由於這些圖片檔案是位於每個作業系統平台專案內,因此,需要使用 x:TypeArguments="FileImageSource" 來指定這些圖片是存在於每個專案內的資源內。
+

    <ToolbarItem
      Command="{Binding 新增Command}"
      Text="新增"
      Order="Primary"
      Priority="0">
      <ToolbarItem.Icon>
        <OnPlatform x:TypeArguments="FileImageSource"
                     iOS="Add.png"
                     Android="Add.png"
                     WinPhone="Assets/Images/Add.png" />  
      </ToolbarItem.Icon>
    </ToolbarItem>

參考

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/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