Thiết kế giao diện UX-UI cho ứng dụng

- Xây dụng Floating Button Action (Nút động khi runtime)

Floating Button Action. Download package này về https://github.com/SuavePirate/Xamarin.Forms.Controls.FloatingActionButton

Xây dựng 3 file: 1 trong portal, 1 android renderer, 1 ios renderer

Gọi Custom Control khi sử dụng.

68747470733a2f2f69312e77702e636f6d2f616c657864756e6e6465762e66696c65732e776f726470726573732e636f6d2f323031372f30342f73637265656e73686f745f313439333137333430302e706e673f73736c3d3126773d343530

- Xây dựng Nagavition Icon

MyTabsRenderer, có thể tham khảo và download tại https://github.com/jamesmontemagno/blog-samples và link hướng dẫn từng bước https://montemagno.com/dynamically-changing-xamarin-forms-tab-icons-when-select/ 

fancytabs

Các bước xây dựng gồm 3 phần: 1 portal, 1 android, 1 ios

Các bước cơ bản để xây dựng một dự án Xamarin

Hiện nay, phát triển ứng dụng di động đang phát triển mạnh mẽ và viết ứng dụng chạy trên đa nền tảng càng được chú trọng vì sự phát triển bùng nổ của Android và iOS. Chính vì thế, hôm nay chúng tôi xin trình bày các bước cơ bản để xây dựng một ứng dụng Xamarin (một công nghệ đa nền tảng viết bằng ngôn ngữ C#)

- Bước 1: Phân tích và thiết kế ứng dụng.

- Bước 2: Khởi tạo dự án và chuẩn bị các thành phần cần thiết

- Bước 3: Các bước thực hiện.

- Bước 4: Xuất bản ứng dụng lên kho.

   + CH Play:

        * Cần đảm bảo bỏ chọn Use Shared Runtime

        * Chuẩn bị keyStore (nhớ lưu cẩn thận, khi cần update app phải nhớ pass của keystore này.

        * Chọn dự án Android, Chọn Archive...

   + App Store

        *  Chuẩn bị Publishing Xamarin.iOS apps to the App Store: - Tạo ID entitlements, Tạo khóa, Tạo provisioning profile.

        * Cấu hình trên visual để chuẩn bị upload app lên iTunes.

          

Đang cập nhật....

Huỳnh Lý Thanh Nhàn

https://sites.google.com/site/hltnhan/

Tìm hiểu Firebase với lập trình di động Android-iOS bằng Xamarin

Tìm hiểu Firebase.

Firebase là một nền tảng ứng dụng di động và web với các công cụ và hạ tầng được thiết kế để giúp các lập trình viên xây dựng các ứng dụng chất lượng cao và rất mạnh mẽ đối với ứng dụng backend, nó bao gồm việc lưu trữ dữ liệu, xác thực người dùng, static hosting......Nên lập trình viên chỉ cần chú tâm đến việc nâng cao trải nghiệm người dùng.

Firebase Realtime Database.

Dữ liệu trong cơ sở dữ liệu Firebase của bạn được lưu trữ dưới dạng JSON và đồng bộ realtime đến mọi kết nối client. Khi bạn xây dựng những ứng dụng đa nền tảng như Android, IOS và JavaScrip SDKs, tất cả các client của bạn sẽ chia sẻ trên một cơ sở dữ liệu Firebase và tự động cập nhật với dữ liệu mới nhất.

Tự động tính toán quy mô ứng dụng của bạn.

Khi ứng dụng của bạn muốn phát triển, bạn không cần lo lắng về việc nâng cấp máy chủ...Firebase sẽ xử lý việc tự động cho bạn. Các máy chủ của Firebase quản lý hàng triệu kết nối đồng thời và hàng tỉ lượt truy vấn mỗi tháng.

Các tính năng bảo mật lớp đầu.

Tất cả dữ liệu được truyền qua một kết nối an toàn SSL với một chứng nhận 2048-bit. Cở sở dữ liệu truy vấn và việc xác nhận  được điều khiển tại một cấp độ chi tiết sử dụng theo một số các quy tắc mềm dẻo security rules language.  Tất cả các logic bảo mật dữ liệu của bạn được tập trung ở một chỗ để dễ dàng cho việc cập nhật và kiểm thử.

Làm việc offline.

Ứng dụng Firebase của bạn sẽ duy trì tương tác bất chấp một số các vấn đề về internet xảy ra. Trước khi bất kỳ dữ liệu được ghi đến server thì tất  cả dữ liệu lập tức sẽ được viết vào một cơ sử dữ liệu Firebase ở local. Ngay khi có thể kết nối lại, client đó sẽ nhận bất kỳ thay đổi mà nó thiếu và đồng bộ hoá nó với trạng thái hiện tại server.

Xác thực người dùng.

Với Firebase, bạn có thể dễ dàng xác thực người dùng từ ứng dụng của bạn trên Android, iOS và JavaScript SDKs chỉ với một vài đoạn mã. Firebase đã xây dựng chức năng cho việc xác thực người dùng với Email, Facebook, Twitter, GitHub, Google, và xác thực nạc danh. Các ứng dụng sử dụng chức năng xác thực của FireBase có thể giải quyết được vấn đề khi người dùng đăng nhập, nó sẽ tiết kiện thời gian và rất nhiều các vấn đề phức tạp về phần backend. Hơn nữa bạn có thể tích họp xác thực người dùng với các chức năng backend đã có sẵn sử dụng custom auth tokens.

Firebase Hosting.

Phát triển ứng dụng web của bạn trong thời gian ngắn với các hosting tĩnh đã được cung cấp sẵn. Tất cả các kết nối được phân phối qua SSL từ CDN trên toàn thể giới của Firebase

Triểu khai siêu tốc: Việc triển khai sử dụng các công cụ dòng lệnh Firebase  và có thể quay trở lại với phiên bản trước chỉ với một cú click chuột. Tất cả các ứng dụng sẽ có đường dẫn mặc đinh ở sau firebaseapp.com (https://agitech.firebaseio.com/) và nếu trả phí thì có thể triểu khai một tên miền tuỳ chỉnh.

Giới thiệu về xamarin

Xamarin hiện là bộ công cụ duy nhất có thể đưa một ngôn ngữ – C#, Class Library và runtime chạy được trên cả 3 nền tảng di động là iOS, Android và Windows Phone (Windows Phone mặc nhiên đã sử dụng C#) mà vẫn đảm bảo đủ hiệu suất thậm chí các đòi hỏi của game.

Sau đây là một số ứng dụng mà chúng tôi đã phát triển bằng xamarin

tkb1

Ứng dụng xem thời khóa biểu offline cho sinh viên


android

Ứng dụng tra cứu cây thuốc An Giang

Kết nối – Binding – hoàn toàn với SDK nguyên mẫu: Xamarin xây dựng theo cơ chế chuyễn đổi trực tiếp những phương thức trong SDK của Android và iOS sang ngôn ngữ .Net, binding một cách mạnh mẽ, dễ dàng chuyển đổi và sử dụng. Cung cấp trình dò lỗi và kiểm tra “compile-time” hoặc trong quá trình phát triển, giảm thiểu lỗi runtime và tăng chất lượng ứng dụng.

Tương thích với Objective-C, Java, C, và C++: Xamarin cho phép chèn trực tiếp các thư viện Objective-C, Java, C, và C++, giúp lập trình viên có thể sử dụng các thứ viện của bên thứ 3 một cách dễ dàng.

Modern Language Constructs: Do sử dụng C#, một ngôn ngữ hiện đại và có những phần vượt trội hơn với Objective-C và Java, như Dynamic Language Features, Lambdas, LINQ, Parallel Programming, Generics, v.v…

Base Class Library (BCL): Ứng dụng Xamarin sử dụng .NET BCL, một bộ gồm rất nhiều class hỗ trợ toàn diện và sắp xếp hợp lý, như XML, Database, Serialization, IO, String, Networking và nhiều thứ khác.

Modern Integrated Development Environment (IDE): Xamarin sử dụng bộ công cụ Xamarin Studio trên Mac OS, và Xamarin Studio hoặc Visual Studio 2013 trên Windows.

Hỗ trợ Cross Platform: Xamarin hỗ trợ đa nền tảng một cách tinh vi trên 3 hệ điều hành di động phổ biến là iOS, Android và Windows Phone. Ứng dụng có thể được viết với 90% code được chia sẻ/dùng chung. Qua đó có thể giảm đáng kể chi phí và thời gian phát triển ứng dụng di động cho 3 nền tảng phổ biến nhất.

Cách Xamarin hoạt động: Xamarin có hai sản phẩm chính Xamarin.iOS và Xamarin.Android, tất cả điểu xây dựng trên Mono, đó là phiên bản mã nguồn mở của FrameWork .NET và được dựa theo tiểu chuẩn của .NET ECMA công bố. Mono đã có lâu giống như .NET và trên các Platfom: Linux, Unix, FreeBSD, và Mac OS X.

MonoTouch.dll and Mono.Android.dll: Xamarin đã được xây dựng với một tập hợp con của .NET BCL được gọi là hồ sơ Xamarin Mobile. Hồ sơ này đã được tạo riêng cho các ứng dụng điện thoại di động và đóng gói thành MonoTouch.dll và Mono.Android.dll (tương ứng dành cho iOS và Android). Gần giống như cách ứng dụng Silverlight (and Moonlight) xây dựng lại. Trong thực tế Xamarin di động tương đương với Silverlight 4.0 các lớp BCL được thêm. Sau khi ứng biên dịch thành công. Ứng dụng sẽ đóng gói lại thành tập tin có đuôi .apk cho Android và đuôi. app cho iOS

Vòng đời phát triển phần mềm di động (Mobile Development SDLC): vòng đời phát triển di động rất rộng không khác mấy so với vòng đời phát triền phần mềm cho ứng dụng web hay ứng dụng cho máy tính cá nhân. Thường vòng đời giành cho phần mềm di đông có 5 phần chính:

Khởi tạo: tất cả ứng dụng đều bắt đầu từ một ý tưởng. Ý tưởng đó sẽ tinh tế thành cơ sở bềnh vững cho ứng dụng.

Thiết kế: Giai đoạn thiết kế bao gồm xác định trải nghiệm người dùng của ứng dụng (UX) như:  những gì bố trí chung là nó hoạt động, vv, cũng như các biến UX thành một thiết kế giao diện người dùng (UI) phù hợp, thường là với sự giúp đỡ của một nhà thiết kế đồ họa.

Phát triển: Thông thường giai đoạn chuyên sâu tài nguyên nhất, đây là tòa nhà thực tế của ứng dụng.

Ổn định: khi ứng dụng sắp hành thành. QA thường bắt đầu kiểm tra ứng dụng và các lỗi đã được khắc phục. Thông thường, một ứng dụng sẽ đi vào giai đoạn beta có hạn, trong đó một đối tượng người dùng rộng rãi hơn sẽ có cơ hội sử dụng nó và cung cấp phản hồi và thông báo thay đổi

Triển khai: thường thì các giai đoạn phát triển được triển khai chồng lên nhau. Như: giai đoạn phát triển được bắt đầu trong khi giai đoạn thiết kế sấp hoàn thành. Ngoài ra ứng dụng đã tời giai đoạn ổn định nhưng vần cần thêm vẫn cần thêm mới chưc năng.

Những lưu ý khi phát triển di động chúng ta cần quan tâm đến tính đa nhiệm, kích cỡ của thiết bị, loại thiết bị, loại hệ điều hành và giới hạn tài nguyên:

-  Đa nhiệm: có 2 khó khăn quan trọng để sử dụng đa nhiệm trên thiết bị di động. Đầu tiên là giới hạn số màn hình để hiện thị nhiều ứng dụng cùng lúc cho nên thiết bị di động chỉ có thể chạy tại một thời điểm. Thứ hai có nhiều ứng dụng đang chạy và cần nhiều tài nguyên gây tốn pin cho thiết bị.

-  Kích cỡ thiết bị: thiết bị di động thường là điện thoại hoặc máy tính bảng, điện thoại bị giới hạn về không gian màn hình còn máy tình bảng thì lớn những cả hai điều nhỏ so với laptop. Vì thế giao diện người dùng cần phải thiết kế đặc biệt để phù hợp với màn hình điện thoại và máy tính bảng.

-  Thiết bị và phân mảnh hệ điều hành: mỗi thiết bị đều có phần cứng và chức năng khác nhau. Một số ứng dụng cần sử dụng các chức năng đặc biệt trên một thiết bị nên ứng dụng không làm việc trên thiết bị khác. Ví dụ không phải điện thoại nào cũng có camera trước nếu chúng ta xây dựng ứng dụng chat video một số thiết bị sẽ cũng không sử dụng được.Trong khi thiết kế giao diện ứng dụng cần chú ý đến kích thước, tỷ lệ màn hình của thiết bị. Ngoài ra bạn cần phải cân nhắc tới độ phân giải của thiết bị.Trong giai đoạn phát triển, khi bạn viết một chức năng bạn cần phải kiểm tra chức năng đó đầu tiên. Ví dụ khi cần sử dụng chức năng trên thiết bị như camera đầu tiên cần phải yêu cầu sử dụng chức năng đó và sau đó chức năng đang yêu cầu phải được hệ điều hành hỗ trợ cuối cùng là thiết lập cài đặt. Kiểm tra là bước rất quan trọng, nên kiễm tra ứng dụng càng sớm và thường xuyên trên máy thật.

-   Giới hạn tài nguyên: thiết bị di động có rất nhiều và mạnh hơn. Những điều bị giới hạn hiệu năng so với máy tính cá nhân ví dụ: khi phát triển các ứng dụng cho máy tính cá nhân thường không quan tâm đến dung lượng bộ nhớ vì vừa có thể sử dụng bộ nhớ thật với bộ nhớ ảo những đối với thiết bị di động chúng ta có thể sử dụng tất cả bộ nhớ trống để tải một ảnh chất lượng cao. Ngoài ra các ứng dụng cần bộ xử lý nhanh: như game có thể là gánh nặng cho CPU ảnh hưởng đến hiệu năng của thiết bị.Những lưu ý khi phát triển ứng dụng trên nền tảng hệ điều hành Windows Phone như đa nhiệm, khả năng thiết bị, cơ sở dữ liệu và bảo mật.

-   Đa nhiệm: đa nhiệm của Windows Phone cũng giống với iOS và Android vòng đời của một trang, ứng dụng và chạy nền. Mỗi màn hình trong ứng dụng là một thể hiện của lớp trang. Trong đó mỗi sự kiện được liên kết với 1 hoạt động hoặc không.

-   Khả năng thiết bị: mặc dù phần cứng của Windows Phone khá đồng đều vì sự ràng buộc của Microsoft những vẫn có các tùy chỉnh về cầu hình nên bạn cần phải xem xét để tương thích với các thiết bị, cấu hình tùy chọn cho Windows Phone: máy ảnh, la bàn, con quay hồi chuyển.

-   Cơ sở dữ liệu: trong khi iOS và Android hỗ trợ cơ sở dữ liệu SQLite  để lưu trữ dữ liệu. Windows Phone 7 lại không hỗ trợ trong khi Windows phone 7.1 và 8 chỉ có thể sử dụng với LINQ to SQL và không hỗ trợ Transact-SQL. Nhưng bạn có thể sử dụng mã nguồn mở của SQLite để thêm vào ứng dụng. 

-   Bảo mật: ứng dụng khi cần sử dụng phần cứng của thiết bị hay chức năng của hệ điều hành cần phải yêu cầu quyền đó với Manifest (giống với Android).Một số lưu ý để phát triển ứng dụng Android như đa nhiệm, nhiều thiết bị, bảo mật.

-   Đa nhiệm trong Android có hai phần: đầu tiền là vòng đời của Activity. Mỗi màn hình trong ứng dụng Android là một Activity và là chổ tập hợp các sự kiện khi ứng dụng đang chạy nền hoặc đang chạy. Thứ hai để sử dụng được đa nhiệm trong Android ta cần phải sử dụng dịch vụ. Dịch vụ sẽ hoạt đông liện tục và tồn tại độc lập với ứng dụng được sử dụng để thực hiện các quá trình trong khi ứng dụng đang chạy nền.

-   Nhiều thiết bị không giống như iOS có rất ít thiết bị hay các thiết bị Windows Phone phải đáp ứng các yêu cầu tối thiểu. Google áp đặt giới hạn cho các thiết bị có thể chạy Android OS.

-   Bảo mật trong lập trình ứng dụng Android đều chạy một cách riêng biệt. Lưu ý trong khi phát triển khi phát triển ứng dụng trên hệ điều hành iOS: đa nhiệm trong iOS đa nhiệm được điều khiển rất chặt chẻ.

[Xamarin] Hai phương pháp hoạt động của: Shared Projects, Portable Class Libraries, and .NET Standard.

Trong Xamarin có hai tùy chọn cho việc chia sẻ code trong lập trình đa nền tảng: chia sẻ tài nguyên dự án (Shared Asset Projects) và lớp thư viện di động (Portable Class Libraries). Chúng ta sẽ tìm hiểu về các lợi ích, khó khăn cũng như phương pháp hoạt động của: Shared Projects, Portable Class Libraries, and .NET Standard.

- Shared Projects hay Shared Asset Projects cho bạn viết các mã nguồn để chia sẻ cho các nền tảng khác nhau. Hỗ trợ các trình biên dịch chỉ thị để chúng ta có thể điều kiển bao gồm mã nền tảng cụ thể được biên dịch thành một tập con của các dự án đang tham chiếu Shared Projects. Ngoài ra còn có hỗ trợ IDE để giúp quản lý các chỉ thị trình biên dịch và hình dung cách mã sẽ xem xét trong từng ứng dụng. Nếu chúng ta đã sử dụng liên kết tập tin trong quá khứ để chia sẻ mã nguồn giữa các dự án, Shared Projects hoạt động theo cách tương tự nhưng với sự hỗ trợ IDE được cải thiện. Không giống như các loại Project khác Share project sau khi biên dịch sẽ không có đầu ra (tập tin DLL) thay vào đó mã nguồn sẽ được biên dịch vào các mỗi project khác nhau.

shared

Hình 2.2: Sơ đồ cấu trúc ứng dụng Shared Project 

Mã trong một dự án được chia sẻ có thể chứa các chỉ thị trình biên dịch sẽ kích hoạt hoặc vô hiệu các phần của mã tùy thuộc vào dự án ứng dụng nào đang sử dụng mã, được gợi ý bởi các hộp nền tảng màu trong sơ đồ.

Shared Projects không được biên soạn riêng, nó tồn tại hoàn toàn như một nhóm các tập tin mã nguồn có thể được bao gồm trong các dự án khác. Khi được tham chiếu bởi một dự án khác, mã được biên soạn một cách hiệu quả như một phần của dự án đó. Dự án chia sẻ không thể tham khảo bất kỳ loại dự án khác (bao gồm các dự  án chia sẻ khác).              

Lưu ý rằng các dự án ứng dụng Android không thể tham khảo các dự án ứng dụng Android khác - ví dụ như dự án thử nghiệm đơn vị Android không thể tham chiếu dự án ứng dụng Android.

Để tạo Shared Project chọn File >New solution…nhập tên cho project.

create

Hình 2.3: Giao diện tạo mới Project 

Bạn cũng có thể thêm một Shared Project bằng cách chuột phải và chọn Add >New Project.              

Mẫu: một ứng dụng đa nền tảng (Android, iOS, Windows Phone) phải cần có một Application Project. Application project là nới chứa tất cả code của ứng dụng. Ví dụ: một Project sẽ chứa các thư mục sau:

 thumuc

Hình 2.4: Giao diên cấu trúc tập tin của Share Project          

Shared: là chứa tất cả code của cho Project.

TaskyAndroid: Project Xamarin.Android.

TaskyiOS: Project Xamarin.iOS.

Lợi ích của Share Project là cho phép bạn xây dựng ứng dụng trên nhiều nền tảng, bạn có thể thêm một số chức năng trên một nền tảng bằng cách sử dụng trình biên dịch chỉ thị, hoặc xây dựng cho một số nền tảng đặt biệt (Community.CsharpSqlite.WP7).

Khó khăn của Share Project là không như các dự án khác, Share Project không có lắp rấp đầu ra.

- Portable Class Libraries Là một thành phần quan trong khác trong việc xây dựng ứng dụng đa nền tảng là có thể chia sẻ các mã nguồn trên dự án dành riêng cho nền tảng khác nhau. Tuy nhiên, điều này phức tạp bởi thực tế là các nền tảng khác nhau thường sử dụng một bộ phụ khác của .NET Base Class Library (BCL) và do đó xây dụng cấu hình cho .NET Core Library Profile là khác nhau. Điều này có nghĩa là mỗi nền tảng chỉ có thể sử dụng thư viện lớp được nhắm mục tiêu đến cùng một cấu hình, vì vậy chúng sẽ yêu cầu các dự án thư viện riêng biệt cho mỗi nền tảng. Khi tạo Application Project thông thường hoặc Library Project chương trình sẽ tạo ra tập tin DLL nó bị hạn chế làm việc trên một số nền tảng đặt biệt. Có nghĩa là nó chỉ có thể thực hiện trên nên tảng Windows Phone và không hoạt động trên iOS và Android. Khi chúng ta tạo một Portable Class Library, chúng ta có thể chọn các nền tảng mà bạn muốn mã nguồn của bạn để chạy trên các nền tảng đó.

               Tuy nhiên, khi bạn tạo Portable Class Libraries, bạn có thể chọn một sự kết hợp các nền tảng mà bạn muốn chạy mã. Sự lựa chọn tương thích chúng ra  thực hiện khi tạo Thư viện lớp Portable được chuyển thành một định danh "Profile", mô tả các nền tảng mà thư viện hỗ trợ.

               Bảng dưới đây cho thấy một số tính năng khác nhau của nền tảng .NET. Để viết một Assembly PCL được bảo đảm để chạy trên các thiết bị / nền tảng cụ thể chúng ta chỉ cần chọn hỗ trợ nào là cần thiết khi bạn tạo dự án.

sosanh

Hình 2.5: Bảng các tính năng được hổ trợ trên Xamarin

               Cột Xamarin phản ánh thực tế là Xamarin.iOS và Xamarin.Android hỗ trợ tất cả các cấu hình được vận chuyển với Visual Studio 2013 và tính sẵn có của các tính năng trong bất kỳ thư viện nào bạn tạo sẽ chỉ bị giới hạn bởi các nền tảng khác mà bạn chọn để hỗ trợ (như Windows Phone).

               Sơ đồ dưới cho thấy kiến ​​trúc của một ứng dụng nền tảng sử dụng Portable Class Libraries để chia sẻ mã, nhưng cũng sử dụng Dependency Injection để chuyển qua các tính năng phụ thuộc nền tảng

portal

Hình 2.6: Sơ đồ kiến trúc của ứng dụng sử dụng Portable Class Libraries              

Một số thuận lợi của Portabel Class Library như: cho phép chúng ta để xây dựng ứng dụng đa nền tảng với một Project duy nhất, khi bạn chỉnh sửa Project thì tất cả Project con sẽ được cập nhật. Dự án PCL có thể dễ dàng tham khảo bởi các dự án khác. Hoặc lắp ráp đầu ra có thể được chia sẻ để người khác tham khảo trong các giải pháp của họ.              

Bên cạnh đó còn có các khó khăn như: không thể sử dụng biên dịch cho từng nền tảng, chỉ có thể sử dụng một số ít lợi thế FrameWork .NET.

.NET Standard Libraries Là một đặc tả chính thức của các API của .NET được dự định có sẵn trên tất cả các runtimes NET. Động cơ đằng sau thư viện Chuẩn đang thiết lập sự thống nhất lớn hơn trong hệ sinh thái .NET .ECMA 335 tiếp tục thiết lập tính đồng nhất cho hành vi runtime NET, nhưng không có thông số tương tự cho .NET Base Class Libraries (BCL) cho việc triển khai thư viện .NET.

Chúng ta có thể nghĩ về nó như là một, đơn giản, thế hệ tiếp theo của Portable Class Library. Đây là một thư viện với một API thống nhất cho tất cả các nền tảng .NET bao gồm NET Core. Bạn chỉ cần tạo một thư viện chuẩn của .NET và sử dụng nó từ bất kỳ thời gian chạy nào hỗ trợ nền tảng chuẩn NET.

standar

Hình 2.7: Sơ đồ cấu trúc của .NET Standard             

Ưu điểm của .NET Standar Library giống vơi Portable Class Libraries                 

Khuyến điểm: không biên dịch cho từng nền tảng .NET.