Condividi tramite


AccessoryManager.GetNextTriggerDetails Metodo

Definizione

Ottiene i dettagli del trigger successivo contenenti le informazioni sul trigger, incluso il tipo di notifica, il nome visualizzato e l'ora di creazione.

public:
 static IAccessoryNotificationTriggerDetails ^ GetNextTriggerDetails();
 static IAccessoryNotificationTriggerDetails GetNextTriggerDetails();
public static IAccessoryNotificationTriggerDetails GetNextTriggerDetails();
function getNextTriggerDetails()
Public Shared Function GetNextTriggerDetails () As IAccessoryNotificationTriggerDetails

Restituisce

Contiene informazioni sul trigger.

Requisiti Windows

Funzionalità dell'app
accessoryManager

Esempio

Determinare il tipo effettivo della notifica. Non è necessario supportare tutti i tipi, ma l'esempio seguente presuppone che l'accessorio sia interessato a tutto.

// 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();
        }
    }

Commenti

L'AccessorioManager si sveglierà backgroundTask quando rileva una notifica che l'accessorio registrato per visualizzare. BackgroundTask viene fornito un oggetto IBackgroundTaskInstance con una proprietà TriggerDetails che contiene INotificationTriggerDetails. Si noti che l'AccessoryManager del telefono recapita solo i dati; non controlla il rendering delle cose sull'accessorio. Questo è tutto per lo sviluppatore accessorio.

Per chiamare questa API è necessario specificare le funzionalità ID_CAP_SMS e ID_CAP_SMS_COMPANION nel manifesto dell'applicazione.

Si applica a