Създайте динамични персонализирани бързи действия на началния екран за вашите iOS приложения с помощта на SwiftUI

Осигурете на потребителите бърз достъп до някои основни функции на вашето приложение

След актуализацията на iOS 13 вероятно сте забелязали, че ако натиснете продължително иконата на приложение само с малко допълнителен натиск върху вашия iPhone с функцията за 3D докосване, ще се появи меню, което ви показва някои бързи действия (известни още като. , елементи за бърз достъп) за приложението. За да направите приложението си по-интересно, можете да създадете свои собствени персонализирани бързи действия в приложенията си.

Друго нещо, което трябва да споменем в началото е, че ако използвате базиран на Storyboard за вашия потребителски интерфейс, има добра официална справка за изпълнението на бързите действия на началния екран. Въпреки това, доколкото знам, не е имало официална препратка за внедряването с помощта на SwiftUI, което има различни методи за делегиране по отношение на управлението на бързи действия. Така че се надявам, че този урок ще предостави полезна информация на тези, които искат да използват SwiftUI в своите проекти.

Тук ви показвам как да приложите това с урок стъпка по стъпка.

Стъпка 1. Настройка на проекта

За опростяване на настоящия урок, ние просто ще създадем проект за приложение за единичен изглед в Xcode (Файл -› Нов -› Проект -› Приложение за единичен изглед, под раздела iOS). Този проект ще използва Swift като език за програмиране и SwiftUI за дизайн на потребителски интерфейс.

Стъпка 2. Създайте персонализирани бързи действия

Преди да създадем наши собствени бързи действия, първо ще ви покажа някои ключови концепции за елемент за бързо действие по отношение на неговата настройка и взаимодействие с потребителя.

  1. Бързите действия могат да бъдат статични и динамични, като първите се конфигурират по време накомпилация, а вторите по време наизпълнение. Динамичните елементи обаче ще бъдат добавени към статичните, ако се опитвате да зададете и двете.
  2. Теоретично можете да задавате бързи действия, колкото искате. Системата обаче ще покаже само елементите, използвайки наличното пространство. Доколкото мога да преценя, не могат да се показват повече от четири елемента.
  3. Бързото действие може да има икона, заглавие и подзаглавие. Заглавието е задължителна настройка, докато другите две свойства не са задължителни.
  4. Зад сцената трябва да се инициира определено действие, когато се докосне елемент. Следователно типът на бързото действие трябва да бъде зададен така, че приложението да знае как да реагира на докосването. За да персонализирате допълнително това действие, можете по избор да зададете речник, който да предава допълнителната потребителска информация.

След това ще ви покажа два общи подхода за прилагане на бързи действия.

Вариант 1. Статични бързи действия

Ако приложението ви има фиксиран списък с бързи действия, можете да ги направите статични, като ги внедрите по време на изграждането. За да направите това, трябва само да създадете списък с елементи във файла Info.plist на приложението. Щракнете с десния бутон върху файла Info.plist и го отворете като изходен код. Добавете следния код към списъка. По същество бързите действия са масив от речници, всеки от които посочва един елемент.

В горния код създаваме само един елемент. Ако искате да добавите повече елементи, създавате повече речници, като се позовавате на кода между таговете dict и поставяте допълнителни елементи в таговете array.

По-конкретно, задаваме четири свойства на елемента: тип, тип икона, заглавие и подзаглавие, като използваме съответно четири ключа: UIApplicationShortcutItemType, UIApplicationShortcutItemIconType, UIApplicationShortcutItemTitle и UIApplicationShortcutItemSubtitle. Само типът и заглавието са задължителни свойства. Моля, имайте предвид, че типът трябва да бъде уникален низ, така че вашето приложение да е ясно с избора на потребителя за планираното бързо действие.

Освен това можем по избор да посочим файл с изображение или от пакета на приложението, или от каталог с активи, за да покажем иконата, като използваме ключа UIApplicationShortcutItemIconFile. Изображението трябва да е едноцветно и с размери 35 x 35.

Въпреки че не се използва твърде често, можете също така по избор да зададете допълнителна потребителска информация, като използвате ключа UIApplicationShortcutItemUserInfo, който е речник, който ви дава много място за задаване на информация, свързана с потребителското взаимодействие. Един пример, даден от официалната документация относно използването на този ключ, е предоставянето на номер на версия на приложението. Например, потребител може да е инсталирал актуализация на вашето приложение, но приложението все още не е стартирано. Когато потребителят докосне бързите действия на вашето приложение, приложението може да разбере, че потребителят идва от взаимодействие на предишна версия, така че подходящите потребителски взаимодействия могат да бъдат предоставени съответно.

<key>UIApplicationShortcutItemUserInfo</key>
<dict>
    <key>key1</key>
    <string>value1</string>
</dict>

Вариант 2. Динамични бързи действия

Можете също така да създавате динамични бързи действия за вашето приложение по време на изпълнение. Въпреки че зависи от разработчика да реши къде може да създава своите динамични бързи действия, официалната документация на Apple имплицитно препоръчва да създавате динамични бързи действия в метода applicationWillResignActive(_:) на делегата на приложението. Аналогично, с помощта на рамката SwiftUI, ние ще зададем динамичните елементи в метода sceneWillResignActive(_:) на делегата на сцената (т.е. SceneDelegate.swift файл).

За да получите и зададете бързите действия, ще използвате свойството shortcutItems на приложението, като извикате: UIApplication.shared.shortcutItems. Моля, обърнете внимание, че това свойство няма да включва статичните, които сте задали чрез файла Info.plist. Така че преди да зададете това свойство, това свойство е nil.

По-конкретно, ако няма динамични бързи действия за вашето приложение, просто ще присвоите свойството shortcutItems с масив от UIApplicationShortcutItem.

Ако обаче са зададени някои динамични бързи действия, можете да получите директен достъп до тях, като извикате свойството shortcutItems. За да актуализирате конкретен елемент, можете да създадете променливо копие на елемента, което е екземпляр на UIMutableApplicationShortcutItem клас. С този променлив елемент можете да актуализирате заглавието, подзаглавието или иконата. Като алтернатива можете директно да създадете нов елемент и да го замените с елемента, който искате да размените в оригиналния масив.

За динамичните бързи действия можете също да ги зададете на nil, тъй като те не са задължителни.

Стъпка 3. Прилагане на потребителски действия

Тези бързи действия могат да бъдат достъпни само когато потребителят е на началния екран. Така че, когато потребителят докосне бързо действие, приложението ще се отвори. Има два възможни сценария за това как бързото действие може да бъде обработено, както е показано по-долу. Но едно общо нещо между тях е, че трябва да идентифицирате бързото действие въз основа на неговия тип или заглавие, така че приложението ви да може да осигури правилно взаимодействие с потребителя за докоснатия елемент за действие.

Сценарий 1. Приложението не е заредено.

Ако приложението ви не е било заредено преди докосването на бързото действие, следният код в делегата на сцената ще бъде използван, за да отговори на докосването. По-конкретно, елементът за бърз достъп (т.е. бързото действие) може да бъде достъпен като опция за свързване за текущата сесия на сцена. За целите на демонстрацията ще видим само лист за действие.

Сценарий 2. Приложението е заредено.

За да отговорим на докосването, ще внедрим следния метод в делегата на сцената. Този метод се извиква, когато приложението е заредено и потребителят току-що е докоснал елемент за бързо действие. С цел демонстрация ще видим предупреждение.

Храна за вкъщи

Надявам се, че този урок ще ви помогне да приложите бързи действия на началния екран за вашите iOS проекти с помощта на SwiftUI. По-конкретно, Apple ни даде голяма гъвкавост за внедряване на динамични бързи действия. Например, в зависимост от състоянието на влизане на потребителя, можем да осигурим бърз достъп до различни функционалности. Така че можете да се възползвате от тази гъвкавост, за да направите приложението си по-интересно.

Препратки