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.)