/// <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); } }
/// <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()); } }
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"); } } }
private async void button_Click(object sender, RoutedEventArgs e) { if (!await Client.ConnectAsync()) { await new MessageDialog("Kết nối tới login server thất bại").ShowAsync(); //return; } var result = await Client.SendAndRecieveAsync( _FromClientConverter.ObjectToBytes( new ClientNetworkPacketSharedModels.FromClient.FromClientPacket ( ClientNetworkPacketSharedModels.FromClient.FromClientPacketType.Login, new ClientNetworkPacketSharedModels.FromClient.FCLoginPacketData(txt_UserName.Text, txt_Pasword.Text) ))); if (result.IsSuccess) { await new MessageDialog("Đăng nhập thành công").ShowAsync(); var FromserverPacket = _FromLoginServerConverter.BytesToObject(result.Data); var PacketData = FromserverPacket.Data as ClientNetworkPacketSharedModels.FromServer.FSLoginPacketData; ClientHelper.RegisterUserNameWithRNS(PacketData.OldID); System.Diagnostics.Debug.WriteLine("register done"); } else { System.Diagnostics.Debug.WriteLine("Đăng nhập thất bại"); } PushNotificationChannel chanel = await Notification_Helper_Client.Normal_Task.getChanel(); System.Diagnostics.Debug.WriteLine(chanel.Uri); System.Diagnostics.Debug.WriteLine(Notification_Helper_Client.Device.ID); if (chanel.Uri == null) { return; } chanel.PushNotificationReceived += Chanel_PushNotificationReceived; txt_URI.Text = chanel.Uri; }