From dd31df23c4a4b0ab5357014bf822a3704cf21621 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期四, 25 十一月 2021 16:51:01 +0800
Subject: [PATCH] 2021-11-25 1.更新
---
HDLSceneSiriDemo/HDLSceneSiriUI/IntentViewController.m | 59 +++
Shared.IOS.HDLSceneSiri/Shared.IOS.HDLSceneSiri/ApiDefinition.cs | 87 ++--
HDLSceneSiriDemo/HDLSceneSiri/IntentHandler.m | 127 +++++++
HDLSceneSiri/HDLSceneSiri/HDLRunSceneIntent.h | 4
Shared.IOS.HDLSceneSiri/Shared.IOS.HDLSceneSiri/Library/libHDLSceneSiri.a | 0
HDLSceneSiriDemo/HDLSceneSiriUI/Base.lproj/MainInterface.storyboard | 52 +++
HDLSceneSiriDemo/HDLSceneSiriUI/IntentViewController.h | 13
HDLSceneSiriDemo/HDLSceneSiri/IntentHandler.h | 12
HDLSceneSiriDemo/HDLSceneSiriUI/Info.plist | 20 +
HDLSceneSiriDemo/HDLSceneSiri/HDLSceneHandler.h | 16 +
HDLSceneSiriDemo/HDLSceneSiriDemo/Intents.intentdefinition | 181 +++++++++++
HDLSceneSiriDemo/HDLSceneSiri/Info.plist | 22 +
HDLSceneSiriDemo/HDLSceneSiriDemo.xcodeproj/project.pbxproj | 324 +++++++++++++++++++
HDLSceneSiriDemo/HDLSceneSiri/HDLSceneHandler.m | 36 ++
Shared.IOS.HDLSceneSiri/Shared.IOS.HDLSceneSiri/Properties/AssemblyInfo.cs | 2
15 files changed, 903 insertions(+), 52 deletions(-)
diff --git a/HDLSceneSiri/HDLSceneSiri/HDLRunSceneIntent.h b/HDLSceneSiri/HDLSceneSiri/HDLRunSceneIntent.h
index 86ad44c..59b23b5 100644
--- a/HDLSceneSiri/HDLSceneSiri/HDLRunSceneIntent.h
+++ b/HDLSceneSiri/HDLSceneSiri/HDLRunSceneIntent.h
@@ -38,7 +38,7 @@
@see HDLRunSceneIntentResponse
*/
-- (void)handleRunScene:(HDLRunSceneIntent *)intent completion:(void (^)(HDLRunSceneIntentResponse *response))completion NS_SWIFT_NAME(handle(intent:completion:));
+- (void)handleHDLRunScene:(HDLRunSceneIntent *)intent completion:(void (^)(HDLRunSceneIntentResponse *response))completion NS_SWIFT_NAME(handle(intent:completion:));
@optional
@@ -51,7 +51,7 @@
@see HDLRunSceneIntentResponse
*/
-- (void)confirmRunScene:(HDLRunSceneIntent *)intent completion:(void (^)(HDLRunSceneIntentResponse *response))completion NS_SWIFT_NAME(confirm(intent:completion:));
+- (void)confirmHDLRunScene:(HDLRunSceneIntent *)intent completion:(void (^)(HDLRunSceneIntentResponse *response))completion NS_SWIFT_NAME(confirm(intent:completion:));
@end
diff --git a/HDLSceneSiriDemo/HDLSceneSiri/HDLSceneHandler.h b/HDLSceneSiriDemo/HDLSceneSiri/HDLSceneHandler.h
new file mode 100644
index 0000000..34dace5
--- /dev/null
+++ b/HDLSceneSiriDemo/HDLSceneSiri/HDLSceneHandler.h
@@ -0,0 +1,16 @@
+//
+// HDLSceneHandler.h
+// HDLSceneSiri
+//
+// Created by 闄堝槈涔� on 2021/11/25.
+//
+
+#import <Intents/Intents.h>
+#import "HDLRunSceneIntent.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface HDLSceneHandler : INExtension<HDLRunSceneIntentHandling>
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/HDLSceneSiriDemo/HDLSceneSiri/HDLSceneHandler.m b/HDLSceneSiriDemo/HDLSceneSiri/HDLSceneHandler.m
new file mode 100644
index 0000000..8f18005
--- /dev/null
+++ b/HDLSceneSiriDemo/HDLSceneSiri/HDLSceneHandler.m
@@ -0,0 +1,36 @@
+//
+// HDLSceneHandler.m
+// HDLSceneSiri
+//
+// Created by 闄堝槈涔� on 2021/11/25.
+//
+
+#import "HDLSceneHandler.h"
+
+@implementation HDLSceneHandler
+
+// 璇ユ柟娉曟槸鍦� siri 鍖归厤鍒扮浉搴旂殑 Intent 鏃跺�欒皟鐢ㄣ��
+// 濡傛灉鐢ㄥけ璐ョ殑鏂规硶鍒濆鍖朒DLRunSceneIntentResponse锛屽湪鍖箂iri鍚庡氨浼氭姤閿�
+// 涓嶇鐢ㄥ摢涓垚鍔熺殑鏂瑰紡锛屽彧鏄垵濮嬪寲鍙傛暟鐨勫�艰�屽凡锛岄兘涓�鏍�
+// 姝や负绗竴閬撴嫤鎴紝濡傛灉code璁剧疆涓哄け璐ユ垨鑰呮墦寮�app锛岄偅灏辩洿鎺ュけ璐�/璺宠蛋浜嗭紝杩炲睍绀虹晫闈㈢殑鏈轰細閮芥病鏈�
+// 鎵�浠ヤ竴鍗婅繖閲屽氨鐩存帴杩斿洖鎴愬姛锛岃siri缁х画寰�涓嬭蛋锛屾墦寮�鐣岄潰
+// 寤鸿锛氬彧鐢╮eday鍜宻uccess 杩欎袱涓猚ode
+- (void)confirmRunScene:(HDLRunSceneIntent *)intent completion:(void (^)(HDLRunSceneIntentResponse *response))completion NS_SWIFT_NAME(confirm(intent:completion:)){
+
+ HDLRunSceneIntentResponse *rsp = [[HDLRunSceneIntentResponse alloc] initWithCode:HDLRunSceneIntentResponseCodeInProgress userActivity:nil];
+ rsp.successMessage =@"璇风瓑寰�...";
+ completion(rsp);
+}
+
+- (void)handleHDLRunScene:(nonnull HDLRunSceneIntent *)intent completion:(nonnull void (^)(HDLRunSceneIntentResponse * _Nonnull))completion {
+ NSLog(@"HDL handleRunScene");
+ //鎵ц鎴愬姛
+ HDLRunSceneIntentResponse *rsp = [[HDLRunSceneIntentResponse alloc] initWithCode:HDLRunSceneIntentResponseCodeSuccess userActivity:nil];
+ rsp.sceneName = intent.sceneName;
+ rsp.successMessage = @"鎵ц鎴愬姛";
+ completion(rsp);
+
+}
+
+
+@end
diff --git a/HDLSceneSiriDemo/HDLSceneSiri/Info.plist b/HDLSceneSiriDemo/HDLSceneSiri/Info.plist
new file mode 100644
index 0000000..0e75ceb
--- /dev/null
+++ b/HDLSceneSiriDemo/HDLSceneSiri/Info.plist
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>NSExtension</key>
+ <dict>
+ <key>NSExtensionAttributes</key>
+ <dict>
+ <key>IntentsRestrictedWhileLocked</key>
+ <array/>
+ <key>IntentsSupported</key>
+ <array>
+ <string>HDLRunSceneIntent</string>
+ </array>
+ </dict>
+ <key>NSExtensionPointIdentifier</key>
+ <string>com.apple.intents-service</string>
+ <key>NSExtensionPrincipalClass</key>
+ <string>IntentHandler</string>
+ </dict>
+</dict>
+</plist>
diff --git a/HDLSceneSiriDemo/HDLSceneSiri/IntentHandler.h b/HDLSceneSiriDemo/HDLSceneSiri/IntentHandler.h
new file mode 100644
index 0000000..1cec4e9
--- /dev/null
+++ b/HDLSceneSiriDemo/HDLSceneSiri/IntentHandler.h
@@ -0,0 +1,12 @@
+//
+// IntentHandler.h
+// HDLSceneSiri
+//
+// Created by 闄堝槈涔� on 2021/11/25.
+//
+
+#import <Intents/Intents.h>
+
+@interface IntentHandler : INExtension
+
+@end
diff --git a/HDLSceneSiriDemo/HDLSceneSiri/IntentHandler.m b/HDLSceneSiriDemo/HDLSceneSiri/IntentHandler.m
new file mode 100644
index 0000000..252fa34
--- /dev/null
+++ b/HDLSceneSiriDemo/HDLSceneSiri/IntentHandler.m
@@ -0,0 +1,127 @@
+//
+// IntentHandler.m
+// HDLSceneSiri
+//
+// Created by 闄堝槈涔� on 2021/11/25.
+//
+
+#import "IntentHandler.h"
+#import "HDLRunSceneIntent.h"
+#import "HDLSceneHandler.h"
+
+// 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>"
+
+@interface IntentHandler () <INSendMessageIntentHandling, INSearchForMessagesIntentHandling, INSetMessageAttributeIntentHandling>
+
+@end
+
+@implementation IntentHandler
+
+- (id)handlerForIntent:(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 (@available(iOS 12.0, *)) {
+ if ([intent isKindOfClass:[HDLRunSceneIntent class]]) {
+ return [[HDLSceneHandler alloc] init];
+ }
+ }
+
+ return self;
+}
+
+#pragma mark - INSendMessageIntentHandling
+
+// Implement resolution methods to provide additional information about your intent (optional).
+- (void)resolveRecipientsForSendMessage:(INSendMessageIntent *)intent with:(void (^)(NSArray<INSendMessageRecipientResolutionResult *> *resolutionResults))completion {
+ NSArray<INPerson *> *recipients = intent.recipients;
+ // If no recipients were provided we'll need to prompt for a value.
+ if (recipients.count == 0) {
+ completion(@[[INSendMessageRecipientResolutionResult needsValue]]);
+ return;
+ }
+ NSMutableArray<INSendMessageRecipientResolutionResult *> *resolutionResults = [NSMutableArray array];
+
+ for (INPerson *recipient in recipients) {
+ NSArray<INPerson *> *matchingContacts = @[recipient]; // Implement your contact matching logic here to create an array of matching contacts
+ if (matchingContacts.count > 1) {
+ // We need Siri's help to ask user to pick one from the matches.
+ [resolutionResults addObject:[INSendMessageRecipientResolutionResult disambiguationWithPeopleToDisambiguate:matchingContacts]];
+
+ } else if (matchingContacts.count == 1) {
+ // We have exactly one matching contact
+ [resolutionResults addObject:[INSendMessageRecipientResolutionResult successWithResolvedPerson:recipient]];
+ } else {
+ // We have no contacts matching the description provided
+ [resolutionResults addObject:[INSendMessageRecipientResolutionResult unsupported]];
+ }
+ }
+ completion(resolutionResults);
+}
+
+- (void)resolveContentForSendMessage:(INSendMessageIntent *)intent withCompletion:(void (^)(INStringResolutionResult *resolutionResult))completion {
+ NSString *text = intent.content;
+ if (text && ![text isEqualToString:@""]) {
+ completion([INStringResolutionResult successWithResolvedString:text]);
+ } else {
+ completion([INStringResolutionResult needsValue]);
+ }
+}
+
+// Once resolution is completed, perform validation on the intent and provide confirmation (optional).
+
+- (void)confirmSendMessage:(INSendMessageIntent *)intent completion:(void (^)(INSendMessageIntentResponse *response))completion {
+ // Verify user is authenticated and your app is ready to send a message.
+
+ NSUserActivity *userActivity = [[NSUserActivity alloc] initWithActivityType:NSStringFromClass([INSendMessageIntent class])];
+ INSendMessageIntentResponse *response = [[INSendMessageIntentResponse alloc] initWithCode:INSendMessageIntentResponseCodeReady userActivity:userActivity];
+ completion(response);
+}
+
+// Handle the completed intent (required).
+
+- (void)handleSendMessage:(INSendMessageIntent *)intent completion:(void (^)(INSendMessageIntentResponse *response))completion {
+ // Implement your application logic to send a message here.
+
+ NSUserActivity *userActivity = [[NSUserActivity alloc] initWithActivityType:NSStringFromClass([INSendMessageIntent class])];
+ INSendMessageIntentResponse *response = [[INSendMessageIntentResponse alloc] initWithCode:INSendMessageIntentResponseCodeSuccess userActivity:userActivity];
+ completion(response);
+}
+
+// Implement handlers for each intent you wish to handle. As an example for messages, you may wish to also handle searchForMessages and setMessageAttributes.
+
+#pragma mark - INSearchForMessagesIntentHandling
+
+- (void)handleSearchForMessages:(INSearchForMessagesIntent *)intent completion:(void (^)(INSearchForMessagesIntentResponse *response))completion {
+ // Implement your application logic to find a message that matches the information in the intent.
+
+ NSUserActivity *userActivity = [[NSUserActivity alloc] initWithActivityType:NSStringFromClass([INSearchForMessagesIntent class])];
+ INSearchForMessagesIntentResponse *response = [[INSearchForMessagesIntentResponse alloc] initWithCode:INSearchForMessagesIntentResponseCodeSuccess userActivity:userActivity];
+ // Initialize with found message's attributes
+ response.messages = @[[[INMessage alloc]
+ initWithIdentifier:@"identifier"
+ content:@"I am so excited about SiriKit!"
+ dateSent:[NSDate date]
+ sender:[[INPerson alloc] initWithPersonHandle:[[INPersonHandle alloc] initWithValue:@"sarah@example.com" type:INPersonHandleTypeEmailAddress] nameComponents:nil displayName:@"Sarah" image:nil contactIdentifier:nil customIdentifier:nil]
+ recipients:@[[[INPerson alloc] initWithPersonHandle:[[INPersonHandle alloc] initWithValue:@"+1-415-555-5555" type:INPersonHandleTypePhoneNumber] nameComponents:nil displayName:@"John" image:nil contactIdentifier:nil customIdentifier:nil]]
+ ]];
+ completion(response);
+}
+
+#pragma mark - INSetMessageAttributeIntentHandling
+
+- (void)handleSetMessageAttribute:(INSetMessageAttributeIntent *)intent completion:(void (^)(INSetMessageAttributeIntentResponse *response))completion {
+ // Implement your application logic to set the message attribute here.
+
+ NSUserActivity *userActivity = [[NSUserActivity alloc] initWithActivityType:NSStringFromClass([INSetMessageAttributeIntent class])];
+ INSetMessageAttributeIntentResponse *response = [[INSetMessageAttributeIntentResponse alloc] initWithCode:INSetMessageAttributeIntentResponseCodeSuccess userActivity:userActivity];
+ completion(response);
+}
+
+@end
diff --git a/HDLSceneSiriDemo/HDLSceneSiriDemo.xcodeproj/project.pbxproj b/HDLSceneSiriDemo/HDLSceneSiriDemo.xcodeproj/project.pbxproj
index a8f9e9d..5601df4 100644
--- a/HDLSceneSiriDemo/HDLSceneSiriDemo.xcodeproj/project.pbxproj
+++ b/HDLSceneSiriDemo/HDLSceneSiriDemo.xcodeproj/project.pbxproj
@@ -16,13 +16,55 @@
B9595E602744D77D00948DB9 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B9595E5F2744D77D00948DB9 /* main.m */; };
B9595E6B2744D80400948DB9 /* HDLSiriSceneListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B9595E682744D80400948DB9 /* HDLSiriSceneListCell.m */; };
B9595E6C2744D80400948DB9 /* HDLSiriSceneListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B9595E6A2744D80400948DB9 /* HDLSiriSceneListViewController.m */; };
- B9595E7B2744D9D200948DB9 /* HDLRunSceneIntent.m in Sources */ = {isa = PBXBuildFile; fileRef = B9595E792744D9D200948DB9 /* HDLRunSceneIntent.m */; };
B9595E7E2744DA3B00948DB9 /* HDLSiriSceneModel.m in Sources */ = {isa = PBXBuildFile; fileRef = B9595E7D2744DA3B00948DB9 /* HDLSiriSceneModel.m */; };
B9595E812744DA7000948DB9 /* Intents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9595E802744DA7000948DB9 /* Intents.framework */; };
B9595E842744DC9000948DB9 /* HDLSceneSiri.m in Sources */ = {isa = PBXBuildFile; fileRef = B9595E832744DC8F00948DB9 /* HDLSceneSiri.m */; };
B9595E9A2744E00100948DB9 /* TopBarView.m in Sources */ = {isa = PBXBuildFile; fileRef = B9595E992744E00100948DB9 /* TopBarView.m */; };
B9595E9D2744E5E900948DB9 /* IntentsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9595E9C2744E5E900948DB9 /* IntentsUI.framework */; };
+ B9DD87EB274F7B8200E37C32 /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = B9DD87EA274F7B8200E37C32 /* Intents.intentdefinition */; };
+ B9DD87F1274F7CBC00E37C32 /* Intents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9595E802744DA7000948DB9 /* Intents.framework */; };
+ B9DD87F5274F7CBC00E37C32 /* IntentHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = B9DD87F4274F7CBC00E37C32 /* IntentHandler.m */; };
+ B9DD87FC274F7CBC00E37C32 /* IntentsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9595E9C2744E5E900948DB9 /* IntentsUI.framework */; };
+ B9DD8800274F7CBC00E37C32 /* IntentViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B9DD87FF274F7CBC00E37C32 /* IntentViewController.m */; };
+ B9DD8803274F7CBC00E37C32 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B9DD8801274F7CBC00E37C32 /* MainInterface.storyboard */; };
+ B9DD8808274F7CBC00E37C32 /* HDLSceneSiriUI.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = B9DD87FB274F7CBC00E37C32 /* HDLSceneSiriUI.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
+ B9DD880B274F7CBC00E37C32 /* HDLSceneSiri.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = B9DD87F0274F7CBC00E37C32 /* HDLSceneSiri.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
+ B9DD8812274F7CE000E37C32 /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = B9DD87EA274F7B8200E37C32 /* Intents.intentdefinition */; };
+ B9DD8813274F7CEC00E37C32 /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = B9DD87EA274F7B8200E37C32 /* Intents.intentdefinition */; };
+ B9DD8816274F7D0C00E37C32 /* HDLSceneHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = B9DD8815274F7D0C00E37C32 /* HDLSceneHandler.m */; };
/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ B9DD8805274F7CBC00E37C32 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = B9595E422744D77800948DB9 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = B9DD87FA274F7CBC00E37C32;
+ remoteInfo = HDLSceneSiriUI;
+ };
+ B9DD8809274F7CBC00E37C32 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = B9595E422744D77800948DB9 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = B9DD87EF274F7CBC00E37C32;
+ remoteInfo = HDLSceneSiri;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ B9DD8807274F7CBC00E37C32 /* Embed App Extensions */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 13;
+ files = (
+ B9DD8808274F7CBC00E37C32 /* HDLSceneSiriUI.appex in Embed App Extensions */,
+ B9DD880B274F7CBC00E37C32 /* HDLSceneSiri.appex in Embed App Extensions */,
+ );
+ name = "Embed App Extensions";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
B9595E4A2744D77800948DB9 /* HDLSceneSiriDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HDLSceneSiriDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -41,8 +83,6 @@
B9595E682744D80400948DB9 /* HDLSiriSceneListCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HDLSiriSceneListCell.m; sourceTree = "<group>"; };
B9595E692744D80400948DB9 /* HDLSiriSceneListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HDLSiriSceneListViewController.h; sourceTree = "<group>"; };
B9595E6A2744D80400948DB9 /* HDLSiriSceneListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HDLSiriSceneListViewController.m; sourceTree = "<group>"; };
- B9595E792744D9D200948DB9 /* HDLRunSceneIntent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HDLRunSceneIntent.m; sourceTree = "<group>"; };
- B9595E7A2744D9D200948DB9 /* HDLRunSceneIntent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HDLRunSceneIntent.h; sourceTree = "<group>"; };
B9595E7C2744DA3B00948DB9 /* HDLSiriSceneModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDLSiriSceneModel.h; sourceTree = "<group>"; };
B9595E7D2744DA3B00948DB9 /* HDLSiriSceneModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDLSiriSceneModel.m; sourceTree = "<group>"; };
B9595E802744DA7000948DB9 /* Intents.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Intents.framework; path = System/Library/Frameworks/Intents.framework; sourceTree = SDKROOT; };
@@ -52,6 +92,18 @@
B9595E992744E00100948DB9 /* TopBarView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TopBarView.m; sourceTree = "<group>"; };
B9595E9B2744E49E00948DB9 /* HDLSceneSiriDemo.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = HDLSceneSiriDemo.entitlements; sourceTree = "<group>"; };
B9595E9C2744E5E900948DB9 /* IntentsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IntentsUI.framework; path = System/Library/Frameworks/IntentsUI.framework; sourceTree = SDKROOT; };
+ B9DD87EA274F7B8200E37C32 /* Intents.intentdefinition */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.intentdefinition; path = Intents.intentdefinition; sourceTree = "<group>"; };
+ B9DD87F0274F7CBC00E37C32 /* HDLSceneSiri.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = HDLSceneSiri.appex; sourceTree = BUILT_PRODUCTS_DIR; };
+ B9DD87F3274F7CBC00E37C32 /* IntentHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IntentHandler.h; sourceTree = "<group>"; };
+ B9DD87F4274F7CBC00E37C32 /* IntentHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = IntentHandler.m; sourceTree = "<group>"; };
+ B9DD87F6274F7CBC00E37C32 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ B9DD87FB274F7CBC00E37C32 /* HDLSceneSiriUI.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = HDLSceneSiriUI.appex; sourceTree = BUILT_PRODUCTS_DIR; };
+ B9DD87FE274F7CBC00E37C32 /* IntentViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IntentViewController.h; sourceTree = "<group>"; };
+ B9DD87FF274F7CBC00E37C32 /* IntentViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = IntentViewController.m; sourceTree = "<group>"; };
+ B9DD8802274F7CBC00E37C32 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = "<group>"; };
+ B9DD8804274F7CBC00E37C32 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ B9DD8814274F7D0B00E37C32 /* HDLSceneHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDLSceneHandler.h; sourceTree = "<group>"; };
+ B9DD8815274F7D0C00E37C32 /* HDLSceneHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDLSceneHandler.m; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -64,6 +116,22 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ B9DD87ED274F7CBC00E37C32 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B9DD87F1274F7CBC00E37C32 /* Intents.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B9DD87F8274F7CBC00E37C32 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B9DD87FC274F7CBC00E37C32 /* IntentsUI.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
@@ -71,6 +139,8 @@
isa = PBXGroup;
children = (
B9595E4C2744D77800948DB9 /* HDLSceneSiriDemo */,
+ B9DD87F2274F7CBC00E37C32 /* HDLSceneSiri */,
+ B9DD87FD274F7CBC00E37C32 /* HDLSceneSiriUI */,
B9595E4B2744D77800948DB9 /* Products */,
B9595E7F2744DA6F00948DB9 /* Frameworks */,
);
@@ -80,6 +150,8 @@
isa = PBXGroup;
children = (
B9595E4A2744D77800948DB9 /* HDLSceneSiriDemo.app */,
+ B9DD87F0274F7CBC00E37C32 /* HDLSceneSiri.appex */,
+ B9DD87FB274F7CBC00E37C32 /* HDLSceneSiriUI.appex */,
);
name = Products;
sourceTree = "<group>";
@@ -87,6 +159,7 @@
B9595E4C2744D77800948DB9 /* HDLSceneSiriDemo */ = {
isa = PBXGroup;
children = (
+ B9DD87EA274F7B8200E37C32 /* Intents.intentdefinition */,
B9595E9B2744E49E00948DB9 /* HDLSceneSiriDemo.entitlements */,
B9595E662744D79F00948DB9 /* HDLSceneSiri */,
B9595E4D2744D77800948DB9 /* AppDelegate.h */,
@@ -109,8 +182,6 @@
children = (
B9595E982744E00100948DB9 /* TopBarView.h */,
B9595E992744E00100948DB9 /* TopBarView.m */,
- B9595E7A2744D9D200948DB9 /* HDLRunSceneIntent.h */,
- B9595E792744D9D200948DB9 /* HDLRunSceneIntent.m */,
B9595E672744D80400948DB9 /* HDLSiriSceneListCell.h */,
B9595E682744D80400948DB9 /* HDLSiriSceneListCell.m */,
B9595E692744D80400948DB9 /* HDLSiriSceneListViewController.h */,
@@ -132,6 +203,29 @@
name = Frameworks;
sourceTree = "<group>";
};
+ B9DD87F2274F7CBC00E37C32 /* HDLSceneSiri */ = {
+ isa = PBXGroup;
+ children = (
+ B9DD87F3274F7CBC00E37C32 /* IntentHandler.h */,
+ B9DD87F4274F7CBC00E37C32 /* IntentHandler.m */,
+ B9DD87F6274F7CBC00E37C32 /* Info.plist */,
+ B9DD8814274F7D0B00E37C32 /* HDLSceneHandler.h */,
+ B9DD8815274F7D0C00E37C32 /* HDLSceneHandler.m */,
+ );
+ path = HDLSceneSiri;
+ sourceTree = "<group>";
+ };
+ B9DD87FD274F7CBC00E37C32 /* HDLSceneSiriUI */ = {
+ isa = PBXGroup;
+ children = (
+ B9DD87FE274F7CBC00E37C32 /* IntentViewController.h */,
+ B9DD87FF274F7CBC00E37C32 /* IntentViewController.m */,
+ B9DD8801274F7CBC00E37C32 /* MainInterface.storyboard */,
+ B9DD8804274F7CBC00E37C32 /* Info.plist */,
+ );
+ path = HDLSceneSiriUI;
+ sourceTree = "<group>";
+ };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -142,15 +236,52 @@
B9595E462744D77800948DB9 /* Sources */,
B9595E472744D77800948DB9 /* Frameworks */,
B9595E482744D77800948DB9 /* Resources */,
+ B9DD8807274F7CBC00E37C32 /* Embed App Extensions */,
);
buildRules = (
);
dependencies = (
+ B9DD8806274F7CBC00E37C32 /* PBXTargetDependency */,
+ B9DD880A274F7CBC00E37C32 /* PBXTargetDependency */,
);
name = HDLSceneSiriDemo;
productName = HDLSceneSiriDemo;
productReference = B9595E4A2744D77800948DB9 /* HDLSceneSiriDemo.app */;
productType = "com.apple.product-type.application";
+ };
+ B9DD87EF274F7CBC00E37C32 /* HDLSceneSiri */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = B9DD880F274F7CBC00E37C32 /* Build configuration list for PBXNativeTarget "HDLSceneSiri" */;
+ buildPhases = (
+ B9DD87EC274F7CBC00E37C32 /* Sources */,
+ B9DD87ED274F7CBC00E37C32 /* Frameworks */,
+ B9DD87EE274F7CBC00E37C32 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = HDLSceneSiri;
+ productName = HDLSceneSiri;
+ productReference = B9DD87F0274F7CBC00E37C32 /* HDLSceneSiri.appex */;
+ productType = "com.apple.product-type.app-extension";
+ };
+ B9DD87FA274F7CBC00E37C32 /* HDLSceneSiriUI */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = B9DD880C274F7CBC00E37C32 /* Build configuration list for PBXNativeTarget "HDLSceneSiriUI" */;
+ buildPhases = (
+ B9DD87F7274F7CBC00E37C32 /* Sources */,
+ B9DD87F8274F7CBC00E37C32 /* Frameworks */,
+ B9DD87F9274F7CBC00E37C32 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = HDLSceneSiriUI;
+ productName = HDLSceneSiriUI;
+ productReference = B9DD87FB274F7CBC00E37C32 /* HDLSceneSiriUI.appex */;
+ productType = "com.apple.product-type.app-extension";
};
/* End PBXNativeTarget section */
@@ -162,6 +293,12 @@
LastUpgradeCheck = 1300;
TargetAttributes = {
B9595E492744D77800948DB9 = {
+ CreatedOnToolsVersion = 13.0;
+ };
+ B9DD87EF274F7CBC00E37C32 = {
+ CreatedOnToolsVersion = 13.0;
+ };
+ B9DD87FA274F7CBC00E37C32 = {
CreatedOnToolsVersion = 13.0;
};
};
@@ -180,6 +317,8 @@
projectRoot = "";
targets = (
B9595E492744D77800948DB9 /* HDLSceneSiriDemo */,
+ B9DD87EF274F7CBC00E37C32 /* HDLSceneSiri */,
+ B9DD87FA274F7CBC00E37C32 /* HDLSceneSiriUI */,
);
};
/* End PBXProject section */
@@ -195,6 +334,21 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ B9DD87EE274F7CBC00E37C32 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B9DD87F9274F7CBC00E37C32 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B9DD8803274F7CBC00E37C32 /* MainInterface.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -207,15 +361,47 @@
B9595E7E2744DA3B00948DB9 /* HDLSiriSceneModel.m in Sources */,
B9595E4F2744D77800948DB9 /* AppDelegate.m in Sources */,
B9595E602744D77D00948DB9 /* main.m in Sources */,
- B9595E7B2744D9D200948DB9 /* HDLRunSceneIntent.m in Sources */,
B9595E522744D77800948DB9 /* SceneDelegate.m in Sources */,
B9595E6C2744D80400948DB9 /* HDLSiriSceneListViewController.m in Sources */,
B9595E9A2744E00100948DB9 /* TopBarView.m in Sources */,
+ B9DD87EB274F7B8200E37C32 /* Intents.intentdefinition in Sources */,
B9595E6B2744D80400948DB9 /* HDLSiriSceneListCell.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
+ B9DD87EC274F7CBC00E37C32 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B9DD8816274F7D0C00E37C32 /* HDLSceneHandler.m in Sources */,
+ B9DD8812274F7CE000E37C32 /* Intents.intentdefinition in Sources */,
+ B9DD87F5274F7CBC00E37C32 /* IntentHandler.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B9DD87F7274F7CBC00E37C32 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B9DD8813274F7CEC00E37C32 /* Intents.intentdefinition in Sources */,
+ B9DD8800274F7CBC00E37C32 /* IntentViewController.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ B9DD8806274F7CBC00E37C32 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = B9DD87FA274F7CBC00E37C32 /* HDLSceneSiriUI */;
+ targetProxy = B9DD8805274F7CBC00E37C32 /* PBXContainerItemProxy */;
+ };
+ B9DD880A274F7CBC00E37C32 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = B9DD87EF274F7CBC00E37C32 /* HDLSceneSiri */;
+ targetProxy = B9DD8809274F7CBC00E37C32 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
B9595E562744D77800948DB9 /* Main.storyboard */ = {
@@ -232,6 +418,14 @@
B9595E5C2744D77D00948DB9 /* Base */,
);
name = LaunchScreen.storyboard;
+ sourceTree = "<group>";
+ };
+ B9DD8801274F7CBC00E37C32 /* MainInterface.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ B9DD8802274F7CBC00E37C32 /* Base */,
+ );
+ name = MainInterface.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
@@ -405,6 +599,106 @@
};
name = Release;
};
+ B9DD880D274F7CBC00E37C32 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = BVTA78PRYA;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = HDLSceneSiriUI/Info.plist;
+ INFOPLIST_KEY_CFBundleDisplayName = HDLSceneSiriUI;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@executable_path/../../Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.hdl.HDLSceneSiriDemo.HDLSceneSiriUI;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ B9DD880E274F7CBC00E37C32 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = BVTA78PRYA;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = HDLSceneSiriUI/Info.plist;
+ INFOPLIST_KEY_CFBundleDisplayName = HDLSceneSiriUI;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@executable_path/../../Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.hdl.HDLSceneSiriDemo.HDLSceneSiriUI;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+ B9DD8810274F7CBC00E37C32 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = BVTA78PRYA;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = HDLSceneSiri/Info.plist;
+ INFOPLIST_KEY_CFBundleDisplayName = HDLSceneSiri;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@executable_path/../../Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.hdl.HDLSceneSiriDemo.HDLSceneSiri;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ B9DD8811274F7CBC00E37C32 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = BVTA78PRYA;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = HDLSceneSiri/Info.plist;
+ INFOPLIST_KEY_CFBundleDisplayName = HDLSceneSiri;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@executable_path/../../Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.hdl.HDLSceneSiriDemo.HDLSceneSiri;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
@@ -426,6 +720,24 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ B9DD880C274F7CBC00E37C32 /* Build configuration list for PBXNativeTarget "HDLSceneSiriUI" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ B9DD880D274F7CBC00E37C32 /* Debug */,
+ B9DD880E274F7CBC00E37C32 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ B9DD880F274F7CBC00E37C32 /* Build configuration list for PBXNativeTarget "HDLSceneSiri" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ B9DD8810274F7CBC00E37C32 /* Debug */,
+ B9DD8811274F7CBC00E37C32 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
/* End XCConfigurationList section */
};
rootObject = B9595E422744D77800948DB9 /* Project object */;
diff --git a/HDLSceneSiriDemo/HDLSceneSiriDemo/Intents.intentdefinition b/HDLSceneSiriDemo/HDLSceneSiriDemo/Intents.intentdefinition
new file mode 100644
index 0000000..f49bdce
--- /dev/null
+++ b/HDLSceneSiriDemo/HDLSceneSiriDemo/Intents.intentdefinition
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>INEnums</key>
+ <array/>
+ <key>INIntentDefinitionModelVersion</key>
+ <string>1.2</string>
+ <key>INIntentDefinitionNamespace</key>
+ <string>8yVV3C</string>
+ <key>INIntentDefinitionSystemVersion</key>
+ <string>20G165</string>
+ <key>INIntentDefinitionToolsBuildVersion</key>
+ <string>13A233</string>
+ <key>INIntentDefinitionToolsVersion</key>
+ <string>13.0</string>
+ <key>INIntents</key>
+ <array>
+ <dict>
+ <key>INIntentCategory</key>
+ <string>generic</string>
+ <key>INIntentDescription</key>
+ <string>Run Scene</string>
+ <key>INIntentDescriptionID</key>
+ <string>Pe02nj</string>
+ <key>INIntentLastParameterTag</key>
+ <integer>2</integer>
+ <key>INIntentName</key>
+ <string>HDLRunScene</string>
+ <key>INIntentParameterCombinations</key>
+ <dict>
+ <key>sceneName,sceneId</key>
+ <dict>
+ <key>INIntentParameterCombinationIsPrimary</key>
+ <true/>
+ <key>INIntentParameterCombinationSupportsBackgroundExecution</key>
+ <true/>
+ <key>INIntentParameterCombinationTitle</key>
+ <string>鎵ц鍦烘櫙鈥�${sceneName}鈥�</string>
+ <key>INIntentParameterCombinationTitleID</key>
+ <string>oCGdw4</string>
+ </dict>
+ </dict>
+ <key>INIntentParameters</key>
+ <array>
+ <dict>
+ <key>INIntentParameterDisplayName</key>
+ <string>Scene Name</string>
+ <key>INIntentParameterDisplayNameID</key>
+ <string>wC0SgK</string>
+ <key>INIntentParameterDisplayPriority</key>
+ <integer>1</integer>
+ <key>INIntentParameterMetadata</key>
+ <dict>
+ <key>INIntentParameterMetadataCapitalization</key>
+ <string>Sentences</string>
+ <key>INIntentParameterMetadataDefaultValueID</key>
+ <string>xz2KkJ</string>
+ </dict>
+ <key>INIntentParameterName</key>
+ <string>sceneName</string>
+ <key>INIntentParameterTag</key>
+ <integer>1</integer>
+ <key>INIntentParameterType</key>
+ <string>String</string>
+ </dict>
+ <dict>
+ <key>INIntentParameterDisplayName</key>
+ <string>Scene Id</string>
+ <key>INIntentParameterDisplayNameID</key>
+ <string>MtgGtd</string>
+ <key>INIntentParameterDisplayPriority</key>
+ <integer>2</integer>
+ <key>INIntentParameterMetadata</key>
+ <dict>
+ <key>INIntentParameterMetadataCapitalization</key>
+ <string>Sentences</string>
+ <key>INIntentParameterMetadataDefaultValueID</key>
+ <string>hQHCm1</string>
+ </dict>
+ <key>INIntentParameterName</key>
+ <string>sceneId</string>
+ <key>INIntentParameterTag</key>
+ <integer>2</integer>
+ <key>INIntentParameterType</key>
+ <string>String</string>
+ </dict>
+ </array>
+ <key>INIntentResponse</key>
+ <dict>
+ <key>INIntentResponseCodes</key>
+ <array>
+ <dict>
+ <key>INIntentResponseCodeFormatString</key>
+ <string>${sceneName}</string>
+ <key>INIntentResponseCodeFormatStringID</key>
+ <string>Pq8YBC</string>
+ <key>INIntentResponseCodeName</key>
+ <string>success</string>
+ <key>INIntentResponseCodeSuccess</key>
+ <true/>
+ </dict>
+ <dict>
+ <key>INIntentResponseCodeFormatString</key>
+ <string>${errorMessage}</string>
+ <key>INIntentResponseCodeFormatStringID</key>
+ <string>CX5DVI</string>
+ <key>INIntentResponseCodeName</key>
+ <string>failure</string>
+ </dict>
+ <dict>
+ <key>INIntentResponseCodeName</key>
+ <string>error</string>
+ <key>INIntentResponseCodeSuccess</key>
+ <true/>
+ </dict>
+ </array>
+ <key>INIntentResponseLastParameterTag</key>
+ <integer>3</integer>
+ <key>INIntentResponseParameters</key>
+ <array>
+ <dict>
+ <key>INIntentResponseParameterDisplayName</key>
+ <string>Error Message</string>
+ <key>INIntentResponseParameterDisplayNameID</key>
+ <string>HxQb2M</string>
+ <key>INIntentResponseParameterDisplayPriority</key>
+ <integer>1</integer>
+ <key>INIntentResponseParameterName</key>
+ <string>errorMessage</string>
+ <key>INIntentResponseParameterTag</key>
+ <integer>1</integer>
+ <key>INIntentResponseParameterType</key>
+ <string>String</string>
+ </dict>
+ <dict>
+ <key>INIntentResponseParameterDisplayName</key>
+ <string>Success Message</string>
+ <key>INIntentResponseParameterDisplayNameID</key>
+ <string>BaAbSP</string>
+ <key>INIntentResponseParameterDisplayPriority</key>
+ <integer>2</integer>
+ <key>INIntentResponseParameterName</key>
+ <string>successMessage</string>
+ <key>INIntentResponseParameterTag</key>
+ <integer>2</integer>
+ <key>INIntentResponseParameterType</key>
+ <string>String</string>
+ </dict>
+ <dict>
+ <key>INIntentResponseParameterDisplayName</key>
+ <string>Scene Name</string>
+ <key>INIntentResponseParameterDisplayNameID</key>
+ <string>pqg7cb</string>
+ <key>INIntentResponseParameterDisplayPriority</key>
+ <integer>3</integer>
+ <key>INIntentResponseParameterName</key>
+ <string>sceneName</string>
+ <key>INIntentResponseParameterTag</key>
+ <integer>3</integer>
+ <key>INIntentResponseParameterType</key>
+ <string>String</string>
+ </dict>
+ </array>
+ </dict>
+ <key>INIntentRestrictions</key>
+ <integer>1</integer>
+ <key>INIntentTitle</key>
+ <string>Run Scene</string>
+ <key>INIntentTitleID</key>
+ <string>j3jRXP</string>
+ <key>INIntentType</key>
+ <string>Custom</string>
+ <key>INIntentVerb</key>
+ <string>Do</string>
+ </dict>
+ </array>
+ <key>INTypes</key>
+ <array/>
+</dict>
+</plist>
diff --git a/HDLSceneSiriDemo/HDLSceneSiriUI/Base.lproj/MainInterface.storyboard b/HDLSceneSiriDemo/HDLSceneSiriUI/Base.lproj/MainInterface.storyboard
new file mode 100644
index 0000000..b8e2d01
--- /dev/null
+++ b/HDLSceneSiriDemo/HDLSceneSiriUI/Base.lproj/MainInterface.storyboard
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19162" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="ObA-dk-sSI">
+ <device id="retina6_1" orientation="portrait" appearance="light"/>
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19144"/>
+ <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+ <capability name="System colors in document resources" minToolsVersion="11.0"/>
+ <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+ </dependencies>
+ <scenes>
+ <!--Intent View Controller-->
+ <scene sceneID="7MM-of-jgj">
+ <objects>
+ <viewController id="ObA-dk-sSI" customClass="IntentViewController" sceneMemberID="viewController">
+ <view key="view" contentMode="scaleToFill" id="zMn-AG-sqS">
+ <rect key="frame" x="0.0" y="0.0" width="320" height="150"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Qr8-Ok-8TQ">
+ <rect key="frame" x="0.0" y="0.0" width="320" height="150"/>
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
+ <nil key="textColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ </subviews>
+ <viewLayoutGuide key="safeArea" id="4PN-XC-lEE"/>
+ <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+ <constraints>
+ <constraint firstItem="Qr8-Ok-8TQ" firstAttribute="top" secondItem="zMn-AG-sqS" secondAttribute="top" id="115-YJ-kb8"/>
+ <constraint firstItem="Qr8-Ok-8TQ" firstAttribute="leading" secondItem="4PN-XC-lEE" secondAttribute="leading" id="ZOP-bk-OA8"/>
+ <constraint firstItem="4PN-XC-lEE" firstAttribute="bottom" secondItem="Qr8-Ok-8TQ" secondAttribute="bottom" id="ati-tP-QP0"/>
+ <constraint firstItem="4PN-XC-lEE" firstAttribute="trailing" secondItem="Qr8-Ok-8TQ" secondAttribute="trailing" id="cHK-cQ-vse"/>
+ </constraints>
+ </view>
+ <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+ <size key="freeformSize" width="320" height="150"/>
+ <connections>
+ <outlet property="messageLabel" destination="Qr8-Ok-8TQ" id="7dL-Bn-nSk"/>
+ </connections>
+ </viewController>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="X47-rx-isc" userLabel="First Responder" sceneMemberID="firstResponder"/>
+ </objects>
+ <point key="canvasLocation" x="35" y="50"/>
+ </scene>
+ </scenes>
+ <resources>
+ <systemColor name="systemBackgroundColor">
+ <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+ </systemColor>
+ </resources>
+</document>
diff --git a/HDLSceneSiriDemo/HDLSceneSiriUI/Info.plist b/HDLSceneSiriDemo/HDLSceneSiriUI/Info.plist
new file mode 100644
index 0000000..f898ab8
--- /dev/null
+++ b/HDLSceneSiriDemo/HDLSceneSiriUI/Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>NSExtension</key>
+ <dict>
+ <key>NSExtensionAttributes</key>
+ <dict>
+ <key>IntentsSupported</key>
+ <array>
+ <string>HDLRunSceneIntent</string>
+ </array>
+ </dict>
+ <key>NSExtensionMainStoryboard</key>
+ <string>MainInterface</string>
+ <key>NSExtensionPointIdentifier</key>
+ <string>com.apple.intents-ui-service</string>
+ </dict>
+</dict>
+</plist>
diff --git a/HDLSceneSiriDemo/HDLSceneSiriUI/IntentViewController.h b/HDLSceneSiriDemo/HDLSceneSiriUI/IntentViewController.h
new file mode 100644
index 0000000..1dc33a8
--- /dev/null
+++ b/HDLSceneSiriDemo/HDLSceneSiriUI/IntentViewController.h
@@ -0,0 +1,13 @@
+//
+// IntentViewController.h
+// HDLSceneSiriUI
+//
+// Created by 闄堝槈涔� on 2021/11/25.
+//
+
+#import <IntentsUI/IntentsUI.h>
+
+@interface IntentViewController : UIViewController <INUIHostedViewControlling>
+@property (weak, nonatomic) IBOutlet UILabel *messageLabel;
+
+@end
diff --git a/HDLSceneSiriDemo/HDLSceneSiriUI/IntentViewController.m b/HDLSceneSiriDemo/HDLSceneSiriUI/IntentViewController.m
new file mode 100644
index 0000000..47d096e
--- /dev/null
+++ b/HDLSceneSiriDemo/HDLSceneSiriUI/IntentViewController.m
@@ -0,0 +1,59 @@
+//
+// IntentViewController.m
+// HDLSceneSiriUI
+//
+// Created by 闄堝槈涔� on 2021/11/25.
+//
+
+#import "IntentViewController.h"
+#import "HDLRunSceneIntent.h"
+// As an example, this extension's Info.plist has been configured to handle interactions for INSendMessageIntent.
+// You will want to replace this or add other intents as appropriate.
+// The intents whose interactions you wish to handle must be declared in the extension's Info.plist.
+
+// You can test this example integration by saying things to Siri like:
+// "Send a message using <myApp>"
+
+@interface IntentViewController ()
+
+@end
+
+@implementation IntentViewController
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+ // Do any additional setup after loading the view.
+}
+
+#pragma mark - INUIHostedViewControlling
+
+// Prepare your view controller for the interaction to handle.
+- (void)configureViewForParameters:(NSSet <INParameter *> *)parameters ofInteraction:(INInteraction *)interaction interactiveBehavior:(INUIInteractiveBehavior)interactiveBehavior context:(INUIHostedViewContext)context completion:(void (^)(BOOL success, NSSet <INParameter *> *configuredParameters, CGSize desiredSize))completion {
+ // Do configuration here, including preparing views and calculating a desired size for presentation.
+ if (@available(iOS 12.0, *)) {
+ HDLRunSceneIntentResponse *rsp = (HDLRunSceneIntentResponse *) interaction.intentResponse;
+
+// HDLRunSceneIntent *intent = (HDLRunSceneIntent *)interaction.intent;
+ NSLog(@"HDL code:%ld s:%@ e:%@",(long)rsp.code,rsp.successMessage,rsp.errorMessage);
+ // self.messageLabel.hidden = NO;
+ if (rsp.code == HDLRunSceneIntentResponseCodeSuccess) {
+ self.messageLabel.text = [NSString stringWithFormat: @"%@",rsp.successMessage];
+ }else if (rsp.code == HDLRunSceneIntentResponseCodeFailure || rsp.code == HDLRunSceneIntentResponseCodeError) {
+ self.messageLabel.text = [NSString stringWithFormat: @"%@",rsp.errorMessage];
+ }else{
+ self.messageLabel.text = [NSString stringWithFormat: @"%@",rsp.successMessage];
+ }
+ } else {
+ // Fallback on earlier versions
+ }
+ CGSize size = CGSizeMake([self desiredSize].width, 80);
+ if (completion) {
+ completion(YES, parameters, size);
+ }
+}
+
+- (CGSize)desiredSize {
+ return [self extensionContext].hostedViewMaximumAllowedSize;
+}
+
+@end
diff --git a/Shared.IOS.HDLSceneSiri/Shared.IOS.HDLSceneSiri/ApiDefinition.cs b/Shared.IOS.HDLSceneSiri/Shared.IOS.HDLSceneSiri/ApiDefinition.cs
index d098ab4..2905663 100644
--- a/Shared.IOS.HDLSceneSiri/Shared.IOS.HDLSceneSiri/ApiDefinition.cs
+++ b/Shared.IOS.HDLSceneSiri/Shared.IOS.HDLSceneSiri/ApiDefinition.cs
@@ -6,6 +6,44 @@
namespace HDLSceneSiri
{
+
+ // @interface HDLSiriSceneListViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
+ [BaseType(typeof(UIViewController))]
+ interface HDLSiriSceneListViewController : IUITableViewDataSource, IUITableViewDelegate
+ {
+ // @property (assign, nonatomic) UITableViewStyle tableViewStyle;
+ [Export("tableViewStyle", ArgumentSemantic.Assign)]
+ UITableViewStyle TableViewStyle { get; set; }
+
+ // @property (nonatomic, strong) UITableView * _Nonnull tableView;
+ [Export("tableView", ArgumentSemantic.Strong)]
+ UITableView TableView { get; set; }
+
+ [Wrap("WeakDataSource")]
+ NSMutableArray DataSource { get; set; }
+
+ // @property (nonatomic, strong) NSMutableArray * _Nonnull dataSource;
+ [NullAllowed, Export("dataSource", ArgumentSemantic.Strong)]
+ NSObject WeakDataSource { get; set; }
+
+ // @property (nonatomic, strong) NSString * _Nonnull titleName;
+ [Export("titleName", ArgumentSemantic.Strong)]
+ string TitleName { get; set; }
+ }
+
+ // @interface HDLSiriSceneModel : NSObject
+ [BaseType(typeof(NSObject))]
+ interface HDLSiriSceneModel
+ {
+ // @property (copy, nonatomic) NSString * _Nonnull userSceneId;
+ [Export("userSceneId")]
+ string UserSceneId { get; set; }
+
+ // @property (copy, nonatomic) NSString * _Nonnull name;
+ [Export("name")]
+ string Name { get; set; }
+ }
+
// @interface HDLRunSceneIntent : INIntent
[Watch(5, 0), NoTV, Mac(11, 0), iOS(12, 0)]
[BaseType(typeof(INIntent))]
@@ -35,14 +73,14 @@
[BaseType(typeof(NSObject))]
interface HDLRunSceneIntentHandling
{
- // @required -(void)handleRunScene:(HDLRunSceneIntent * _Nonnull)intent completion:(void (^ _Nonnull)(HDLRunSceneIntentResponse * _Nonnull))completion __attribute__((swift_name("handle(intent:completion:)")));
+ // @required -(void)handleHDLRunScene:(HDLRunSceneIntent * _Nonnull)intent completion:(void (^ _Nonnull)(HDLRunSceneIntentResponse * _Nonnull))completion __attribute__((swift_name("handle(intent:completion:)")));
[Abstract]
- [Export("handleRunScene:completion:")]
- void HandleRunScene(HDLRunSceneIntent intent, Action<HDLRunSceneIntentResponse> completion);
+ [Export("handleHDLRunScene:completion:")]
+ void HandleHDLRunScene(HDLRunSceneIntent intent, Action<HDLRunSceneIntentResponse> completion);
- // @optional -(void)confirmRunScene:(HDLRunSceneIntent * _Nonnull)intent completion:(void (^ _Nonnull)(HDLRunSceneIntentResponse * _Nonnull))completion __attribute__((swift_name("confirm(intent:completion:)")));
- [Export("confirmRunScene:completion:")]
- void ConfirmRunScene(HDLRunSceneIntent intent, Action<HDLRunSceneIntentResponse> completion);
+ // @optional -(void)confirmHDLRunScene:(HDLRunSceneIntent * _Nonnull)intent completion:(void (^ _Nonnull)(HDLRunSceneIntentResponse * _Nonnull))completion __attribute__((swift_name("confirm(intent:completion:)")));
+ [Export("confirmHDLRunScene:completion:")]
+ void ConfirmHDLRunScene(HDLRunSceneIntent intent, Action<HDLRunSceneIntentResponse> completion);
}
// @interface HDLRunSceneIntentResponse : INIntentResponse
@@ -81,42 +119,5 @@
// @property (readonly, nonatomic) HDLRunSceneIntentResponseCode code;
[Export("code")]
HDLRunSceneIntentResponseCode Code { get; }
- }
-
- // @interface HDLSiriSceneListViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
- [BaseType(typeof(UIViewController))]
- interface HDLSiriSceneListViewController : IUITableViewDataSource, IUITableViewDelegate
- {
- // @property (assign, nonatomic) UITableViewStyle tableViewStyle;
- [Export("tableViewStyle", ArgumentSemantic.Assign)]
- UITableViewStyle TableViewStyle { get; set; }
-
- // @property (nonatomic, strong) UITableView * _Nonnull tableView;
- [Export("tableView", ArgumentSemantic.Strong)]
- UITableView TableView { get; set; }
-
- [Wrap("WeakDataSource")]
- NSMutableArray DataSource { get; set; }
-
- // @property (nonatomic, strong) NSMutableArray * _Nonnull dataSource;
- [NullAllowed, Export("dataSource", ArgumentSemantic.Strong)]
- NSObject WeakDataSource { get; set; }
-
- // @property (nonatomic, strong) NSString * _Nonnull titleName;
- [Export("titleName", ArgumentSemantic.Strong)]
- string TitleName { get; set; }
- }
-
- // @interface HDLSiriSceneModel : NSObject
- [BaseType(typeof(NSObject))]
- interface HDLSiriSceneModel
- {
- // @property (copy, nonatomic) NSString * _Nonnull userSceneId;
- [Export("userSceneId")]
- string UserSceneId { get; set; }
-
- // @property (copy, nonatomic) NSString * _Nonnull name;
- [Export("name")]
- string Name { get; set; }
}
}
diff --git a/Shared.IOS.HDLSceneSiri/Shared.IOS.HDLSceneSiri/Library/libHDLSceneSiri.a b/Shared.IOS.HDLSceneSiri/Shared.IOS.HDLSceneSiri/Library/libHDLSceneSiri.a
index 39c6b9f..1d0a076 100644
--- a/Shared.IOS.HDLSceneSiri/Shared.IOS.HDLSceneSiri/Library/libHDLSceneSiri.a
+++ b/Shared.IOS.HDLSceneSiri/Shared.IOS.HDLSceneSiri/Library/libHDLSceneSiri.a
Binary files differ
diff --git a/Shared.IOS.HDLSceneSiri/Shared.IOS.HDLSceneSiri/Properties/AssemblyInfo.cs b/Shared.IOS.HDLSceneSiri/Shared.IOS.HDLSceneSiri/Properties/AssemblyInfo.cs
index 1d7393b..011bc68 100644
--- a/Shared.IOS.HDLSceneSiri/Shared.IOS.HDLSceneSiri/Properties/AssemblyInfo.cs
+++ b/Shared.IOS.HDLSceneSiri/Shared.IOS.HDLSceneSiri/Properties/AssemblyInfo.cs
@@ -25,7 +25,7 @@
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-[assembly: AssemblyVersion("1.0.1")]
+[assembly: AssemblyVersion("1.0.2")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
--
Gitblit v1.8.0