AccessoryManager.GetNextTriggerDetails 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得下一個觸發程式詳細資料,其中包含觸發程式的資訊,包括通知類型、顯示名稱和建立時間。
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_SMS 和 ID_CAP_SMS_COMPANION 功能。