Connect(); 2016

第 31 卷,第 12 期

本文章是由機器翻譯。

Xamarin - Xamarin 與通用 Windows 平台

Tyler Whitney;2016

如果您使用目標 Xamarin iOS 和 Android,您了解如何使用程式設計語言,以及一個共用的程式碼的多個平台進行開發的優點。您也了解使用 Xamarin.Forms 在 Android 和 iOS 重複使用您的 UI,同時保留能夠自由地利用唯一的平台功能的優點。

什麼您可能不知道的是,您可以使用這些工具目標通用 Windows 平台 (UWP)、 到達超過 400 萬種裝置,以及增加下載和參與所有 iOS 和 Android 裝置上一次。

為什麼目標 UWP 嗎?

為什麼應該目標應用程式的 UWP? 應用程式參與 — 這就是為什麼。身為開發人員,我們希望觸達。我們希望眼睛在我們的內容。我們想要使用的應用程式,並定期使用 — 以獲得最佳的應用程式內購買,廣告內容投稿內容來建置應用程式的生態系統,依此類推。

UWP 可讓您撰寫的桌上型電腦、 平板電腦、 電話、 Xbox、 HoloLens 和物聯網 (IoT) 裝置上執行的應用程式。這是您的應用程式超過 400 百萬個潛在的通訊端。但它並不是只討論 windows 的裝置數目。其也即將提升參與您支援的所有裝置上。請考慮使用其應用程式,一個 NPR NPR 經驗 (one.npr.org)。

一個 NPR 提供策劃公用廣播新聞、 新聞與播客給其使用者的資料流。以 Windows 為目標大幅增加接觸 NPR 內容。Microsoft 部落格文章 (bit.ly/2e30plQ) 跟您說︰ 引號 Ben Schein,NPR,產品經理,「 Seventy %npr 接聽程式使用 Windows 裝置,我們已了解 Windows 10 自其接聽時間有 50%增加推出。然後,之前我們升級我們的應用程式。 」 當做非預期的獎金,NPR 也找到當 「...我們所發行的 Windows 應用程式中,我們必須在 iOS 和 Android 下載預期的尖峰。 」

這是專門針對我們住在多重裝置世界中的事實。我們知道人 iOS 和 Android 裝置,我們知道它們有上班的電腦或在家工作。合理的它們在根據它們的位置,以及他們正在做什麼日這些裝置間進行切換。對裝置的所有人員造成應用程式使用很可能會讓它們留在投入您的應用程式與您的內容。

請考慮有人駕馭公車上班的其中一天。匯流排,她會她在電話上,例如讀取 「 報表開始工作的工作。一旦她取得運作,她可能想要收取該工作在桌面上進行詳細分析將報表匯出至 Microsoft Excel。匯流排電車首頁中,她可能開始觀賞視訊。當她首頁抵達時,她可能轉換到 PC — 或 Xbox 大螢幕客廳體驗 — 而且想要挑選觀賞她先前停止的地方。

在每一個這種情況下,觸達不僅僅只是可以執行您的應用程式的裝置雖然這很清楚地重要。觸達也是關於如何應用程式可讓使用者切換裝置當他們嘗試完成其工作最適合在裝置上。

什麼是 UWP?

UWP 提供通用的應用程式平台上執行 Windows 10 的每個裝置。

除了一組常用的 Api 可供所有 Windows 10 裝置上,裝置特定的 Api 可讓您獲得最佳的裝置。我現在要討論一些 UWP 為開發人員提供的主要優點。

調適性和美麗 UI UWP 設計來協助您適應不同螢幕大小和類型的輸入的應用程式。它提供 UI 控制項和版面配置控制項,調整為它們正在執行是否小型電話螢幕或大型的娛樂中心螢幕的裝置。

[圖 1 顯示調整 UI 的範例。請注意呼叫按鈕和圖片在圖片控制行動裝置上的位置。當應用程式在電話上時,呼叫變更按鈕和其位置的大小調整,讓 UI 更容易地使用。在圖片圖片的位置會調整以配合較小的螢幕電話上。

彈性的 UI
[圖 1 調適性 UI

內建控制項接受裝置上的可用的輸入的類型,無論他們是具備觸控輸入、 畫筆、 鍵盤、 滑鼠或 Xbox 控制器。

您可以撰寫美觀的應用程式與新撰寫的 Api。您也可以建立動畫 (包括主要畫面格動畫),並套用效果下拉式陰影、 縮圖的光源、 模糊、 不透明度、 調整動畫效果、 色調旋轉、 parallaxing ListView 項目,例如捲動、 [深褐色、 對比和其他的疊置順序。複製並執行 WindowsUIDevLabs 專案在 GitHub 上親自查看這些效果 (bit.ly/2e3PDqo)。

UWP 應用程式可以提供動態磚和通知,如示 [圖 2, 來顯示您的應用程式在摘要資訊。動態磚和通知,可以提高應用程式參與最多 20%因為它們讓使用者返回您的應用程式。

動態磚和通知
[圖 2 動態磚和通知

調適性的程式碼會利用裝置的優點 UWP 可讓您量身訂作的經驗,要採取的各種裝置類型的優點。您可以撰寫調適性的程式碼,只有當應用程式的裝置,該型別上執行時,會利用特定裝置的功能或您的應用程式特定類型的裝置為目標。Visual Studio 會篩選可用的 Api 來與您的目標裝置類別相關聯。Windows 市集的範圍可用的應用程式所使用的裝置類型。UWP 應用程式的所有裝置上。

Cortana Api 提供您的應用程式中加入語音命令的能力。註冊應用程式動作在 Cortana 與 Cortana 入口網站會建議在適當的時機和位置牽涉到您的應用程式的動作。

為了協助您撰寫更吸引人的應用程式的 UWP,Visual Studio 會提供例外狀況的程式碼撰寫和偵錯工具。資源可幫助您撰寫您的應用程式,例如程式碼範例 (bit.ly/1RhG46l),工作的程式碼片段 (bit.ly/2dINSo9),說明和文件庫,例如 UWP 社群工具組,您可以取得開發人員組成的壯大社群 (bit.ly/2b1PAJY),這樣會提供動畫、 自訂控制項和服務,如 Twitter、 Facebook。然後,您可以產生一個可以 UWP 為基礎的所有裝置安裝的封裝。

取得您的應用程式到客戶手與較低摩擦 Windows 市集減少每個安裝成本,更容易散發給更多觀眾。它會處理銷售跨越地理界限,這讓您不必了解銀行基礎結構與稅務其他國家的法律並減少到達自己以外地區的不便。在存放區也會處理裝置,因此您不需要建置基礎結構來處理這些顧慮間共用內容的應用程式的授權。

存放區提供的體驗,您已經習慣從應用程式存放區,自動更新,例如授權、 試用版,依此類推。投射到數百萬個 Windows 10 使用者可將您的應用程式提供大型的網路。

UWP 提供建立豐富的應用程式,橫跨各種裝置和功能讓您的客戶使用。如您所見,它並不困難目標從 Xamarin UWP。

將 UWP 專案加入至現有的 Xamarin.Forms 應用程式

我將告訴您如何 UWP 專案已加入至 James Montemagno 股票行情即時看板 GitHub 上的程式碼範例 (bit.ly/2dYHEvs),這是目標 iOS、 Android 和 UWP Xamarin.Forms 方案。

我假設您已在 Windows 上執行 10 到已安裝的 Xamarin Visual 的 Studio 2015 Update 3 和最多到目前為止。

如果您想要依序執行步驟,複製程式碼範例、 移除 MyStocks.Forms.UWP 專案並將它新增回進行下列步驟︰

  1. UWP 將專案加入至現有的 Xamarin.Forms 方案。
  2. 將參考加入至 Xamarin.Forms UWP 專案。
  3. 新增參考至可攜式類別庫 (PCL),其中包含共用的表單。
  4. 修改程式碼在 UWP 專案中使用 Xamarin.Forms,並從共用的 PCL 專案載入應用程式。

讓我們逐步進行這些步驟一次。

將空白 UWP 專案加入至您現有的 Xamarin.Forms 方案 一旦您已經載入 Visual Studio MyStocks.Forms 方案,以滑鼠右鍵按一下方案節點,然後選擇 [加入 |新的專案。在 [加入新的專案] 對話方塊中,瀏覽至 Visual C# |Windows |通用,並選取空白應用程式 (Windows 通用)。將專案命名為 MyStocks.Forms.UWP,然後按一下 [確定]。

接下來,您會看到新的通用 Windows 專案對話方塊中,會要求您選擇 UWP 應用程式將支援的最小的平台版本。按一下 [確定] 以選取的預設值。

現在您已加入您的 Xamarin 方案 UWP 專案,以滑鼠右鍵按一下新的 UWP 專案參考] 節點並選取 [管理 NuGet 封裝。

NuGet 封裝] 視窗出現時,請選取 [瀏覽,縮減清單,並從清單中選取 Xamarin.Forms 的 [搜尋] 方塊中輸入 「 表單 」。從右邊的下拉式清單中選取最新版本,請注意它是哪一個版本,按一下 [安裝 (請參閱 [圖 3)。


圖 3 NuGet 封裝管理員

相同的版本,請確定您專案的目標 如果您有其他 Xamarin.Forms 專案方案中,確定他們所使用相同版本的 UWP 專案中新增的 Xamarin.Forms。若要查看其他專案使用 Xamarin.Forms 的什麼版本,選取專案 (例如,MyStocks.Forms.Android) 的參考節點上按一下滑鼠右鍵,選擇 [管理 NuGet 封裝。確定已選取 [已安裝,來縮減清單,然後尋找已安裝的 NuGet 套件清單中的 [Xamarin.Forms 的 [搜尋] 方塊中輸入 「 表單 」。確認版本符合的 Xamarin.Forms MyStocks.UWP 專案中使用的版本。如果是更早的版本進行更新 (請參閱 [圖 4)。

正在驗證 Xamarin.Forms 比對的版本
[圖 4 驗證 Xamarin.Forms 比對的版本

將參考加入包含共用表單 PCL 想 UWP 專案 Xamarin.Forms 專案中使用共用的 UI 的 UI。若要達到此目的,新 UWP 專案必須參考包含共用的表單 PCL。在 My.Stocks.Forms.UWP 專案中,以滑鼠右鍵按一下 [參考] 節點,並選擇 [加入參考。在 [參考管理員出現,請確認專案 |方案已選取,然後選取 [將參考加入 MyStocks.Forms (請參閱 [圖 5)。

將參考加入可攜式類別庫
[圖 5 將參考加入可攜式類別庫

修改使用 Xamarin.Forms UWP 專案中的程式碼和應用程式載入共用的 PCL 專案從 現在我要覆寫在應用程式範本中,因此它會使用 Xamarin.Forms 來從共用的 PCL 專案載入應用程式加入新的 UWP 專案的一部分的程式碼。將下列反白顯示的程式碼插入至 onlaunched 即 MyStocks.Forms.UWP 開始 |App.xaml |App.xaml.cs:

protected override void OnLaunched(LaunchActivatedEventArgs e)
{
  // Initialize Xamarin.Forms here
  Xamarin.Forms.Forms.Init(e);
  #if DEBUG
  ...
}

在 MainPage 建構函式是在 MyStocks.Forms.UWP |MainPage.xaml |MainPage.xaml.cs 中加入下列反白顯示的程式碼,以載入 Xamarin.Forms 專案︰

public MainPage()
{
  this.InitializeComponent();
  this.LoadApplication(new MyStocks.Forms.App());
}

在相同的檔案,請從頁面移除 MainPage 的繼承︰

public sealed partial class MainPage : Page

然後進行下列變更至 MainPage.xaml (MyStocks.Forms.UWP |MainPage.xaml):

  • 在 < 頁面 > 標記內加入︰ xmlns:forms="using:Xamarin.Forms.Platform.UWP 」:
<Page
    x:Class="MyStocks.Forms.UWP.MainPage"
    xmlns:forms="using:Xamarin.Forms.Platform.UWP"
    ...
  • 變更開啟 < 頁面 > 標記 < form: WindowsPage,並確保從變更結尾標記 < / 頁面 > 到 < / form: WindowsPage >

現在會繼承 Xamarin.Forms.Platform.UWP.WindowsPage 頁面。

將 MyStocks.Forms.UWP 專案加入至組建組態 之後 UWP 將專案加入至 Xamarin.Forms 專案,請確定設定為建置。首先,MyStocks.Forms.UWP 專案節點上按一下滑鼠右鍵,然後選取 [設定為啟始專案。

然後以滑鼠右鍵按一下方案節點,並選取 [組態管理員。在 [組態管理員] 對話方塊中,請確定簽入組建和部署的 MyStocks.Forms.UWP 核取方塊。

如果您已被下列步驟,一開始會移除 MyStocks.Forms.UWP 專案。新的 MyStocks.Forms.UWP 專案沒有背景影像加入至原始的專案,以取得股票符號的值,依此類推存取 Twitter API 的 NuGet 封裝。若要檢視結果的 UWP 將專案加入至 James Montemagno 範例應用程式所採取的步驟,複製先前提供的連結,在他 GitHub 專案的全新複本,或安裝下列 NuGet 封裝至 MyStocks.Forms.UWP 專案︰ linqtotwitter Microsoft.Bcl、 Microsoft.BCL.Build、 Microsoft.Bcl.Compression、 Microsoft.Net.Http、 Newtonsoft.Json 和 Xam.Plugins.TextToSpeech。

您現在已經新增至 Xamarin 方案的 UWP 專案。UWP 專案將會載入和執行 Xamarin.Forms 應用程式從 UWP 空白應用程式範本。[圖 6 顯示 Android、 iOS 和 Windows 10 上執行的應用程式。

在各種作業系統上執行的應用程式
[圖 6 在各種作業系統上執行的應用程式

Xamarin.Forms UWP 專案加入從共用的表單的專案會對應控制項的工作。Xamarin.Forms 還介紹平台明確性,如果您需要但仍共用的使用者介面的其他部分的方法。簽出 Charles Petzold 文章中,「 內嵌原生檢視中您 Xamarin.Forms 應用程式,」 這個問題和 Kevin 穿 2016 年 9 月發行項,在 「 第產能頁,使用 Xamarin 跨平台 」 (bit.ly/2dYKr8a),如需詳細資訊。

UWP 應用程式,例如動態磚、 自訂圖示、 通知等等特有的功能就會變成 UWP 專案中。

總結

如果您不使用 Xamarin.Forms ui,您仍將 UWP 專案加入至您的方案。您可以共用程式碼使用共用資產專案、 PCL 或.NET 標準程式庫。請參閱 Xamarin 開發人員網站上的 「 建置跨平台應用程式 」 (bit.ly/2e3bV0C) 的最佳作法的相關資訊。

Microsoft 購買 Xamarin 和持續投入在開放原始碼專案 (bit.ly/1MZsCFE)。我們鼓勵您的意見和貢獻 !


Tyler Whitney 是 microsoft 的資深內容開發人員。 他撰寫有關 Windows Embedded 精簡,並立即撰寫有關 Windows 10 開發。

感謝下列 Microsoft 技術專家來檢閱這份文件︰ Jim Cox、 Norm Estabrook、 James Montemagno 和 Jason ShortJim Box。在 Microsoft 的首席專案經理。

在 Microsoft Jason 短,資深專案經理。

Xamarin 首席專案經理,Microsoft James Montemagno。

Norm Estabrook (在 Microsoft 的資深內容開發)。