AccessoryManager.GetNextTriggerDetails 方法

定义

获取包含触发器信息(包括通知类型、显示名称和创建时间)的下一个触发器详细信息。

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

返回

包含有关触发器的信息。

Windows 要求

应用功能
accessoryManager

示例

确定通知的实际类型。 不需要支持所有类型,但下面的示例假定附件对所有内容都感兴趣。

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

注解

当 AccessoryManager 遇到附件注册要查看的通知时,它将唤醒 BackgroundTask。 为 BackgroundTask 提供了一个 IBackgroundTaskInstance,它具有包含 INotificationTriggerDetails 的 TriggerDetails 属性。 请注意,手机的 AccessoryManager 仅提供数据;它不控制在附件上呈现内容的方式。 这一切都由附件开发人员决定。

调用此 API 需要在应用程序清单中指定 ID_CAP_SMSID_CAP_SMS_COMPANION 功能。

适用于