How can I add a Custom Intent which requires iOS 12 while targeting an older iOS version?
I am trying to add a Custom Intent to support Siri Shortcuts in my app which targets iOS 10.3. Xcode automatically generates the intent classes and protocols, but all the generated classes and protocols have the attribute below:
@available(iOS 12.0, watchOS 5.0, *)
I am aware of #available(...) but it is not used for including or excluding code at compile time, so I am not sure how to go about adding a Custom Intent if my target is set to pre-iOS 12.
In the snippet below, MyIntentHandling and MyIntentResponse are generated automatically by Xcode. However, there is no way to use #available here.
public class MyIntentHandler: NSObject, MyIntentHandling
func confirm(intent: MyIntent, completion: @escaping (MyIntentResponse) -> Void) ...
func handle(intent: MyEntryIntent, completion: @escaping (MyIntentResponse) -> Void) ...
Does anyone have a good solution?
ios swift xcode swift4.2 sirishortcuts
add a comment |
I am trying to add a Custom Intent to support Siri Shortcuts in my app which targets iOS 10.3. Xcode automatically generates the intent classes and protocols, but all the generated classes and protocols have the attribute below:
@available(iOS 12.0, watchOS 5.0, *)
I am aware of #available(...) but it is not used for including or excluding code at compile time, so I am not sure how to go about adding a Custom Intent if my target is set to pre-iOS 12.
In the snippet below, MyIntentHandling and MyIntentResponse are generated automatically by Xcode. However, there is no way to use #available here.
public class MyIntentHandler: NSObject, MyIntentHandling
func confirm(intent: MyIntent, completion: @escaping (MyIntentResponse) -> Void) ...
func handle(intent: MyEntryIntent, completion: @escaping (MyIntentResponse) -> Void) ...
Does anyone have a good solution?
ios swift xcode swift4.2 sirishortcuts
add a comment |
I am trying to add a Custom Intent to support Siri Shortcuts in my app which targets iOS 10.3. Xcode automatically generates the intent classes and protocols, but all the generated classes and protocols have the attribute below:
@available(iOS 12.0, watchOS 5.0, *)
I am aware of #available(...) but it is not used for including or excluding code at compile time, so I am not sure how to go about adding a Custom Intent if my target is set to pre-iOS 12.
In the snippet below, MyIntentHandling and MyIntentResponse are generated automatically by Xcode. However, there is no way to use #available here.
public class MyIntentHandler: NSObject, MyIntentHandling
func confirm(intent: MyIntent, completion: @escaping (MyIntentResponse) -> Void) ...
func handle(intent: MyEntryIntent, completion: @escaping (MyIntentResponse) -> Void) ...
Does anyone have a good solution?
ios swift xcode swift4.2 sirishortcuts
I am trying to add a Custom Intent to support Siri Shortcuts in my app which targets iOS 10.3. Xcode automatically generates the intent classes and protocols, but all the generated classes and protocols have the attribute below:
@available(iOS 12.0, watchOS 5.0, *)
I am aware of #available(...) but it is not used for including or excluding code at compile time, so I am not sure how to go about adding a Custom Intent if my target is set to pre-iOS 12.
In the snippet below, MyIntentHandling and MyIntentResponse are generated automatically by Xcode. However, there is no way to use #available here.
public class MyIntentHandler: NSObject, MyIntentHandling
func confirm(intent: MyIntent, completion: @escaping (MyIntentResponse) -> Void) ...
func handle(intent: MyEntryIntent, completion: @escaping (MyIntentResponse) -> Void) ...
Does anyone have a good solution?
ios swift xcode swift4.2 sirishortcuts
ios swift xcode swift4.2 sirishortcuts
edited Nov 11 at 16:56
asked Nov 11 at 5:58
mkwon
7081714
7081714
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
No,
#available
is for compile and runtime checks.
The Swift compiler checks at compile time, that no methods are called that are not supported for your chosen deployment target and forces you to use #available
conditions. So, since Xcode 9 it's much safer to support older iOS deployment targets and use new features.
At runtime, there is a check, if an #available
condition matches your current running iOS version and it will execute only the matching code.
So, you are safe, with your additional intent support.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53246243%2fhow-can-i-add-a-custom-intent-which-requires-ios-12-while-targeting-an-older-ios%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
No,
#available
is for compile and runtime checks.
The Swift compiler checks at compile time, that no methods are called that are not supported for your chosen deployment target and forces you to use #available
conditions. So, since Xcode 9 it's much safer to support older iOS deployment targets and use new features.
At runtime, there is a check, if an #available
condition matches your current running iOS version and it will execute only the matching code.
So, you are safe, with your additional intent support.
add a comment |
No,
#available
is for compile and runtime checks.
The Swift compiler checks at compile time, that no methods are called that are not supported for your chosen deployment target and forces you to use #available
conditions. So, since Xcode 9 it's much safer to support older iOS deployment targets and use new features.
At runtime, there is a check, if an #available
condition matches your current running iOS version and it will execute only the matching code.
So, you are safe, with your additional intent support.
add a comment |
No,
#available
is for compile and runtime checks.
The Swift compiler checks at compile time, that no methods are called that are not supported for your chosen deployment target and forces you to use #available
conditions. So, since Xcode 9 it's much safer to support older iOS deployment targets and use new features.
At runtime, there is a check, if an #available
condition matches your current running iOS version and it will execute only the matching code.
So, you are safe, with your additional intent support.
No,
#available
is for compile and runtime checks.
The Swift compiler checks at compile time, that no methods are called that are not supported for your chosen deployment target and forces you to use #available
conditions. So, since Xcode 9 it's much safer to support older iOS deployment targets and use new features.
At runtime, there is a check, if an #available
condition matches your current running iOS version and it will execute only the matching code.
So, you are safe, with your additional intent support.
edited Nov 11 at 16:06
answered Nov 11 at 14:04
messeb
17118
17118
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53246243%2fhow-can-i-add-a-custom-intent-which-requires-ios-12-while-targeting-an-older-ios%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown