AccessoryManager.GetNextTriggerDetails Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene los siguientes detalles del desencadenador que contienen la información del desencadenador, incluido el tipo de notificación, el nombre para mostrar y la hora creados.
public:
static IAccessoryNotificationTriggerDetails ^ GetNextTriggerDetails();
static IAccessoryNotificationTriggerDetails GetNextTriggerDetails();
public static IAccessoryNotificationTriggerDetails GetNextTriggerDetails();
function getNextTriggerDetails()
Public Shared Function GetNextTriggerDetails () As IAccessoryNotificationTriggerDetails
Devoluciones
Contiene información sobre el desencadenador.
Requisitos de Windows
Características de aplicaciones |
accessoryManager
|
Ejemplos
Determine el tipo real de la notificación. No es necesario admitir todos los tipos, pero el ejemplo siguiente supone que el accesorio está interesado en todo.
// MyBackgroundTask.cs
public async void Run(IBackgroundTaskInstance taskInstance)
{
BackgroundTaskDeferral deferral = taskInstance.GetDeferral();
INotificationTriggerDetails notificationTriggerDetails =
AccessoryManager.NextTriggerDetails();
while (notificationTriggerDetails != null)
// get rid of while loop in case you would like to process one notification at a time.
// You have to use ProcessingTriggerDetailsCompleted to indicate that you are done with this instance of the trigger
{
switch (notificationTriggerDetails.NotificationType)
{
case NotificationType.PhoneCall:
IPhoneNotificationTriggerDetails phoneCallTriggerDetails = notificationTriggerDetails as IPhoneNotificationTriggerDetails;
string callMsg = "Got Phone Notification for ";
switch (phoneCallTriggerDetails.PhoneNotificationType)
{
case PhoneNotificationType.NewCall:
case PhoneNotificationType.CallChanged:
callMsg +=
phoneCallTriggerDetails.PhoneNotificationType.ToString();
callMsg += " having direction " +
phoneCallTriggerDetails.CallDetails.CallDirection.ToString();
callMsg += " from " +
phoneCallTriggerDetails.CallDetails.PhoneNumber + "(" +
phoneCallTriggerDetails.CallDetails.ContactName + ") ";
callMsg += "Media type " +
phoneCallTriggerDetails.CallDetails.CallMediaType + "," +
phoneCallTriggerDetails.CallDetails.CallTransport;
callMsg += " with State " +
phoneCallTriggerDetails.CallDetails.State.ToString();
callMsg += " and Call id " +
phoneCallTriggerDetails.CallDetails.CallId;
Debug.WriteLine(callMsg);
//Based on input from the device use the following methods to take action on the call
//Accept Call
//AccessoryManager.AcceptPhoneCall(phoneCall.CallDetails.CallId);
//Reject With SMS
//IReadOnlyList<ITextResponse> listResponses = phoneCall.CallDetails.PresetTextResponses;
//string response = listResponses[0].Content;
// AccessoryManager.RejectPhoneCall(phoneCall.CallDetails.CallId, listResponses[0].Id);
// Reject Call
// AccessoryManager.RejectPhoneCall(phoneCall.CallDetails.CallId);
break;
case PhoneNotificationType.PhoneCallAudioEndpointChanged:
case PhoneNotificationType.PhoneMuteChanged:
callMsg += phoneCallTriggerDetails.PhoneLineChangedId;
callMsg +=
phoneCallTriggerDetails.PhoneNotificationType.ToString();
Debug.WriteLine(callMsg);
break;
}
break;
case NotificationType.Toast:
IToastNotificationTriggerDetails toast =
notificationTriggerDetails as IToastNotificationTriggerDetails;
Debug.WriteLine("Got toast from :" + toast.AppDisplayName + " AppId: " + toast.AppId + " Header: " + toast.Text1 + " Body: " + toast.Text2 + " IsGhost:" + toast.SuppressPopup + " at: " + toast.TimeCreated);
break;
case NotificationType.Alarm:
IAlarmNotificationTriggerDetails alarmTriggerDetails = notificationTriggerDetails as IAlarmNotificationTriggerDetails;
Debug.WriteLine("Got Alarm :" + alarmTriggerDetails.AppDisplayName + " AppId: " + alarmTriggerDetails.AppId + " Title: " + alarmTriggerDetails.Title + " IsActive: " + alarmTriggerDetails.IsActive + " TimeStamp:" + alarmTriggerDetails.Timestamp);
break;
case NotificationType.AppUninstalled:
INotificationTriggerDetails appUninstallTriggerDetails = notificationTriggerDetails as INotificationTriggerDetails;
Debug.WriteLine("Got Application Uninstall Trigger for App: " + appUninstallTriggerDetails.AppDisplayName + " AppId: " + appUninstallTriggerDetails.AppId + " at" + appUninstallTriggerDetails.TimeCreated);
break;
case NotificationType.Email:
//get the Email data from trigger details
case NotificationType.Sms:
//get the SMS details
break;
default:
Debug.WriteLine("Not supported notification type");
break;
}
//TODO: Make connection and send the data to the accessory
//Mark the trigger details as completed processing
AccessoryManager.ProcessingTriggerDetailsCompleted(notificationTriggerDetails);
notificationTriggerDetails =
AccessoryManager.NextTriggerDetails();
}
deferral.Complete();
}
}
Comentarios
El AccessoryManager reactivará backgroundTask cuando encuentre una notificación de que el accesorio registrado para ver. BackgroundTask se proporciona una IBackgroundTaskInstance que tiene una propiedad TriggerDetails que contiene INotificationTriggerDetails. Tenga en cuenta que el AccessoryManager del teléfono solo entrega los datos; no controla cómo se representan las cosas en el accesorio. Eso es todo para el desarrollador de accesorios.
Llamar a esta API requiere que se especifiquen las funcionalidades ID_CAP_SMS y ID_CAP_SMS_COMPANION en el manifiesto de aplicación.