3 способа передачи информации из основного таргета приложения в таргет виджетов в Swift
Так или иначе, но в виджеты необходимо передавать информацию из основного приложения. Это может быть все что угодно: от выбранного пользователем формата времени до полученных писем в почтовом клиенте. В этой статье я расскажу об основных способах передачи данных между таргетами приложения.
AppGroup
Таргет виджетов не является чем-то уникальным и работает примерно так же, как и остальные таргеты других app extensions. И для передачи информации по разным таргетам сначала надо добавить в приложение AppGroup. Во вкладке Signing & Capabilities основного таргета вашего проекта нужно нажать на кнопку + Capability и в новом окно выбрать App Groups. Хорошей практикой является назвать AppGroup как “group.” + buindle id приложения.
Рис. 1. Создание App GroupПосле этого можно добавить id
вашей AppGroups в константы, добавить файл констант в таргет виджетов и иметь доступ к id
везде, где понадобится, например, так:
import Foundation struct Constants { static let appGroupID = "group. com.nadzeya.widgetsSandbox" }Рис. 2. Добавление файла в таргет виджетов
UserDefaults
.Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека мобильного разработчика»
Интересно, перейти к каналу
UserDefaults
UserDefaults
в Swift – это класс, который предоставляет возможность сохранять пары ключ-значение в пользовательскую встроенную базу данных. В нее можно сохранять значения разных типов данных – String, Bool, Data, Date, Array, Dictionary и проч. В основном UserDefaults
используются для хранения некоторых настроек приложения и/или пользовательских предпочтений, таких как выбранный формат времени и даты, темная или светлая тема приложения, если, конечно, приложение поддерживает это. Также еще в UserDefaults
можно хранить что-то важное для аналитики или отображения некоторых экранов, например, дату первой сессии приложения.
UserDefaults
значения, нам надо их сохранять в главном таргете не в UserDefaults.standard
:UserDefaults.standard.set("my_value", forKey: "myValueKey")
а в наш контейнер AppGroup:
UserDefaults(suiteName: Constants.appGroupID)!.set("my_value", forKey: "myValueKey")
И мы тогда сможем читать сохраненные данные в таргете виджета таким образом. Допустим, мы сохранили что-то типом String:
let savedValue = UserDefaults(suiteName: Constants.appGroupID)!.string(forKey: "myValueKey")
Вот так просто меняется работа с UserDefaults
File Container
UserDefaults
отлично справляются с хранением чего-то небольшого, но если есть задача передать в таргет виджетов нечто большее, чем пользовательские настройки, а базы данных в приложении нет, то можно использовать File Container и хранить необходимые данные, например в . plist
-файле или в .json
-файле. Для этого нам надо создать нужный нам файл в File Container для нашей App Group и записать в него информацию:
let containerURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: Constants.appGroupID)! let fileURL = containerURL.appendingPathComponent("savedDataForWidgets.json") do { let encoded = try JSONEncoder().encode(myWidgetData) try! encoded.write(to: fileURL) } catch { print( error) }
И, соответственно, вот так можно читать эту информацию в таргете виджета:
var widgetData: [MyWidgetData] = [] guard let data = try? Data(contentsOf: url) else { return widgetData } do { widgetData = try JSONDecoder().decode([MyWidgetData].self, from: data) } catch { print(error) }
CoreData
В большом количестве приложений используются CoreData для хранения данных, и для того, чтобы можно было ею пользоваться в таргете виджетов, надо создать общий CoreData контейнере в AppGroup:
let containerURL = FileManager. default.containerURL(forSecurityApplicationGroupIdentifier: Constants.appGroupID)! let storeURL = containerURL.appendingPathComponent("MyWidgetDataModel.sqlite") let description = NSPersistentStoreDescription(url: storeURL) let container = NSPersistentContainer(name: "MyWidgetDataModel") container.persistentStoreDescriptions = [description] container.loadPersistentStores { ... }
И теперь мы можем получать наши данные в таргете виджета вот так:
let managedObjectContext = CoreDataStack.shared.managedObjectContext let predicate = NSPredicate(format: "id == %@", "widgetID") let request = NSFetchRequest<SomeItem>(entityName: "MyWidget") let result = try managedObjectContext.fetch(request)
Кроме CoreData, есть и другие базы данных, но принцип везде примерно одинаковый: можно добавить файлы базы данных в таргет виджета и уже в нем напрямую запрашивать необходимую информацию.
Есть только одно но: виджеты ни в каком виде не поддерживают асинхронный код, то есть и запросы за данными надо будет делать синхронно.***
Я постаралась подробно рассказать об основных способах передачи данных из основного таргета приложения в таргет виджетов. Надеюсь, что эта статья была полезной. Я буду рада фидбэку и комментариям. Спасибо!
Савицкая Надежда, iOS-разработчик.
Материалы по теме
- 📱Как работают таймлайны и как обновлять виджеты правильно
COVID-19 Target product profiles for priority diagnostics to support response to the COVID-19 pandemic v.1.0
- All topics »
- A
- B
- C
- D
- E
- F
- G
- H
- I
- J
- K
- L
- M
- N
- O
- P
- Q
- R
- S
- T
- U
- V
- W
- X
- Y
- Z
- Resources »
- Fact sheets
- Facts in pictures
- Multimedia
- Publications
- Questions & answers
- Tools and toolkits
- Popular »
- Air pollution
- Coronavirus disease (COVID-19)
- Hepatitis
- Monkeypox
- All countries »
- A
- B
- C
- D
- E
- F
- G
- H
- I
- J
- K
- L
- M
- N
- O
- P
- Q
- R
- S
- T
- U
- V
- W
- X
- Y
- Z
- Regions »
- Africa
- Americas
- South-East Asia
- Europe
- Eastern Mediterranean
- Western Pacific
- WHO in countries »
- Statistics
- Cooperation strategies
- Ukraine emergency
- All news »
- News releases
- Statements
- Campaigns
- Commentaries
- Events
- Feature stories
- Speeches
- Spotlights
- Newsletters
- Photo library
- Media distribution list
- Headlines »
- Focus on »
- Afghanistan crisis
- COVID-19 pandemic
- Northern Ethiopia crisis
- Syria crisis
- Ukraine emergency
- Monkeypox outbreak
- Greater Horn of Africa crisis
- Latest »
- Disease Outbreak News
- Travel advice
- Situation reports
- Weekly Epidemiological Record
- WHO in emergencies »
- Surveillance
- Research
- Funding
- Partners
- Operations
- Independent Oversight and Advisory Committee
- WHO’s Health Emergency Appeal 2023
- Data at WHO »
- Global Health Estimates
- Health SDGs
- Mortality Database
- Data collections
- Dashboards »
- COVID-19 Dashboard
- Triple Billion Dashboard
- Health Inequality Monitor
- Highlights »
- Global Health Observatory
- SCORE
- Insights and visualizations
- Data collection tools
- Reports »
- World Health Statistics 2022
- COVID excess deaths
- DDI IN FOCUS: 2022
- About WHO »
- People
- Teams
- Structure
- Partnerships and collaboration
- Collaborating centres
- Networks, committees and advisory groups
- Transformation
- Our Work »
- General Programme of Work
- WHO Academy
- Activities
- Initiatives
- Funding »
- Investment case
- WHO Foundation
- Accountability »
- Audit
- Programme Budget
- Financial statements
- Programme Budget Portal
- Results Report
- Governance »
- World Health Assembly
- Executive Board
- Election of Director-General
- Governing Bodies website
- Member States Portal
— Select language -العربية中文françaisрусскийespañolportuguês
28 September 2020
| COVID-19: Laboratory and diagnosis
Download (657. 5 kB)
Overview
WHO is publishing here the final version of Target Product Profiles (TPP) for priority COVID-19 diagnostics. These TPPs describe the desirable and minimally acceptable profiles for four tests.
- Point of care test for suspected COVID-19 cases and their close contacts to diagnose acute SARS-CoV-2 infection in areas where reference assay testing is unavailable, or turnaround times obviate clinical utility
- Test for diagnosis or confirmation of acute or subacute SARS-CoV-2 infection, suitable for low or high-volume needs:
- Point of care test for prior infection with SARS-CoV-2
- Test for prior infection with SARS-CoV-2 for moderate to high volume needs
These TPPs will be reviewed and updated as new information becomes available.
WHO Team
C-Tap, R&D Blue Print, WHO Headquarters (HQ)
Цель: Ожидайте большего. Плати меньше.
Первоклассный первый день
Найдите по низким ценам все необходимое для успеха.
Из
25 центов.школьные принадлежности
От
14,99рюкзаки
От
$6школьная форма
От
5 долларов.ланч-боксы
Поступление 9 июля–15
Присоединяйтесь к Target Circle™ бесплатно и получайте отличные предложения и преимущества.
Подготовка к колледжу
От
25 долларов.Мебель
От
$4постельное белье
От
$3Хранение
Необходимые предметы для колледжа
Игра делает обучение увлекательным
Адаптивные игрушки
Познакомьтесь с игрушками и играми, которые удовлетворяют уникальные потребности в обучении.
Обучающие игрушки
Игры, головоломки и многое другое, бросающее вызов разуму и чувствам.
Детские поделки
Практические творческие, творческие и красочные занятия.
Игрушки STEM
Создавайте, тестируйте и узнавайте больше, играя.
Блестящие фасоны
Коллекция летних платьев
Новые модные стили для дня и ночи.
Из
$5женские
необходимые вещиОт
$5детские и детские летние модели
От
$12женский заплыв
Загрузка…
Загрузка…
Загрузка…
Загрузка…
Загрузка…
900 02 Говори сейчас (версия Тейлора)22 песни, в том числе 6 песен из хранилища.
Эксклюзивный виниловый альбом
Включает в себя эксклюзивные виниловые диски с тремя пластинками Lilac Marbled, а также коллекционные обложки и обложки альбомов, разворотную фотографию и пролог, тексты песен и ранее не публиковавшиеся фотографии.
Заказать винил
Компакт-диск Альбом
Включает в себя коллекционный альбом с двумя дисками в футляре для драгоценностей, уникальную иллюстрацию, буклет с текстами песен и неопубликованные ранее фотографии.
Компакт-диск с заказом
Загрузка…
Загрузка…
Загрузка…
Загрузка…
Загрузка…
Загрузка…
Бесплатно $5
¬GiftCard
При покупке 4 select beauty & средства личной гигиены по цене $4,99 и выше с доставкой в тот же день или самовывозом*
Бесплатно на 20 долларов США
Подарочная карта
при покупке определенных подгузников, салфеток и тренировочных штанов на сумму не менее 100 долларов США с доставкой в тот же день или самовывозом*
Бесплатно 10 долларов США
¬GiftCard
при покупке 3 предметов первой необходимости с доставкой или самовывозом в тот же день*
Распродажа с 1999 г.
Распродажа от $19,99предметы для кухни и столовой*
Создайте свой реестр
Свадьба
реестрНайдите лучший реестр
выбор, купоны и многое другое.Детский регистр
Откройте для себя
необходимых вещей для новорожденных, получите и другие преимущества.Избранные категории
Все товары
Готов к школе
College Shop
Женские
Мужская
Детская
Детская
Домашняя
Патио и сад
Кухня и столовая
Красота
Видеоигры
Игрушки
Спорт и активный отдых
Apple
Бакалея
Товары первой необходимости
Домашние животные
Распродажа
Наши корпоративные обязательства
Программа вознаграждений Target Circle™
Преимущества, которые вам понравятся
Воспользуйтесь ими в магазине или в Интернете.
См. правила программы Target Circle.Как заработать
Каждый раз, когда вы делаете покупки, у вас есть шанс заработать.
В магазине
Введите номер мобильного телефона или отсканируйте Wallet.
Онлайн
Делайте покупки с помощью своей учетной записи Target.com.
Забыли отсканировать?
Введите квитанцию на приборной панели.
Как это работает
При оплате картой RedCard™ вы заработаете один голос, чтобы помочь указать, где Target дает для каждой соответствующей покупки, и продолжите экономить 5% прямо сейчас. Введите номер своего мобильного телефона или отсканируйте штрих-код Target Circle™, чтобы одновременно воспользоваться сохраненными предложениями. 2
Не пользуетесь RedCard? Вы заработаете 1%, чтобы использовать его в Target позже, вместо того, чтобы экономить 5% сразу.
В магазине
Введите номер своего мобильного телефона на клавиатуре или на экране кассы самообслуживания.
Отсканируйте штрих-код Target Circle, который вы можете найти в своей учетной записи или кошельке в приложении Target.
Когда вы в сети
Войдите в свою подключенную учетную запись Target на Target.com или в приложении Target.
После покупки
Введите номера квитанций в течение 14 дней, чтобы получать доходы от соответствующих покупок в магазине.
В магазине
Введите номер своего мобильного телефона на клавиатуре или на экране кассы самообслуживания.
Отсканируйте штрих-код Target Circle, который вы можете найти в своей учетной записи или кошельке в приложении Target.
Когда вы в сети
Войдите в свою подключенную учетную запись Target на Target.com или в приложении Target.
После покупки
Введите номера квитанций в течение 14 дней, чтобы получить доход от соответствующих покупок в магазине.
У вас есть RedCard™?
Присоединяйтесь к Target Circle, чтобы начать получать преимущества от голосования и предложений. Вы по-прежнему будете экономить 5 % при оплате картой RedCard вместо того, чтобы зарабатывать 1 % с помощью Target Circle. 2
У вас еще нет RedCard?
Узнайте больше о RedCardЧасто задаваемые вопросы
Как работает Target Circle?Target Circle — это программа лояльности, в рамках которой вы можете получать 1% вознаграждения от Target Circle каждый раз, когда вы совершаете соответствующую покупку с оплатой, отличной от RedCard, которую можно использовать в Target, в магазине или в Интернете. Узнайте больше на Target.com/circle.
Чтобы заработать 1% на покупках в магазине с помощью Target Circle, выберите один из следующих вариантов:
- Введите свой номер телефона на клавиатуре при оформлении заказа или на экране самообслуживания
- Отсканируйте штрих-код Target Circle, который вы найти в своем кошельке в целевом приложении или на target.com/circle/dashboard.
- Введите номера чеков в течение 7 дней после соответствующих покупок в магазине на странице target. com/circle/dashboard или с помощью функции сканирования в приложении Target
Чтобы заработать 1% на онлайн-покупках с помощью Target Circle, просто войдите в систему вашей учетной записи Target.com.
Каковы преимущества Target Circle?Вот привилегии и преимущества Target Circle:
- Зарабатывайте 1% (вознаграждение от дохода Target Circle), когда вы совершаете покупки в Target, в магазине или онлайн, или продолжайте мгновенно экономить 5% с RedCardTM. Найдите вознаграждение за заработок от Target Circle в своем кошельке в приложении Target или на сайте target.com/circle. Используйте вознаграждение, полученное от Target Circle, применив его к покупке в магазине или в Интернете.
- Получите доступ к предложениям и предложениям только для вас.
- Получите подарок на день рождения в свой важный день
- Каждый раз, когда вы совершаете покупки в Target Circle, вы получаете голос. Вы можете голосовать, чтобы помочь указать, где Target дает в вашем сообществе.
Применяются ограничения. См. правила программы Target Circle. См. правила программы скидок RedCard 5% на сайте target.com/redcard.
Как получить целевой круг?Вы можете зарегистрироваться в Target Circle, посетив страницу target.com/circle или во вкладке «Учетная запись» в приложении Target.
Является ли Target Circle кредитной картой?Нет. Это бесплатная программа лояльности.
Целевой круг стоит денег?Вы можете бесплатно присоединиться к Target Circle на странице target.com/circlepage или в приложении Target.
Целевой круг заменяет колесо телеги?Предложения Target Circle ранее назывались Cartwheel.
Срок годности доходов от Target Circle истекает?Награды за заработок Target Circle истечет, если вы не заработали или не использовали какие-либо награды за заработок Target Circle в течение одного года.
Сколько предложений Target Circle вы можете использовать одновременно?Вы получаете 75 мест и активируете любое сохраненное предложение, которое есть в вашем списке на момент транзакции.