wxr
2024-04-11 9802cf8c8ad9f392c5c5342a352a17efeef55fc9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
using System;
using System.Collections.Generic;
 
using Foundation;
using HDLSceneSiri;
using Intents;
 
namespace SiriIntents
{
    // As an example, this class is set up to handle Message intents.
    // You will want to replace this or add other intents as appropriate.
    // The intents you wish to handle must be declared in the extension's Info.plist.
 
    // You can test your example integration by saying things to Siri like:
    // "Send a message using <myApp>"
    // "<myApp> John saying hello"
    // "Search for messages in <myApp>"
    [Register("IntentHandler")]
    public class IntentHandler : INExtension//, IINSendMessageIntentHandling, IINSearchForMessagesIntentHandling, IINSetMessageAttributeIntentHandling
    {
        protected IntentHandler(IntPtr handle) : base(handle)
        {
            // Note: this .ctor should not contain any initialization logic.
        }
 
        public override NSObject GetHandler(INIntent intent)
        {
            // This is the default implementation.  If you want different objects to handle different intents,
            // you can override this and return the handler you want for that particular intent.
 
            if (intent is HDLRunSceneIntent)
            {
                return new HDLRunSceneIntentHandlder();
            }
 
            return this;
        }
 
        //// Implement resolution methods to provide additional information about your intent (optional).
        //[Export("resolveRecipientsForSearchForMessages:withCompletion:")]
        //public void ResolveRecipients(INSendMessageIntent intent, Action<INPersonResolutionResult[]> completion)
        //{
        //    var recipients = intent.Recipients;
        //    // If no recipients were provided we'll need to prompt for a value.
        //    if (recipients.Length == 0)
        //    {
        //        completion(new INPersonResolutionResult[] { INPersonResolutionResult.NeedsValue });
        //        return;
        //    }
 
        //    var resolutionResults = new List<INPersonResolutionResult>();
 
        //    foreach (var recipient in recipients)
        //    {
        //        var matchingContacts = new INPerson[] { recipient }; // Implement your contact matching logic here to create an array of matching contacts
        //        if (matchingContacts.Length > 1)
        //        {
        //            // We need Siri's help to ask user to pick one from the matches.
        //            resolutionResults.Add(INPersonResolutionResult.GetDisambiguation(matchingContacts));
        //        }
        //        else if (matchingContacts.Length == 1)
        //        {
        //            // We have exactly one matching contact
        //            resolutionResults.Add(INPersonResolutionResult.GetSuccess(recipient));
        //        }
        //        else
        //        {
        //            // We have no contacts matching the description provided
        //            resolutionResults.Add(INPersonResolutionResult.Unsupported);
        //        }
        //    }
 
        //    completion(resolutionResults.ToArray());
        //}
 
        //[Export("resolveContentForSendMessage:withCompletion:")]
        //public void ResolveContent(INSendMessageIntent intent, Action<INStringResolutionResult> completion)
        //{
        //    var text = intent.Content;
        //    if (!string.IsNullOrEmpty(text))
        //        completion(INStringResolutionResult.GetSuccess(text));
        //    else
        //        completion(INStringResolutionResult.NeedsValue);
        //}
 
        //// Once resolution is completed, perform validation on the intent and provide confirmation (optional).
        //[Export("confirmSendMessage:completion:")]
        //public void ConfirmSendMessage(INSendMessageIntent intent, Action<INSendMessageIntentResponse> completion)
        //{
        //    // Verify user is authenticated and your app is ready to send a message.
 
        //    var userActivity = new NSUserActivity("INSendMessageIntent");
        //    var response = new INSendMessageIntentResponse(INSendMessageIntentResponseCode.Ready, userActivity);
        //    completion(response);
        //}
 
        //// Handle the completed intent (required).
        //public void HandleSendMessage(INSendMessageIntent intent, Action<INSendMessageIntentResponse> completion)
        //{
        //    // Implement your application logic to send a message here.
 
        //    var userActivity = new NSUserActivity("INSendMessageIntent");
        //    var response = new INSendMessageIntentResponse(INSendMessageIntentResponseCode.Success, userActivity);
        //    completion(response);
        //}
 
        //// Implement handlers for each intent you wish to handle.
        //// As an example for messages, you may wish to add HandleSearchForMessages and HandleSetMessageAttribute.
 
        //public void HandleSearchForMessages(INSearchForMessagesIntent intent, Action<INSearchForMessagesIntentResponse> completion)
        //{
        //    // Implement your application logic to find a message that matches the information in the intent.
 
        //    var userActivity = new NSUserActivity("INSearchForMessagesIntent");
        //    var response = new INSearchForMessagesIntentResponse(INSearchForMessagesIntentResponseCode.Success, userActivity);
 
        //    // Initialize with found message's attributes
        //    var sender = new INPerson(new INPersonHandle("sarah@example.com", INPersonHandleType.EmailAddress), null, "Sarah", null, null, null);
        //    var recipient = new INPerson(new INPersonHandle("+1-415-555-5555", INPersonHandleType.PhoneNumber), null, "John", null, null, null);
        //    var message = new INMessage("identifier", "I am so excited about SiriKit!", NSDate.Now, sender, new INPerson[] { recipient });
        //    response.Messages = new INMessage[] { message };
        //    completion(response);
        //}
 
        //public void HandleSetMessageAttribute(INSetMessageAttributeIntent intent, Action<INSetMessageAttributeIntentResponse> completion)
        //{
        //    // Implement your application logic to set the message attribute here.
 
        //    var userActivity = new NSUserActivity("INSetMessageAttributeIntent");
        //    var response = new INSetMessageAttributeIntentResponse(INSetMessageAttributeIntentResponseCode.Success, userActivity);
        //    completion(response);
        //}
    }
}