Erstellen Sie eine Vorlage für das in iOS14 hinzugefügte Widget mit Absichtskonfiguration. (Diejenigen, die das Menü "Widget bearbeiten" anzeigen) Verwenden Sie nach Möglichkeit die automatische Xcode-Generierung. Da es sich um eine Vorlage handelt, hat sie keine Funktion, aber ich hoffe, dass sie die Grundlage für die Massenproduktion von Widgets bildet.
Ich denke, die meisten Apps werden immer noch mit UIKit erstellt, daher habe ich mich für "UIKit App Delegate" entschieden. Der Name ist "LeaderCard" unter der Annahme eines Kreditkartenantrags. : entspannt:
Drücken Sie hier +
.
Wählen Sie die Widget-Erweiterung und klicken Sie auf "Weiter".
Aktivieren Sie "Konfigurationsabsicht einschließen". (← wichtig hier!) Wenn Sie dies nicht überprüfen, handelt es sich um "Statische Konfiguration". Der Widget-Name lautet "LeaderCardWidget".
Drücken Sie hier +
.
Wählen Sie Intents Extension und klicken Sie auf "Weiter".
Aktivieren Sie nicht "Include UI Extension". (← wichtig hier!) Wählen Sie "Keine" für "Startpunkt". (← wichtig hier!) Der Intent Handler-Name lautet "LeaderCardIntent".
Öffnen Sie die im Ordner "LeaderCardWidget" generierte "LeaderCardWidget.intentdefinision". Drücken Sie unten "+", um "Neuer Typ" auszuwählen. Stellen Sie "Karte" auf den Typnamen ein. Sie müssen den Inhalt von "Karte" nicht berühren. Parameters Stellen Sie wie in der Abbildung unten gezeigt ein.
Parameter Der Parameter wird in Kleinbuchstaben auf "Karte" gesetzt. (← wichtig hier!) Dies liegt daran, dass dies der Eigenschaftsname der automatisch generierten Klasse "ConfigurationIntent" ist.
Display Name Die hier angegebene Zeichenfolge wird an der in der folgenden Abbildung gezeigten Position angezeigt.
Type Wählen Sie "Karte".
Configurable Überprüfen.
Dynamic Options Überprüfen.
Prompt Label Die hier angegebene Zeichenfolge wird an der in der folgenden Abbildung gezeigten Position angezeigt.
Target Membership
Überprüfen Sie LeaderCardWidgetExtension
und LeaderCardIntent
. (← wichtig hier!)
Ausgangszustand
IntentHandler.swift
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
}
}
Fügen Sie das Protokoll "ConfigurationIntentHandling" hinzu. Dann werden Sie gefragt, ob Sie "Protokollstub" hinzufügen möchten. Drücken Sie also "Fix". Die Methode "requireCardOptionsCollection" wurde hinzugefügt.
Schreiben Sie "Vervollständigung (nil, nil)" in den "Code" -Teil. (Da es sich um eine Vorlage handelt, funktioniert nichts.)
IntentHandler.swift
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
}
}
Die Vorlage sollte jetzt vollständig sein. Bei der Ausführung wird der folgende Bildschirm angezeigt. Wir werden dies konkretisieren und näher an das gewünschte Widget bringen.
GitHub Wir haben hier ein "Vorlagen-Repository" erstellt. Verwenden Sie es daher, wenn Sie möchten. iOS14-Widget-IntentConfiguration-template
Recommended Posts