private void OnUpdateReceived(IActivatedEventArgs activatedEventArgs) { // Handle toast activation if (activatedEventArgs is ToastNotificationActivatedEventArgs) { var toastActivationArgs = activatedEventArgs as ToastNotificationActivatedEventArgs; // Parse the query string QueryString args = QueryString.Parse(toastActivationArgs.Argument); var not = new PlainNotification() { Uid = Convert.ToUInt32(args["uid"]) }; // See what action is being requested switch (args["action"]) { case "positive": OnAction(not, true); break; case "negative": OnAction(not, false); break; } } }
private async void AncsManagerOnOnNotification(PlainNotification o) { await this.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => { this.DataList.Add(o); }); Show(new ToastContent() { Visual = new ToastVisual() { TitleText = new ToastText() { Text = o.Title }, BodyTextLine1 = new ToastText() { Text = o.Message } }, Scenario = ToastScenario.Default, Actions = new ToastActionsCustom() { Buttons = { new ToastButtonDismiss("Ok") } } }); }
private async void DataSourceCharacteristicOnValueChanged(GattCharacteristic sender, GattValueChangedEventArgs args) { var stream = args.CharacteristicValue.AsStream(); var br = new BinaryReader(stream); var cmdId = br.ReadByte(); var notUid = br.ReadUInt32(); var attr1 = (NotificationAttribute)br.ReadByte(); var attr1len = br.ReadUInt16(); var attr1val = br.ReadChars(attr1len); var attr2 = (NotificationAttribute)br.ReadByte(); var attr2len = br.ReadUInt16(); var attr2val = br.ReadChars(attr2len); EventFlags?flags = null; if (FlagCache.ContainsKey(notUid)) { flags = FlagCache[notUid]; } var not = new PlainNotification() { EventFlags = flags, Uid = notUid, Title = new string(attr1val), Message = new string(attr2val) }; OnNotification?.Invoke(not); }
public async void OnAction(PlainNotification notification, bool positive) { //Relay notification action back to device var not = new NotificationActionData { CommandId = 0x02, //CommandIDPerformNotificationAction NotificationUID = notification.Uid, ActionId = positive ? ActionId.Positive : ActionId.Negative }; var bytes = StructureToByteArray(not); try { var status = await this.ControlPointCharacteristic.WriteValueAsync(bytes.AsBuffer(), GattWriteOption.WriteWithResponse); } catch (Exception) { } }
private async void AncsManagerOnOnNotification(PlainNotification o) { XmlDocument toastXml = null; ToastVisual toastVisual = new ToastVisual() { BindingGeneric = new ToastBindingGeneric() { Children = { new AdaptiveText() { Text = o.Title }, new AdaptiveText { Text = o.Message } } }, }; // toast actions ToastActionsCustom toastActions = new ToastActionsCustom(); switch (o.CategoryId) { case CategoryId.IncomingCall: //toastVisual.BindingGeneric.AppLogoOverride = new ToastGenericAppLogo() { Source = "Assets/iOS7_App_Icon_Phone.png" }; toastActions.Buttons.Add(new ToastButton("Answer", new QueryString() { { "action", "positive" }, { "uid", o.Uid.ToString() } }.ToString()) { ActivationType = ToastActivationType.Foreground }); //toastVisual.BindingGeneric.AppLogoOverride = new ToastGenericAppLogo() { Source = "Assets/iOS7_App_Icon_Phone.png" }; toastActions.Buttons.Add(new ToastButton("Dismiss", new QueryString() { { "action", "negative" }, { "uid", o.Uid.ToString() } }.ToString()) { ActivationType = ToastActivationType.Foreground }); break; case CategoryId.MissedCall: //toastVisual.BindingGeneric.AppLogoOverride = new ToastGenericAppLogo() { Source = "Assets/iOS7_App_Icon_Phone.png" }; toastActions.Buttons.Add(new ToastButton("Dial", new QueryString() { { "action", "positive" }, { "uid", o.Uid.ToString() } }.ToString()) { ActivationType = ToastActivationType.Foreground }); //toastVisual.BindingGeneric.AppLogoOverride = new ToastGenericAppLogo() { Source = "Assets/iOS7_App_Icon_Phone.png" }; toastActions.Buttons.Add(new ToastButton("Dismiss", new QueryString() { { "action", "negative" }, { "uid", o.Uid.ToString() } }.ToString()) { ActivationType = ToastActivationType.Foreground }); break; case CategoryId.Voicemail: //toastVisual.BindingGeneric.AppLogoOverride = new ToastGenericAppLogo() { Source = "Assets/iOS7_App_Icon_Phone.png" }; toastActions.Buttons.Add(new ToastButton("Dial", new QueryString() { { "action", "positive" }, { "uid", o.Uid.ToString() } }.ToString()) { ActivationType = ToastActivationType.Foreground }); toastActions.Buttons.Add(new ToastButtonDismiss()); break; case CategoryId.Email: //toastVisual.BindingGeneric.AppLogoOverride = new ToastGenericAppLogo() { Source = "Assets/iOS7_App_Icon_Email.png" }; toastActions.Buttons.Add(new ToastButtonDismiss()); break; default: toastActions.Buttons.Add(new ToastButtonDismiss()); break; } ToastContent toastContent = new ToastContent() { Visual = toastVisual, Scenario = ToastScenario.Default, Actions = toastActions, }; toastXml = toastContent.GetXml(); ToastNotification toastNotification = new ToastNotification(toastXml) { ExpirationTime = DateTime.Now.AddMinutes(5) }; ToastNotificationManager.CreateToastNotifier().Show(toastNotification); // Old stuff await this.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => { this.DataList.Add(o); }); }