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 со свойством TriggerDetails, содержащим INotificationTriggerDetails. Обратите внимание, что AccessoryManager телефона доставляет только данные; он не управляет тем, как отрисовываются данные в аксессуаре. Это все до разработчика аксессуаров.
Для вызова этого API необходимо указать возможности ID_CAP_SMS и ID_CAP_SMS_COMPANION в манифесте приложения.