Exemplo n.º 1
0
        /// <summary>
        /// Trả về byte[] chứa content, việc chuyển đổi về kiểu dữ liệu dùng được thì cần phải làm ở bước bên ngoài
        /// </summary>
        /// <param name="notificationid">ID  của Notification</param>
        /// <returns></returns>
        private static async Task <byte[]> GetNotificationContentAsync(long notificationid)
        {
            var ServerName = LocalSettings.LocalSettingsManager.ServerIP;
            var PortName   = LocalSettings.LocalSettingsManager.RNSClientPort;

            UWPTCPClient.UWPTCPClient client = new UWPTCPClient.UWPTCPClient(ServerName, PortName);

            if (await client.ConnectAsync())
            {
                UWPTCPClient.SendAndReceiveResult result = await client.SendAndRecieveAsync(
                    _FromClientPacketConverter.ObjectToBytes(
                        new SharedModels.NetworkPackets.FromClient.FromClientPacket(
                            SharedModels.NetworkPackets.FromClient.FromClientPacketType.GetNotificationContent,
                            new SharedModels.NetworkPackets.FromClient.GetNotificationContentPacketData(notificationid))));

                if (result.IsSuccess)
                {
                    return(_FromServerPacketConverter.BytesToObject(result.Data).Data);
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine("Lỗi khi liên lạc vs server");
                    return(null);
                }
            }
            else
            {
                System.Diagnostics.Debug.WriteLine("Lỗi kết nối");
                return(null);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Phương thức này sẽ chạy khi Trigger được kích hoạt, không cần gọi tới nó
        /// </summary>
        /// <param name="taskInstance">hệ thống sẽ tự động tạo instance này khi chạy</param>
        public async void Run(IBackgroundTaskInstance taskInstance)
        {
            //nếu sử dụng một phương thức async nào trong hàm này, hàm run sẽ kết thúc trước khi phương thức đó thực hiện xong.
            // sử dụng defferal để thông báo với hệ thống rằng chưa được phép kết thúc phương thức run
            // nếu bạn không sử dụng phương thức async nào, bạn có thể bỏ defferal đi.
            BackgroundTaskDeferral defferal = taskInstance.GetDeferral();

            System.Diagnostics.Debug.WriteLine("Đã nhận được toast");

            // TODO: làm những thứ bạn muốn trong background task ở đây
            // Lưu ý: tất cả các phương thức async nào nằm ngoài khu này đều sẽ không thực hiện được
            string content = (taskInstance.TriggerDetails as RawNotification).Content;

            try
            {
                // lấy id
                long notificationid = long.Parse(content);
                System.Diagnostics.Debug.WriteLine("Notification ID : " + notificationid.ToString());

                #region Bắt đầu liên lạc trực tiếp với server để lấy nội dung thông báo

                CommunicatePacket packet = new CommunicatePacket(CommunicateType.GetNotificationContent, new GetNotificationContentCommunicateData(notificationid));
                try
                {
                    UWPTCPClient.UWPTCPClient client = new UWPTCPClient.UWPTCPClient("115.74.126.7", "22112", ((data) =>
                    {
                        MyBitConverter <SendObject> contentconverter = new MyBitConverter <SendObject>();
                        SendObject notifyContent = contentconverter.BytesToObject(data);
                        UserCode.Run(notifyContent);

                        // sau khi xử lí xong, ta thông báo với hệ thống là hàm run đã thực hiện xong và hệ thống có thể đóng hàm run lại
                        //việc này đồng nghĩa với background task sẽ kết thúc
                        defferal.Complete();
                    }));
                    await client.ConnectAsync();

                    await client.SendAsync(new Models.MyBitConverter <CommunicatePacket>().ObjectToBytes(new CommunicatePacket(CommunicateType.GetNotificationContent, new GetNotificationContentCommunicateData(notificationid))));
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.ToString());
                }
                #endregion
            }
            catch (Exception ex)
            {
                // đường truyền lỗi nên không nhận được id
                System.Diagnostics.Debug.WriteLine(ex.ToString());
            }
        }
Exemplo n.º 3
0
        public static async void SendURI()
        {
            var ServerName = LocalSettings.LocalSettingsManager.ServerIP;
            var PortName   = LocalSettings.LocalSettingsManager.RNSClientPort;
            var DeviceID   = new Windows.Security.ExchangeActiveSyncProvisioning.EasClientDeviceInformation().Id.ToString();
            PushNotificationChannel chanel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();

            System.Diagnostics.Debug.WriteLine(chanel.Uri);
            System.Diagnostics.Debug.WriteLine(DeviceID);
            if (chanel.Uri == null)
            {
                return;
            }
            UWPTCPClient.UWPTCPClient client = new UWPTCPClient.UWPTCPClient(ServerName, PortName);
            try
            {
                await client.ConnectAsync();
            }
            catch
            {
                System.Diagnostics.Debug.WriteLine("connect lỗi");
                return;
            }


            UWPTCPClient.SendAndReceiveResult Result = await client.SendAndRecieveAsync(_FromClientPacketConverter.ObjectToBytes(
                                                                                            new SharedModels.NetworkPackets.FromClient.FromClientPacket(
                                                                                                SharedModels.NetworkPackets.FromClient.FromClientPacketType.Register,
                                                                                                new SharedModels.NetworkPackets.FromClient.RegisterPacketData(DeviceID,
                                                                                                                                                              chanel.Uri, SharedModels.NetworkPackets.OperatingSystemIDTemplates.Windows10,
                                                                                                                                                              LocalSettings.LocalSettingsManager.UserName
                                                                                                                                                              ))));

            if (Result.IsSuccess)
            {
                if (_FromServerPacketConverter.BytesToObject(Result.Data).ResultType == SharedModels.NetworkPackets.FromServer.ServerResult.Success)
                {
                    System.Diagnostics.Debug.WriteLine("ok");
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine("ko register được");
                }
            }
        }
Exemplo n.º 4
0
 public MainPage()
 {
     this.InitializeComponent();
     Client       = new UWPTCPClient.UWPTCPClient(txt_ServerName.Text, txt_Logig_PortName.Text);
     this.Loaded += MainPage_Loaded;
 }