月份: 七月 2018

Xamarin 跨平台程式開發-訊息傳遞 – 軟體開發 教學

   在 Xamarin 開發 IOS、Android、UWP APP時,常常會遇到訊息接受與訊息傳遞,那麼這邊我想簡單示範如何在 Xamarin 實作一個訂閱訊息程式開發技巧。

Android 執行結果畫面

螢幕快照 2018-07-25 下午10.27.43螢幕快照 2018-07-25 下午10.28.49螢幕快照 2018-07-25 下午10.29.10

   Xamarin 透過 MessagingCenter 這個靜態類別來支援訂閱/通知訊息,這個類別主要需要知道三個 Methods ,分別為 Subscribe<TSender, TArgs> 與 Send<TSender, TArgs>、Unsubscribe<TSender, TArgs>。

Subscribe<TSender, TArgs> 方法用來訂閱訊息,當有訊息接受到時,可以通知使用者,例如出現對話訊息、畫面顯示訊息。

Send<TSender, TArgs> 方法用來通知訊息,已告知那些訂閱訊息者。

Unsubscribe<TSender, TArgs> 原先進行訂閱訊息接受,現在進行取消訂閱,後續如果有訊息通知,都不進行接受訊息。

程式範例示範

image

public class MainPageViewModel
     {
         public ObservableCollection<string> Greetings { get; set; }


        public MainPageViewModel ()
         {
             Greetings = new ObservableCollection<string> ();


           MessagingCenter.Subscribe<MainPage> (this, “哈嘍", (sender) => {
                 Greetings.Add(“哈嘍");
             });


            MessagingCenter.Subscribe<MainPage, string> (this, “哈嘍", (sender, arg) => {
                 Greetings.Add(“哈嘍 " + arg);
             });

         }
     }

在上面程式範例 宣告 一個 MainPageViewModel Class,這個作為 ViewModel 用途,在建構式裡實作訂閱服務,這個機制可以減少程式物件耦合度。

下面這行程式碼,主要是用於實作一個名叫 “哈嘍”的訂閱服務  MessagingCenter.Subscribe<MainPage> (this, “哈嘍", (sender) => {  Greetings.Add(“哈嘍"); });


在底下的主程式 MainPage ,實作訂閱通知服務,主要程式邏輯,我透過註解程式說明

public partial class MainPage : ContentPage
     {
         public MainPage()
         {
             InitializeComponent();


            //這邊我綁定一個ViewModel
             BindingContext = new MainPageViewModel();


            //宣告一個按鈕物件,當點選按鈕時,觸發一個發送訊息
             var button1 = new Button { Text = “Say 哈嘍" };
             button1.Clicked += (sender, e) =>
             {
                 MessagingCenter.Send<MainPage>(this, “哈嘍");
             };


            //宣告一個按鈕物件,當點選按鈕時,觸發一個發送訊息,並傳遞內容參數,傳遞的內容是 Allen
             var button2 = new Button { Text = “Say Hi to Allen" };
             button2.Clicked += (sender, e) =>
             {
                 MessagingCenter.Send<MainPage, string>(this, “哈嘍", “Allen");
             };


            //宣告一個按鈕物件,當點選按鈕時,觸發一個取消訂閱服務,並取消對話視窗訊息!
             var button3 = new Button { Text = “取消訂閱服務,並取消對話視窗訊息!" };
             button3.Clicked += (sender, e) =>
             {
                 MessagingCenter.Unsubscribe<MainPage, string>(this, “哈嘍");
                 DisplayAlert(“取消訂閱服務",
                     “This page has stopped listening, so no more alerts; however the ViewModel is still receiving messages.",
                     “OK");
             };


            //訂閱服務(背後的ViewModel還是仍然保持本身實作的訂閱服務),並出現對話視窗訊息
             MessagingCenter.Subscribe<MainPage, string>(this, “哈嘍", (sender, arg) =>
             {
                 DisplayAlert(“訊息已接受", “參數訊息 為 " + arg, “OK");
             });


            //綁定接受到的訂閱訊息
             var listView = new ListView();
             listView.SetBinding(ListView.ItemsSourceProperty, “Greetings");


            //放置物件內容
             Content = new StackLayout
             {
                 Padding = new Thickness(0, 20, 0, 0),
                 Children = { button1, button2, button3, listView }
             };
         }


在 iPhone X 執行畫面如下

螢幕快照 2018-07-25 下午10.20.29螢幕快照 2018-07-25 下午10.20.46

網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen
my_qrcode_1519621481105

軟體派遣人力、專案軟體開發

軟體派遣人力

網智數位-軟體開發擴大合作團隊,現在可以提供企業人力駐點服務、提供 .Net 和 Java 技術入力駐點服務,我們的人力可以駐點於客戶處,與客戶技術團隊共同進行專案開發,並於專案結束後技術移轉並交接給客戶。

IT帥哥美女 (3)

 

專案軟體開發

我們更專注于解決客戶的需求,利用專業的資訊IT技能,協助客戶量身定做軟體開發、專案承接。

我們已開發過 圖控軟體、各產業ERP系統、POS系統、Arduino開發、簽核系統、進銷存軟體、電子發票系統、VR軟體。

橫跨產業:窗簾業、拉門、衛浴、地板、貿易業、醫療業、電子業、馬達知名廠商、汽車維修業。

LINE_ALBUM_AI產生圖_240212_691

 

 

網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen

my_qrcode_1519621481105

 

 

越南-惡魔雞排連鎖店委託開發餐飲管理系統

       去年台商引進知名的惡魔雞排在越南擴展了許多複合式餐飲連鎖分店,因為該台商之前委託網智數位軟體開發團隊開發量身客製化的軟體,運用在工廠端管理系統,因此對我們有信心,又再次委託我們開發中央餐廚管理系統,讓我們的知識領域又有機會接觸餐飲產業。


cm20160403___ba9b53c19c2419ca88452c065ccf5818954

網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen
my_qrcode_1519621481105



電子發票與行動維修工單回報系統

感謝知名廚具大廠-林內股份有限公司,委託網智數位-軟體開發團隊,開發電子發票以及行動維修工單回報系統.

林內致力於生產優質浴室廚房設備商品,不論是熱水器、電熱水器、排油煙機、瓦斯爐、烘碗機及眾多廚房設備廚具林內帶給您最人性化、科技化、綠環保的品質保證。

LINE_ALBUM_AI產生圖_240211_50LINE_ALBUM_AI產生圖_240211_55

林內廚具利用好的ERP資訊系統,建立一個有效率的管理流程、與跨部門、全台各門市的數據整合,該資訊課長也因為重視一個好的資訊系統可以帶來不必要的人力浪費、財報及時分析,所以很早就因應政府規範制定的電子發票導入,也思考各點的維修排程、人力調度規劃,思考平板的普遍,網路雲端技術的成熟下,與我們洽談了許久,開發Android APP結合內部ERP系統,
更容易調配維修師傅人力、以及在外就可以迅速開立電子發票給客戶,也可以及時建立維修單、服務工單至企業總部。

 

網智數位-軟體開發,已有多年的企業管理資訊系統的導入,協助各產業導入一個好的軟體系統,提升企業的管理效率。

 

 

網智數位-軟體開發(軟件開發)
針對各特殊產業都可以量身定做符合貴公司的需求,別人無法克服的就是我們的挑戰
業務合作、軟體委外開發
業務窗口:allen@netqna.com
聯繫電話:0920-883-870
公司電話:02-55991310
公司地址(業務營運處):台北市中山區錦州街 25 號 5 樓
skype: netqna
line:netqna
微信:netqna
黃先生 Allen

my_qrcode_1519621481105