using System; using CoreGraphics; using Foundation; //using HDLSceneSiri; using Intents; using IntentsUI; using UIKit; namespace SiriIntentsUI { public partial class IntentViewController : UIViewController, IINUIHostedViewControlling { protected IntentViewController(IntPtr handle) : base(handle) { } //public override void ViewDidLoad() //{ // base.ViewDidLoad(); // // Do any required interface here. //} //public override void DidReceiveMemoryWarning() //{ // // Releases the view if it doesn't have a superview. // base.DidReceiveMemoryWarning(); // // Release any cached data, images, etc that aren't in use. //} [Export("configureWithInteraction:context:completion:")] public void Configure(INInteraction interaction, INUIHostedViewContext context, Action completion) { throw new NotImplementedException(); } CGSize DesiredSize() { return ExtensionContext.GetHostedViewMaximumAllowedSize(); } [Export("configureViewForParameters:ofInteraction:interactiveBehavior:context:completion:")] public void ConfigureView( NSSet parameters, INInteraction interaction, INUIInteractiveBehavior interactiveBehavior, INUIHostedViewContext context, INUIHostedViewControllingConfigureViewHandler completion) { //if (@available(iOS 12.0, *)) { //HDLRunSceneIntentResponse rsp = interaction.IntentResponse as HDLRunSceneIntentResponse; //if (rsp.Code == HDLRunSceneIntentResponseCode.Success) //{ // this.messageLabel.Text = rsp.SuccessMessage; //} //else if (rsp.Code == HDLRunSceneIntentResponseCode.Failure || rsp.Code == HDLRunSceneIntentResponseCode.Error) //{ // this.messageLabel.Text = rsp.ErrorMessage; //} //else { //messageLabel.Text = "执行成功";// rsp.SuccessMessage; } } CGSize size = new CGSize(DesiredSize().Width, 80); //if (completion != null) completion(true, parameters, size); //var intent = interaction.Intent as OrderSoupIntent; //if (intent is null) //{ // completion(false, new NSSet(), CGSize.Empty); //} //var order = Order.FromOrderSoupIntent(intent); //foreach (var view in View.Subviews) //{ // view.RemoveFromSuperview(); //} //// Different UIs can be displayed depending if the intent is in the //// confirmation phase or the handle phase. //var desiredSize = CGSize.Empty; //if (interaction.IntentHandlingStatus == INIntentHandlingStatus.Ready) //{ // desiredSize = DisplayInvoice(order, intent); //} //else if (interaction.IntentHandlingStatus == INIntentHandlingStatus.Success) //{ // var response = interaction.IntentResponse as OrderSoupIntentResponse; // if (!(response is null)) // { // desiredSize = DisplayOrderConfirmation(order, intent, response); // } //} //completion(true, parameters, desiredSize); } } }