iOS14 위젯 템플릿을 IntentConfiguration으로 만듭니다.
("위젯 편집"메뉴가 표시되는 분)
가능한 한 Xcode의 자동 생성을 사용합니다.
템플릿이므로 아무런 기능이 없지만 위젯을 양산 할 때의 기초가되기를 기대합니다.
앱 만들기
아직 UIKit로 만든 앱이 대부분이라고 생각하기 때문에 UIKit App Delegate를 선택했습니다.
이름은 신용 카드 앱을 가정하여 LeaderCard로 지정했습니다. 

Widget Extension 만들기
여기에서 +를 누릅니다.

Widget Extension을 선택하고 Next를 누릅니다.

Include Configuration Intent를 선택하십시오. (←여기 소중!)
체크하지 않으면 StaticConfiguration가 됩니다.
위젯 이름은 LeaderCardWidget입니다.

Intent Handler 만들기
여기에서 +를 누릅니다.

Intents Extension을 선택하고 Next를 누릅니다.

Include UI Extension를 확인하지 않습니다. (←여기 소중!)Starting Point 선택 None. (←여기 소중!)
Intent Handler 이름은 LeaderCardIntent입니다.

intentdefinition 설정
LeaderCardWidget 폴더에 생성된 LeaderCardWidget.intentdefinision를 엽니다.

아래쪽에 있는 +를 눌러 New Type를 선택합니다.

유형 이름으로 Card를 설정합니다. Card 의 내용은 만지지 않아도 됩니다.

Parameters
아래 그림과 같이 설정한다.

Parameter
Parameter는 소문자로 card 로 설정한다. (←여기 소중!)

자동 생성되는 클래스ConfigurationIntent의 프로퍼티명이 되어 있기 때문입니다.
디스플레이 이름
여기에 지정한 문자열은 아래 그림의 위치에 표시됩니다.

유형
Card를 선택합니다.
Configurable
확인하십시오.
동적 옵션
확인하십시오.
Prompt Label
여기에 지정한 문자열은 아래 그림의 위치에 표시됩니다.

Target Membership
LeaderCardWidgetExtension와 LeaderCardIntent를 확인하십시오. (←여기 소중!)

Intent Handler의 최소 코딩
초기 상태
IntentHandler.swiftclass IntentHandler: INExtension {
override func handler(for intent: INIntent) -> Any {
// 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.
return self
}
}
ConfigurationIntentHandling 프로토콜을 추가합니다.

그러면 protocol stub를 추가하거나 듣기 때문에 Fix를 누릅니다.

provideCardOptionsCollection 메서드가 추가됩니다.

code 부분에 completion(nil, nil)를 쓴다.
(템플릿이므로 아무것도 작동하지 않습니다.)
IntentHandler.swiftclass IntentHandler: INExtension {
func provideCardOptionsCollection(for intent: ConfigurationIntent, with completion: @escaping (INObjectCollection<Card>?, Error?) -> Void) {
completion(nil, nil)
}
override func handler(for intent: INIntent) -> Any {
// 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.
return self
}
}
완성
이제 템플릿이 완성되었습니다.
실행하면 다음과 같은 화면이 표시됩니다.
이것에 살을 붙여 목적의 위젯에 접근해 가게 됩니다.




GitHub
여기에 Template repository를 만들고 있으므로, 괜찮으시면 이용하십시오.
iOS14-Widget-IntentConfiguration-template
개발 환경
여기에서
+를 누릅니다.
Widget Extension을 선택하고
Next를 누릅니다.
Include Configuration Intent를 선택하십시오. (←여기 소중!)체크하지 않으면
StaticConfiguration가 됩니다.위젯 이름은
LeaderCardWidget입니다.
Intent Handler 만들기
여기에서 +를 누릅니다.

Intents Extension을 선택하고 Next를 누릅니다.

Include UI Extension를 확인하지 않습니다. (←여기 소중!)Starting Point 선택 None. (←여기 소중!)
Intent Handler 이름은 LeaderCardIntent입니다.

intentdefinition 설정
LeaderCardWidget 폴더에 생성된 LeaderCardWidget.intentdefinision를 엽니다.

아래쪽에 있는 +를 눌러 New Type를 선택합니다.

유형 이름으로 Card를 설정합니다. Card 의 내용은 만지지 않아도 됩니다.

Parameters
아래 그림과 같이 설정한다.

Parameter
Parameter는 소문자로 card 로 설정한다. (←여기 소중!)

자동 생성되는 클래스ConfigurationIntent의 프로퍼티명이 되어 있기 때문입니다.
디스플레이 이름
여기에 지정한 문자열은 아래 그림의 위치에 표시됩니다.

유형
Card를 선택합니다.
Configurable
확인하십시오.
동적 옵션
확인하십시오.
Prompt Label
여기에 지정한 문자열은 아래 그림의 위치에 표시됩니다.

Target Membership
LeaderCardWidgetExtension와 LeaderCardIntent를 확인하십시오. (←여기 소중!)

Intent Handler의 최소 코딩
초기 상태
IntentHandler.swiftclass IntentHandler: INExtension {
override func handler(for intent: INIntent) -> Any {
// 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.
return self
}
}
ConfigurationIntentHandling 프로토콜을 추가합니다.

그러면 protocol stub를 추가하거나 듣기 때문에 Fix를 누릅니다.

provideCardOptionsCollection 메서드가 추가됩니다.

code 부분에 completion(nil, nil)를 쓴다.
(템플릿이므로 아무것도 작동하지 않습니다.)
IntentHandler.swiftclass IntentHandler: INExtension {
func provideCardOptionsCollection(for intent: ConfigurationIntent, with completion: @escaping (INObjectCollection<Card>?, Error?) -> Void) {
completion(nil, nil)
}
override func handler(for intent: INIntent) -> Any {
// 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.
return self
}
}
완성
이제 템플릿이 완성되었습니다.
실행하면 다음과 같은 화면이 표시됩니다.
이것에 살을 붙여 목적의 위젯에 접근해 가게 됩니다.




GitHub
여기에 Template repository를 만들고 있으므로, 괜찮으시면 이용하십시오.
iOS14-Widget-IntentConfiguration-template
개발 환경
LeaderCardWidget 폴더에 생성된 LeaderCardWidget.intentdefinision를 엽니다.
아래쪽에 있는
+를 눌러 New Type를 선택합니다.
유형 이름으로
Card를 설정합니다. Card 의 내용은 만지지 않아도 됩니다.
Parameters
아래 그림과 같이 설정한다.

Parameter
Parameter는 소문자로
card 로 설정한다. (←여기 소중!)
자동 생성되는 클래스
ConfigurationIntent의 프로퍼티명이 되어 있기 때문입니다.디스플레이 이름
여기에 지정한 문자열은 아래 그림의 위치에 표시됩니다.

유형
Card를 선택합니다.Configurable
확인하십시오.
동적 옵션
확인하십시오.
Prompt Label
여기에 지정한 문자열은 아래 그림의 위치에 표시됩니다.

Target Membership
LeaderCardWidgetExtension와 LeaderCardIntent를 확인하십시오. (←여기 소중!)
Intent Handler의 최소 코딩
초기 상태
IntentHandler.swiftclass IntentHandler: INExtension {
override func handler(for intent: INIntent) -> Any {
// 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.
return self
}
}
ConfigurationIntentHandling 프로토콜을 추가합니다.

그러면 protocol stub를 추가하거나 듣기 때문에 Fix를 누릅니다.

provideCardOptionsCollection 메서드가 추가됩니다.

code 부분에 completion(nil, nil)를 쓴다.
(템플릿이므로 아무것도 작동하지 않습니다.)
IntentHandler.swiftclass IntentHandler: INExtension {
func provideCardOptionsCollection(for intent: ConfigurationIntent, with completion: @escaping (INObjectCollection<Card>?, Error?) -> Void) {
completion(nil, nil)
}
override func handler(for intent: INIntent) -> Any {
// 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.
return self
}
}
완성
이제 템플릿이 완성되었습니다.
실행하면 다음과 같은 화면이 표시됩니다.
이것에 살을 붙여 목적의 위젯에 접근해 가게 됩니다.




GitHub
여기에 Template repository를 만들고 있으므로, 괜찮으시면 이용하십시오.
iOS14-Widget-IntentConfiguration-template
개발 환경
class IntentHandler: INExtension {
override func handler(for intent: INIntent) -> Any {
// 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.
return self
}
}
class IntentHandler: INExtension {
func provideCardOptionsCollection(for intent: ConfigurationIntent, with completion: @escaping (INObjectCollection<Card>?, Error?) -> Void) {
completion(nil, nil)
}
override func handler(for intent: INIntent) -> Any {
// 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.
return self
}
}
이제 템플릿이 완성되었습니다.
실행하면 다음과 같은 화면이 표시됩니다.
이것에 살을 붙여 목적의 위젯에 접근해 가게 됩니다.




GitHub
여기에 Template repository를 만들고 있으므로, 괜찮으시면 이용하십시오.
iOS14-Widget-IntentConfiguration-template
개발 환경
Reference
이 문제에 관하여(iOS14 위젯 템플릿을 IntentConfiguration으로 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Hackenbacker/items/5325a8bf9daa527b02fb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)