2013-03-25 41 views
12

Mục tiêu: Phát triển ứng dụng di động nền tảng chéo sử dụng Xamarin studio hiển thị thông báo vào ngày và giờ nhất định.Xamarin: Nền tảng Cross đơn giản Ứng dụng báo thức

Câu hỏi:

a) Điều gì sẽ/có thể được chia sẻ giữa các nền tảng nếu tôi muốn phát triển ứng dụng như vậy. (Một thiết kế kết cấu Với các lớp học có thể sẽ được đánh giá cao)

b) Sử dụng Bộ hẹn giờ hoặc AlarmManager có tốt hơn không?

c) Loại dự án nào sẽ được tạo cho Dự án lõi được chia sẻ (Thư viện lớp di động/Thư viện nền tảng cụ thể/Dự án đồng bằng C#)?

Cảm ơn trước.

Trả lời

16

tôi đã được tập trung vào làm thế nào để mã cổ phiếu tốt nhất giữa Android và iOS những quá khứ vài tuần và đây là gợi ý của tôi dựa trên kinh nghiệm của tôi:

a) Nói chung, bạn có thể chia sẻ bất cứ điều gì giữa các nền tảng mà không phải là nền tảng cụ thể.

Tôi có xu hướng sử dụng người trình bày hoặc người hòa giải giữ tham chiếu đến chế độ xem được xác định bởi giao diện. Ví dụ: nếu tôi có Chế độ xem đăng nhập, tôi sẽ có UIViewController trên iOS và Hoạt động trên Android của tôi đều triển khai giao diện ILoginView. Giao diện này sẽ có định nghĩa sau đây:

  • Getters cho Username và Password
  • Một sự kiện được gọi là LoginSubmitted
  • Hai phương pháp ShowLoginFailed và GoNextScreen

Người dẫn chương trình/Hòa giải viên sẽ chịu trách nhiệm cho việc nghe thông tin đăng nhập được gửi, nhận tên người dùng/mật khẩu và chuyển những thứ đó cho một cuộc gọi hoặc lệnh dịch vụ. Bất cứ khi nào người hòa giải nhận được kết quả của lệnh/dịch vụ, nó sẽ chịu trách nhiệm gọi ShowLoginFailed hoặc GoNextScreen.

Tôi cũng đã sử dụng giao diện để xác định Trình quản lý SQLite (https://github.com/praeclarum/sqlite-net/tree/master/src) hoặc một đại biểu chịu trách nhiệm thực hiện cuộc gọi dịch vụ API web thực tế. Tôi đã tìm thấy tôi đã phải làm điều này bởi vì có một số nền tảng biên dịch cụ thể mà cần phải xảy ra cho người quản lý SQLite và RestSharp.

Câu chuyện dài ngắn, giao diện là bạn của bạn đặc biệt là khi bạn kết hợp chúng với một số loại hệ thống Dependency Injection.

b) Nếu bạn muốn người dùng được nhắc bằng cảnh báo khi thiết bị của họ ở chế độ ngủ hoặc khi họ đang ở trong ứng dụng khác, tôi sẽ sử dụng AlarmManager cho Android và LocalNotification cho iOS.

c) Bạn có thể sử dụng PCL với Xamarin.Android và Xamarin.iOS. Vấn đề là PCL chưa được hỗ trợ 100%. Tuy nhiên, có một số tinh chỉnh bạn có thể làm cho môi trường dev của bạn mà hy vọng sẽ đưa bạn đến nơi bạn muốn:

  • Chuyển sang Beta hoặc kênh Alpha trong Xamarin Studio: "Xamarin Studio" -> "Check for Updates "-> Thay đổi kênh trong hộp kết hợp ở phía trên bên trái của hộp thoại bật lên -> Chọn" Khởi động lại và cài đặt bản cập nhật ". Điều này sẽ cho phép bạn có cả dự án Android và iOS có thể liên kết với cùng một PCL trong cùng một giải pháp.

  • Sau khi cập nhật XS, XS gần gũi và làm theo hướng dẫn trong bài viết này để sửa đổi Mono bạn cài đặt để PCLs đúng biên dịch: MonoDevelop: is it possible to switch PCL's compiler?

  • Để nhận được mã gợi ý để chơi đẹp hơn bên trong dự án PCL của bạn, bạn sẽ cần để lấy mscorlib.dll từ cài đặt Mono của bạn và đặt nó vào một thư mục DLL trong thư mục dự án của bạn và thêm một tham chiếu đến nó trong dự án PCL của bạn. Bạn có thể tìm dll ở đây: /Library/Frameworks/Mono.framework/Versions/3.0.10/lib/mono/4.0

Một khi bạn đã thực hiện tất cả điều đó, bạn phải ở trong tình trạng tốt nhận được PCL của bạn hoạt động. Tôi đã thấy rằng điều này đáng giá hơn trong công việc mà tôi có thể tạo ra một dự án Test Unit trong XS liên kết nó với PCL và chạy các kiểm thử từ bên trong IDE. Ngoài ra, tôi có thể sử dụng libs như Moq để giả lập quan điểm của tôi và làm các bài kiểm tra tích hợp.

Xamarin hứa hẹn rằng hỗ trợ PCL đầy đủ sẽ đến "sớm" và chúng tôi sẽ không phải lo lắng về những hacks này.

+0

Nhìn vào Xamarin - Tôi thích ý tưởng của bạn về việc sử dụng các giao diện. Rất hữu ích. – YnotDraw

+0

Thông tin tuyệt vời. Cảm ơn vì đăng. – Stonetip

+0

Nếu bạn muốn viết một ứng dụng chạy trên tất cả các nền tảng thì zamarin là lựa chọn duy nhất. iOS, Android, Firefox OS – user3491862

1

Kiểm tra hướng dẫn này từ nhóm Xamarin để bắt đầu: http://docs.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications

Đây là phần thứ 4 đề cập đến câu hỏi của bạn trong phần C. http://docs.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/part_4_-_platform_divergence_abstraction_divergent_implementation

Bên cạnh đó, Xamarin Studio Dashboard/Main Màn hình (?) Ở bên phải có 2 ứng dụng bạn có thể tải xuống hoàn toàn làm việc và nhắm mục tiêu 2-3 nền tảng để bạn có thể xem cách cấu trúc ứng dụng khi chia sẻ mã giữa các dự án.

Có rất nhiều hướng dẫn và hướng dẫn khác trên trang web của họ không mất nhiều thời gian để đọc và thực hành.

2

Xamarin, kể từ bây giờ, có thể giúp bạn chia sẻ logic nghiệp vụ. tức là và cơ sở dữ liệu, dịch vụ web hoặc bất kỳ mã nào như vậy sẽ không có sự phụ thuộc vào nền tảng bạn đang làm việc. Bạn viết mã bằng C#. Vì vậy, bạn có quyền truy cập vào các tính năng cơ bản của C#, hoặc để được chính xác bằng lời nói, các tính năng đơn sắc cụ thể mà bạn có thể sử dụng.

Như một kết luận, những gì tôi có thể tóm tắt là: bạn có thể tạo một dự án riêng cho phần cuối của tác phẩm và một dự án riêng biệt cho giao diện người dùng và mã của nó phía sau. (cả hai rõ ràng là trong cùng một không gian làm việc). Sau đó, bạn có thể sử dụng loại lõi trung tâm này của dự án kết thúc trở lại trong một ứng dụng IOS, ứng dụng android và theo mặc định trong một ứng dụng WP8 (ngay cả một ứng dụng mac và cửa sổ). Vì vậy, ngoại trừ Core, bạn cần phải đặt một số nỗ lực thêm vào mã hóa riêng cho tất cả các nền tảng liên quan đến giao diện người dùng, trình xử lý của nó và mã phía sau.

+1

Xamarin hiện đã giới thiệu Xamarin.Forms tóm tắt việc tạo giao diện người dùng và tạo khả năng tạo giao diện người dùng cho Android, iOS và WinPhone sử dụng cùng mã cơ sở (xamarin.com/forms). Do đó, không bắt buộc phải viết lại giao diện người dùng cho mỗi nền tảng. – HischT

+0

Tuyệt vời :) Cảm ơn bạn đã cập nhật HischT –

2

Tôi biết đây là một bài cũ nhưng bất cứ ai muốn làm điều này ngày nay chắc chắn nên xem xét Xamarin.Forms mà ra vào đầu năm nay mà là một bộ điều khiển nền tảng thực sự chéo vì vậy bạn chỉ tạo ra một giao diện người dùng

Các vấn đề liên quan