Building Universal Windows Apps với C#/XAML, dựa trên một khóa học cùng tên trên MVA, hướng dẫn các bạn xây dựng ứng dụng Universal bằng C# và XAML.

Đối tượng: Lập trình viên Windows Store, Windows Phone.

Các khóa học tham khảo:

Universal app là gì?

Bạn có thể xây dựng một ứng dụng chạy được trên cả Windows và Windows Phone

“Hiện tại” chưa làm được:

  • Tạo thư viện duy nhất
  • Tạo thư thư viện non-Windows như iOS, Android (Xamarin)
  • Hỗ trợ ứng dụng HTML/JavaScript (Cordova)

Tại sao lại gọi là “Universal”?

Hướng người dùng:

  • Giao diện tương tự
  • Tương tác giống nhau
  • Chia sẻ thông tin đăng nhập
  • Chia sẻ profile, data
  • Mua app một lần
  • Dùng chung các sản phẩm IAP

Hướng store:

  • Cùng package full name
  • Bán app một lần
  • Bán các sản phẩm IAP một lần
  • Chia sẻ Roaming data
  • Chia sẻ notification channel

Hướng phát triển

  • Shared project-type được thêm vào Visual Studio
  • Tái sử dụng code cho thống nhất API

Xây dựng một ứng dụng Universal với Visual Studio

Bạn có thể xây dụng ứng dụng Windows và Windows Phone cùng lúc, và chia sẻ code, user control, style, string, và nhiều thứ khác giữa 2 project trong Visual Studio.

Nếu bạn đã có ứng dụng Windows Store, bạn có thể thêm vào một ứng dụng Windows Phone Store trong cùng solution và ngược lại.

Project templates cho universal app sẽ được cài đặt khi bạn cài Visual Studio 2013 với Update 2 hoặc mới hơn.

Bước đầu tiên bạn phải chọn project template là “Universal app” trong cửa sổ New Project

Sẻ có 3 project được thêm vào Solution của bạn trong Solution Explorer.

  • Windows project.
  • Windows Phone project.
  • Shared project.

  1. Windows Store project chứa các XAML page và code cho Windows app.
  2. Windows Phone project chứa các XAML page và code cho Windows Phone app.
  3. Shared project chứa code chạy được trên cả 2 nền tảng. Nội dung trong Shared project sẻ tự động thêm vào project Windows Phone và Windows Store khi chúng được build.

Trong Shared project, bình thường bạn sẻ viết các code dùng chung cho cả 2 nền tảng.

Để viết các đoạn code thể hiện cùng một chức năng nhưng nội dung thì tùy theo nền tảng bạn phải dùng #ifdef để điều hướng với hằng WINDOWS_APP và WINDOWS_PHONE_APP.

[csharp] #if WINDOWS_APP
     if (!rootFrame.Navigate(typeof(HubPage)))
#endif
#if WINDOWS_PHONE_APP
     if (!rootFrame.Navigate(typeof(WindowsPhoneStartPage)))
#endif     {
          throw new Exception("Failed to create initial page");
     }
[/csharp]

Bạn có thể chọn nền tảng để thể hiện các đoạn code riêng biệt của chúng:

Nếu một API nào đó không hỗ trợ hết cả hai nền tảng thì bạn sẻ được nhắc nhở thế này:

Để sử dụng thư viện thứ 3 bên trong Shared project bạn phải chèn thư viện đó ở cả 2 project Windows và Windows Phone.

Hết bài 1