Как удалить аккаунт в смысле какао на Android

Обновлено: 24.09.2022

1

Спасибо, что поделились своим восхищением и опасениями по поводу технологии, Джеймс. Мы обязательно рассмотрим их, когда решим обновить историю в будущем. А пока ознакомьтесь с нашим сравнением производительности Xamarin и нативных приложений. Мы будем рады узнать ваше мнение.

0

Мы искали профессиональное обучение в классе по текущим стандартам Xamarin (оболочке и т. д.). Единственные учебные ресурсы, которые мы нашли, — это однодневное практическое занятие на vslive и онлайн-документация. Где найти хорошее обучение? Спасибо!

0

Здравствуйте, Даррен!
Познакомьтесь с модулями и схемами обучения Xamarin от Microsoft Learn, онлайн-курсами от Udemy или курсами LinkedIn Learning, такими как Xamarin.Forms Essential Training.

1

Каждый раз, когда организации начинают новый мобильный проект, необходимо учитывать ряд факторов, поэтому решение о том, использовать ли Swift или Objective-C для разработки, не всегда является однозначным. Приложение iOS для бизнеса всегда выгодно.

0

0

Спасибо, что заметил это, Джейкоб! Действительно, это должно было быть «асинхронно».

0

Здравствуйте, в вашей статье изложены полезные идеи о разработке мобильных приложений Xamarin!

0

0

0

Спасибо, что поделились! Некоторое время назад мы провели исследование, в котором сравнивали производительность Xamarin и нативной системы. Дайте нам знать, что вы об этом думаете!

0

0

Да, время сборки просто ад. Я использую проект UWP для тестирования и удаленных URL-адресов для ресурсов. Это намного быстрее, чем нативная сборка. Хотя, если большая часть кода является общей. В других случаях вы можете отделить проект Android/iOS от основного проекта и работать с ним отдельно.

0

Сравнение xamarin с нативным для разработки приложения, лучшим будет xamarin.

0

«Облако в сочетании с инструментом Xamarin Test Recorder позволяет запускать автоматические тесты пользовательского интерфейса и выявлять проблемы с производительностью до выпуска. Однако эта услуга предоставляется за дополнительную плату». Это уже не так. Test Recorder и Cloud устарели. Нет замены для регистратора тестов. А AppCenter заменяет Xam Test Cloud.

0

Просто убрал это в тексте. Спасибо, что подняли этот вопрос, Марк!

0

Во-первых, большинство успешных приложений бесплатны и поддерживаются рекламой, а это означает, что вы зарабатываете всего несколько центов на пользователя. Даже если вы получите миллион загрузок, вы все равно не заработаете огромную сумму денег, которую можно было бы разделить между всеми люди, которые работали над приложением, плюс оплата любых серверов, которые вам нужны для поддержки приложения. Во-вторых, лояльность к разработчикам приложений очень низкая по сравнению с традиционными настольными приложениями.

0

Это наша вина как разработчиков. Публике все равно, сколько они платят, пока везде так. Каким-то образом нам удалось оказаться на дне бочки.

0

Потрясающая статья с глубоким анализом, веская причина для сравнения Xamarine, Native и Hybrid.

0

Спасибо, Абхишек! Если вы хотите узнать больше о практических различиях, взгляните на наше более глубокое исследование производительности Xamarin и Native.

0

0

Хорошо описал плюсы и минусы разработки приложений с помощью Xamarin. Спасибо, что поделились замечательным анализом.

хочу поделиться с вами еще одной статьей о Xamarin

0

Вы можете удалить пункт "Дорогая лицензия Xamarin", так как теперь он предоставляется бесплатно и в версиях для сообщества.

0

Для мобильной разработки xamarin является ключевым и широко используется в наши дни. Так что для нас плюсы очень эффективны и очень хорошо описаны здесь.

0

Если ваше мобильное приложение было разработано с помощью Microsoft Xamarin, вам необходимо знать, что работает в ваших интересах. В этой статье освещаются преимущества и недостатки Microsoft Xamarin.

0

"Однако, если вы ищете альтернативу Xamarin для создания кроссплатформенного мобильного приложения, вы можете быть разочарованы. Хотя наиболее широко используемыми кроссплатформенными инструментами для разработки мобильных приложений являются PhoneGap/Apache Cordova, Ionic Framework, Appcelerator/Titanium, они в основном опираются на веб-технологии, такие как HTM5 или JavaScript».

Как насчет нативной реакции? Можете ли вы поделиться некоторыми мнениями?

0

Разработчики могут использовать интерфейс диспетчера тегов для внедрения и управления тегами измерений и пикселями в своих мобильных приложениях без необходимости перестраивать и повторно отправлять двоичные файлы приложений на рынки приложений. Разработчики, работающие с Google Analytics для Firebase, могут легко добавить Диспетчер тегов, чтобы управлять реализацией и вносить изменения в нее даже после того, как приложение будет выпущено.

Разработчики могут регистрировать важные события и позже решать, какие теги или пиксели отслеживания следует активировать.

Предпосылки

Перед началом работы:

  • Установите SDK Firebase.
  • В консоли Firebase добавьте свое приложение в проект Firebase. в ваше приложение. . .

В следующем разделе описаны шаги по настройке и использованию Диспетчера тегов Google в приложении для iOS.

1. Добавьте Диспетчер тегов в свой проект

Добавьте пакет Диспетчера тегов:

Какао-стручки

Чтобы добавить Диспетчер тегов через CocoaPods:

В терминале выполните следующую команду:

Перейдите в каталог вашего проекта.

Выполните следующую команду, чтобы создать файл с именем Podfile :

В Podfile добавьте следующее:

Выполните следующую команду, чтобы загрузить и установить зависимости Диспетчера тегов в свой проект:

Диспетчер пакетов Swift

Чтобы добавить Диспетчер тегов с помощью диспетчера пакетов Swift:

  1. При миграции из проекта на основе CocoaPods запустите pod deintegrate, чтобы удалить CocoaPod из проекта Xcode. Сгенерированный CocoaPods файл .xcworkspace впоследствии можно безопасно удалить. Если вы впервые добавляете Firebase в проект, этот шаг можно пропустить.
  2. В Xcode 12 установите библиотеку диспетчера тегов, выбрав «Файл» > «Пакеты диспетчера тегов» > «Добавить зависимость пакета…»

В появившемся окне введите GitHub-репозиторий Диспетчера тегов:

Выберите нужную версию Диспетчера тегов. Для новых проектов мы рекомендуем использовать последнюю версию Диспетчера тегов.

Добавьте -ObjC к другим флагам компоновщика в настройках сборки вашего проекта.

Создайте контейнер iOS, если в вашем аккаунте Диспетчера тегов его нет:

  1. Войдите в свой аккаунт Диспетчера тегов.
  2. Нажмите "АДМИНИСТРАТОР" на верхней панели навигации.
  3. В столбце КОНТЕЙНЕР нажмите раскрывающееся меню и выберите СОЗДАТЬ КОНТЕЙНЕР.
  4. Введите имя контейнера.
  5. Выберите контейнер iOS.
  6. Выберите SDK Firebase (iOS).
  7. Нажмите СОЗДАТЬ.

Загрузите свой контейнер:

  1. Войдите в свой аккаунт Диспетчера тегов.
  2. Выберите свой контейнер iOS.
  3. Нажмите «Версии» на верхней панели навигации.

Нажмите Действия > Загрузить для выбранной версии контейнера.

Добавьте загруженный контейнер в свой проект:

  1. Скопируйте загруженный файл в папку с именем container в корне проекта XCode (обычно PROJECT_ROOT/container/GTM-XXXXXX.json).
  2. Откройте Xcode.
  3. В меню "Файл" выберите "Добавить файлы в".
  4. Выберите папку-контейнер.
  5. Нажмите "Параметры" и убедитесь, что выбран параметр "Создавать ссылки на папки".
  6. Нажмите "Готово".

2. Записывать события и переменные

Диспетчер тегов использует события, параметры и свойства пользователей Analytics для запуска и создания тегов, которые вы настроили в веб-интерфейсе Диспетчера тегов. В этом смысле ваша реализация Google Analytics действует как уровень данных.

Настройка переменных в Диспетчере тегов

Чтобы зафиксировать значение параметров события Firebase и пользовательских свойств для использования в Диспетчере тегов, вы можете настроить переменные в интерфейсе Диспетчера тегов.

Например, если вы регистрируете в своем приложении следующее настраиваемое событие:

вы можете настроить новые переменные параметра события в Диспетчере тегов для захвата значений параметров image_name и full_text:

  • Имя переменной: имя изображения
  • Тип переменной: параметр события
  • Имя ключа параметра события: image_name
  • Имя переменной: полный текст
  • Тип переменной: параметр события
  • Имя ключа параметра события: full_text

Аналогично, если бы вы устанавливали в своем приложении следующее свойство пользователя:

вы можете настроить новую переменную свойства пользователя Firebase в Диспетчере тегов для захвата значения Favorite_food:

  • Имя переменной: Любимая еда
  • Тип переменной: свойство пользователя Firebase
  • Название ключа параметра события: favourite_food

Изменить и заблокировать события Analytics

Диспетчер тегов позволяет изменять и блокировать события до того, как они будут зарегистрированы в Google Analytics. Изменение событий может помочь вам — без обновлений приложения — добавлять, удалять или изменять значения параметров событий или корректировать имена событий. Незаблокированные события будут регистрироваться в Google Analytics.

Аналитика также автоматически регистрирует некоторые события и свойства пользователей. вам не нужно добавлять какой-либо код, чтобы включить их. Эти автоматически собираемые события и свойства можно использовать в Диспетчере тегов, но их нельзя заблокировать.

3. Активировать теги

Переменные имен событий Firebase, переменные параметров событий Firebase и другие переменные используются для настройки триггеров. Условия триггера оцениваются всякий раз, когда вы регистрируете событие Firebase. По умолчанию события Analytics запускаются автоматически. Можно добавить тег Google Analytics в Диспетчер тегов, чтобы заблокировать отправку событий в Google Analytics.

4. Предварительный просмотр, отладка и публикация контейнера

Прежде чем публиковать версию своего контейнера, вам нужно предварительно просмотреть ее, чтобы убедиться, что она работает должным образом.Диспетчер тегов позволяет просматривать версии вашего контейнера, создавая ссылки и QR-коды в веб-интерфейсе Диспетчера тегов и используя их для открытия приложения.

Контейнер предварительного просмотра

Для предварительного просмотра контейнера создайте URL предварительного просмотра в веб-интерфейсе Диспетчера тегов:

  1. Войдите в свой аккаунт Диспетчера тегов.
  2. Выберите мобильный контейнер.
  3. Нажмите "Версии" на верхней панели навигации.
  4. Нажмите Действия > Предварительный просмотр версии контейнера, которую вы хотите просмотреть.
  5. Введите имя пакета вашего приложения.

Нажмите "Создать ссылку для начала предварительного просмотра".

URL-адреса предварительного просмотра доступны в окне предварительного просмотра. веб-интерфейса Менеджера тегов

Рисунок 1. Получение URL-адреса предварительного просмотра из веб-интерфейса диспетчера тегов.

Сохраните этот URL предварительного просмотра для последующих шагов.

Чтобы включить предварительный просмотр контейнеров, необходимо определить схему URL предварительного просмотра Менеджера тегов в списке свойств вашего проекта. В разделе типов URL-адресов файла списка свойств вашего приложения зарегистрируйте следующий идентификатор URL-адреса и схему URL-адреса:

Зарегистрируйте схему URL предварительного просмотра диспетчера тегов в ваше приложение

Рисунок 2. Добавьте схему URL предварительного просмотра диспетчера тегов в файл списка свойств вашего приложения. Примечание. your.package.name должно совпадать с именем приложения, используемого для создания URL-адреса предварительного просмотра (см. рис. 1).

Остановите приложение и откройте URL-адрес предварительного просмотра на эмуляторе или физическом устройстве, чтобы просмотреть черновик контейнера в приложении.

Контейнер отладки

Когда вы запускаете приложение в симуляторе или в режиме предварительного просмотра, Диспетчер тегов автоматически переводит журнал в подробный режим.

Публикация контейнера

После предварительного просмотра контейнера и проверки его работоспособности его можно опубликовать. После того как вы опубликуете свой контейнер, конфигурации ваших тегов станут доступны пользователям мобильного приложения.

Связанные ресурсы

Если не указано иное, содержимое этой страницы предоставляется по лицензии Creative Commons Attribution 4.0, а образцы кода — по лицензии Apache 2.0. Подробнее см. в Правилах сайта Google Developers. Java является зарегистрированным товарным знаком Oracle и/или ее дочерних компаний.

Используйте это руководство по CocoaPods для Swift, чтобы узнать, как устанавливать и управлять зависимостями сторонних библиотек в ваших проектах Swift.

Версия


Примечание об обновлении. Рони Розен обновил это руководство для Xcode 11 и Swift 5. Джошуа Грин написал оригинал.

CocoaPods – популярный менеджер зависимостей для проектов Swift и Objective-C Cocoa. По данным веб-сайта CocoaPods, его используют тысячи библиотек и миллионы приложений. Но что такое менеджер зависимостей и зачем он вам нужен?

Диспетчер зависимостей упрощает добавление, удаление, обновление и управление сторонними зависимостями, которые использует ваше приложение.

Например, вместо того, чтобы заново изобретать собственную сетевую библиотеку, вы можете легко подключить Alamofire с помощью диспетчера зависимостей. Вы можете указать либо точную версию для использования, либо диапазон допустимых версий.

Это означает, что даже если Alamofire получит обновление с изменениями, не имеющими обратной совместимости, ваше приложение сможет продолжать использовать старую версию, пока вы не будете готовы ее обновить.

В этом руководстве вы узнаете, как использовать CocoaPods со Swift. В частности, вы:

  • Установите CocoaPods.
  • Поработайте с функциональным демонстрационным приложением, которое заставит вас задуматься о мороженом.
  • Используйте CocoaPods для добавления сети.
  • Подробнее о семантическом управлении версиями.
  • Добавьте другую библиотеку, используя гибкую версию.

Примечание. Этот учебник по CocoaPods требует базового знакомства с iOS и разработкой Swift. Если вы новичок в iOS и/или Swift, ознакомьтесь с некоторыми другими письменными и/или видеоуроками на этом сайте, прежде чем приступать к этому руководству. Или погрузитесь в нашу книгу iOS Apprentice.

Это руководство также включает классы, использующие базовую графику. Хотя знание Core Graphics полезно, оно не обязательно. Если вы хотите узнать больше, прочтите серию статей «Современная базовая графика на Swift».

Начало работы

Загрузите начальный проект, нажав кнопку Загрузить материалы в верхней или нижней части руководства.

На протяжении всего этого руководства вы будете работать с приложением под названием Ice Cream Shop, Inc.. Вы будете использовать CocoaPods для простого добавления зависимостей в приложение вместо того, чтобы писать свои собственные.< /p>

Прежде чем вы сможете продолжить работу с этим учебным пособием, вам необходимо установить CocoaPods.К счастью, CocoaPods использует Ruby, который поставляется со всеми версиями macOS X, начиная с версии 10.7.

Откройте Терминал и введите следующую команду:

Введите пароль по запросу. Выходные данные терминала будут отображать различные выходные данные, связанные с получением, установкой и документацией, заканчивая «XX установленных драгоценных камней».

Примечание. Вы должны использовать sudo для установки CocoaPods, но после его установки вам не нужно будет использовать его снова в этом руководстве.

Наконец, введите эту команду в Терминале, чтобы завершить настройку:

Этот процесс занимает несколько минут, так как репозиторий CocoaPods Master Specs клонируется в ~/.cocoapods/ на вашем компьютере.

Подробный вариант регистрирует ход выполнения процесса, позволяя вам наблюдать за процессом, а не видеть кажущийся «замороженным» экран.

Отлично, теперь вы можете использовать CocoaPods!

Магазин мороженого, Inc.

Ваш главный клиент – Ice Cream Shop, Inc. Их мороженое настолько популярно, что они не успевают выполнять заказы клиентов на прилавке. Они наняли вас для создания стильного приложения для iOS, которое позволит покупателям заказывать мороженое прямо со своих iPhone.

Вы начали разработку приложения, и оно идет хорошо. Посмотрите на свой прогресс, открыв IceCreamShop.xcodeproj, затем соберите и запустите. Вы увидите аппетитный рожок ванильного мороженого:

Ice Cream Shop, Inc.

Пользователь должен иметь возможность выбрать вкус мороженого на этом экране, но пока это невозможно. Ваш первый шаг — завершить реализацию этой функции.

Откройте Main.storyboard в группе Views/Storyboards & Nibs, чтобы увидеть макет приложения. Вот краткий обзор сердцевины приложения — сцены Выберите вкус:

Компоненты сцены

  • PickFlavorViewController — это контроллер представления для этой сцены. Он обрабатывает взаимодействие с пользователем и предоставляет данные для представления коллекции, в котором отображаются различные вкусы мороженого.
  • IceCreamView – это настраиваемое представление, в котором отображается рожок мороженого в зависимости от режима поддержки Flavor .
  • ScoopCell — это настраиваемая ячейка представления коллекции, содержащая ScoopView , которая получает цвета из модели Flavor.

Несмотря на то, что все магазины Ice Cream Shop, Inc. имеют общие фирменные вкусы, в каждом из них есть и свои местные вкусы. По этой причине веб-служба должна предоставлять данные для Flavor s.

Однако это не объясняет, почему пользователи не могут выбирать вкус мороженого.

Откройте PickFlavorViewController.swift в группе Controllers, и вы увидите заглушенный метод:

Ага, ароматизаторов нет! Вам нужно реализовать функцию!

Хотя вы могли использовать URLSession и писать свои собственные сетевые классы, есть более простой способ: используйте Alamofire!

У вас может возникнуть соблазн загрузить эту библиотеку и перетащить исходные файлы прямо в ваш проект. Однако это будет трудный путь. CocoaPods предлагает гораздо более элегантное и гибкое решение.

Установка вашей первой зависимости

Ваш первый шаг – закрыть Xcode. Да, вы правильно прочитали.

Пришло время создать Podfile, в котором вы определите зависимости вашего проекта.

Откройте Терминал и перейдите к каталогу, содержащему ваш проект IceCreamShop, с помощью команды cd:

Далее введите следующую команду:

Это создает подфайл для вашего проекта.

Наконец, введите следующую команду, чтобы открыть подфайл с помощью Xcode для редактирования:

Примечание. Не используйте TextEdit для редактирования подфайла, так как он заменяет стандартные кавычки более графически привлекательными набранными кавычками. Это может привести к тому, что CocoaPods запутаются и выдадут ошибки. Вместо этого используйте Xcode или другой текстовый редактор для программирования для редактирования вашего подфайла.

Подфайл по умолчанию выглядит следующим образом:

Теперь ваш подфайл должен выглядеть так:

Это сообщает CocoaPods, что ваш проект нацелен на iOS 9.0 и будет использовать фреймворки вместо статических библиотек. Хотя Swift и CocoaPods поддерживают статическое связывание, не все библиотеки, которые вы включаете, поддерживают это. Один из них, который вы будете использовать в этом проекте, не работает.

Если вы программировали только на Swift, это может выглядеть немного странно. Это потому, что подфайл на самом деле написан на Ruby. Вам не нужно знать Ruby, чтобы использовать CocoaPods, но вы должны знать, что даже незначительные текстовые ошибки приведут к тому, что CocoaPods выдаст ошибку.

Несколько слов о библиотеках

Вы увидите, что термин библиотека часто используется как общий термин, который на самом деле означает библиотеку или платформу. Этот учебник также виновен в случайном смешении этих слов.

Возможно, вас интересуют различия между библиотекой, фреймворком и CocoaPod. Ничего страшного, если терминология покажется вам немного запутанной!

CocoaPod или для краткости pod — это общий термин для библиотеки или платформы, которые добавляются в ваш проект с помощью CocoaPods.

В iOS 8 появились динамические платформы, которые позволяют объединять код, изображения и другие ресурсы вместе. До iOS 8 вы создавали CocoaPods как «толстые» статические библиотеки. «Fat» означает, что они содержат несколько наборов инструкций кода, например i386 для симулятора, armv7 для устройств и т. д. Однако Swift не позволяет статическим библиотекам содержать такие ресурсы, как изображения или активы.

Вернуться к установке первой зависимости

Наконец-то пришло время добавить вашу первую зависимость с помощью CocoaPods. Добавьте следующее в свой подфайл сразу после use_frameworks! :

Это сообщает CocoaPods, что вы хотите включить Alamofire версии 4.9.1 в качестве зависимости для вашего проекта.

Сохраните и закройте подфайл.

Теперь вам нужно указать CocoaPods установить зависимости для вашего проекта.

Введите следующую команду в Терминал, убедившись, что вы все еще находитесь в каталоге, содержащем проект IceCreamShop и Podfile:

Вы должны увидеть такой вывод:

Откройте папку проекта с помощью Finder, и вы увидите, что CocoaPods создали новый файл IceCreamShop.xcworkspace и папку Pods для хранения всех зависимости проекта.

Примечание. Отныне, как упоминалось в предупреждении командной строки, вы всегда должны открывать проект с файлом .xcworkspace, а не .xcodeproj< /эм>. В противном случае вы столкнетесь с ошибками сборки.

Отлично! Вы только что добавили свою первую зависимость с помощью CocoaPods!

Использование установленных модулей

Теперь вы будете использовать свою новую зависимость Alamofire.

Если проект Xcode открыт, закройте его и откройте IceCreamShop.xcworkspace.

Откройте PickFlavorViewController.swift и добавьте следующее чуть ниже существующего импорта:

Создайте и запустите. Вы пока не увидите никаких изменений, но будьте уверены, что Alamofire теперь доступен.

Первая компиляция после интеграции зависимости Alamofire

Затем замените loadFlavors() следующим:

Вот пошаговая демонстрация того, что происходит в этом коде:

  1. Вы используете Alamofire, чтобы создать запрос GET и загрузить plist, содержащий вкусы мороженого.
  2. Чтобы прервать цикл сильных ссылок, вы используете слабую ссылку на себя в блоке завершения ответа. Как только блок выполнится, вы сразу же получите сильную ссылку на себя, чтобы вы могли установить для него свойства позже.
  3. Затем вы проверяете, что response.result показывает успех, а response.result.value представляет собой массив словарей.
  4. Теперь вы задаете для self.flavors массив объектов Flavor, которые создает FlavorFactory. Это класс, написанный для вас «коллегой» (пожалуйста!), который берет массив словарей и использует их для создания экземпляров Flavor .
  5. Наконец, вы перезагружаете представление коллекции и выбираете первый вариант.

Создайте и запустите. Теперь вы можете выбрать вкус мороженого!

Выберите вкус

Теперь вкусный топпинг

Приложение выглядит хорошо, но его можно улучшить.

Вы заметили, что приложению требуется секунда, чтобы загрузить файл ароматов? Если у вас быстрое подключение к Интернету, вы можете не заметить задержки, но вашим клиентам не всегда так повезет.

Ваш следующий шаг — показать индикатор загрузки в приложении, чтобы помочь клиентам понять, что оно загружает данные, а не просто возится с библиотеками. MBProgressHUD — действительно хороший индикатор, который хорошо здесь работает. И он поддерживает CocoaPods; какое совпадение! :]

Чтобы использовать этот модуль, вам необходимо добавить его в свой файл Podfile. Вместо того, чтобы открывать Podfile из командной строки, теперь вы можете найти его в цели Pods в рабочей области:

Pods in Workspace

Откройте Podfile и добавьте следующее сразу после строки Alamofire:

Сохраните файл и установите зависимости с помощью pod install в Терминале, как и раньше.

Заметили что-то другое на этот раз?Да, вы указали номер версии как ~> 1.0. Но почему?

CocoaPods рекомендует использовать семантическое управление версиями во всех модулях. Найдите минутку, чтобы понять, что это такое.

Семантическое управление версиями

Много раз вы увидите версию, написанную так: 1.0.0. Эти три числа являются основными, дополнительными и исправлениями номерами версий.

Например, для номера версии 1.0.0 1 — это основной номер, первый 0 — дополнительный номер, а второй 0 — номер исправления.

Пример семантического управления версиями

Если основной номер увеличивается, это означает, что версия содержит изменения, не совместимые с предыдущими версиями. При обновлении модуля до следующей основной версии может потребоваться исправить ошибки сборки, иначе модуль может вести себя не так, как раньше.

Если второстепенный номер увеличивается, это означает, что версия содержит новую функциональность, совместимую с предыдущими версиями. Когда вы решите обновиться, вам может понадобиться или не понадобиться новая функциональность, но она не должна вызывать ошибок сборки или изменять существующее поведение.

Если номер исправления увеличивается, это означает, что новая версия содержит исправления ошибок, но не содержит новых функций или изменений в поведении. Как правило, вы всегда хотите как можно скорее обновить версии исправлений, чтобы иметь последнюю стабильную версию модуля.

Наконец, когда вы увеличиваете старший номер — основной, затем второстепенный, затем исправление — в соответствии с приведенными выше правилами, вы должны сбросить любые младшие числа равны нулю.

Вот пример:

Рассмотрим модуль с текущим номером версии 1.2.3.

Если вы вносите изменения, которые не совместимы с предыдущими версиями, не имеют новых функций, но исправляют существующие ошибки, вам присваивается версия 2.0.0.

Время испытаний

Если в модуле установлена ​​текущая версия 2.4.6 и вы вносите изменения, устраняющие ошибки и добавляющие обратно совместимые функции, каким должен быть новый номер версии?

[spoiler]
Ответ: 2.5.0
Объяснение: если вы вносите изменения, включающие новые функции с обратной совместимостью, вы увеличиваете второстепенный и сбросьте исправление на ноль.
[/spoiler]

Если в модуле установлена ​​текущая версия 3.5.8, и вы вносите изменения в существующие функции, которые не являются обратно совместимыми, каким должен быть номер новой версии?

[spoiler]
Ответ: 4.0.0
Объяснение: если изменения изменяют существующее поведение и не являются обратно совместимыми, необходимо увеличить основной и сбросьте номера второстепенных и исправлений на ноль.
[/spoiler]

Если в модуле установлена ​​текущая версия 10.20.30 и вы исправляете только ошибки, каким должен быть номер новой версии?

[spoiler]
Ответ: 10.20.31
Объяснение: Если вы исправляете только ошибки, вы только увеличиваете номер патча.
[/spoiler]

Сказав все это, есть одно исключение из этих правил:

Если номер версии модуля меньше 1.0.0, он считается бета-версией. Незначительное увеличение числа может включать изменения, несовместимые с предыдущими версиями.

Итак, вернемся к MBProgressHUB: использование ~> 1.0 означает, что вы должны установить последнюю версию, которая больше или равна 1.0, но меньше 2.0 .

Это гарантирует, что вы получите последние исправления ошибок и функции при установке этого модуля, но вы не будете случайно вносить обратно несовместимые изменения.

Вы также можете использовать несколько других операторов. Полный список см. в Справочнике по синтаксису подфайлов.

Теперь, когда вы узнали, как операторы работают с CocoaPods, пришло время закончить ваше приложение.

Отображение прогресса

Если вы помните, вы создавали индикатор выполнения, чтобы показывать пользователям, когда в приложении загружаются варианты.

Чтобы завершить эту функцию, вернитесь к PickFlavorViewController.swift и добавьте следующее сразу после других импортов:

Затем добавьте следующие вспомогательные методы после loadFlavors() :

Теперь в loadFlavors() добавьте следующие две строки (как указано):

Как следует из названий методов, showLoadingHUD() показывает экземпляр MBProgressHUD во время загрузки запроса GET. hideLoadingHUD() скрывает HUD после завершения запроса. Так как showLoadingHUD() находится вне замыкания, ему не нужен собственный префикс.

Создайте и запустите. Теперь вы увидите индикатор загрузки во время загрузки вкусов. Если ваше интернет-соединение слишком быстрое для этого, вы можете добавить оператор sleep(_:) непосредственно перед hideLoadingHUD(), чтобы вы могли ощутить достоинства MBProgressHUD. :]

Приложение с символом загрузки

Отличная работа! Теперь клиенты могут выбирать свой любимый вкус мороженого, и они видят индикатор загрузки во время загрузки вкусов.

Куда идти дальше?

Вы можете загрузить готовый проект, нажав кнопку Загрузить материалы вверху или внизу этой страницы.

Поздравляем! Теперь вы знаете основы использования CocoaPods, включая создание и изменение зависимостей и понимание семантического управления версиями. Теперь вы готовы начать использовать их в своих проектах!

С CocoaPods можно делать гораздо больше. Вы можете искать существующие модули на официальном сайте CocoaPods. Кроме того, обратитесь к руководствам CocoaPods, чтобы узнать подробнее об этом превосходном инструменте. Но будьте осторожны, как только вы начнете его использовать, вы удивитесь, как раньше обходились без него! :]

Надеюсь, вам понравилось читать это руководство по CocoaPods так же, как и мне при его написании. Какие ваши любимые CocoaPods? На какие из них вы больше всего полагаетесь в повседневных проектах? Не стесняйтесь поделиться или задать любые вопросы в комментариях ниже!

Завод по производству сливок и какао пережил пандемию. Но, как и у многих малых предприятий в Нью-Йорке, его будущее вряд ли безопасно.

“Мы делаем ставку на это, потому что в прошлом году мы так много потеряли

"Мы делаем ставку на это, потому что в прошлом году мы очень много потеряли", – сказал Омар Торп, один из владельцев Crème and Cocoa. Кредит. Малик Рейни для The New York Times

Наконец-то наступило лето возможностей. Нью-Йорк был распахнут. Вечера стали длинными и душными. Блочные вечеринки проходят, тротуары шумят. Радость заключается в возможности побродить, задержаться.

Астрид и Омар Торп, владельцы магазина мороженого в Бруклине, цепляются за этот момент.

Торпе, супружеской паре, посчастливилось пережить неопределенность последних 18 месяцев. Тысячи других малых предприятий в Нью-Йорке закрылись. По словам Рэнди Пирса из городской торговой палаты, в некоторых районах Бруклина до 25 % предприятий закрылись навсегда.

Однако среди всех заявлений о том, что город вернулся, многие предприниматели, все еще работающие в бизнесе, обнаруживают, что их оптимизм смешивается с опасениями. Есть большие потери, которые нужно компенсировать. Для таких витрин, как Crème и Cocoa Creamery, магазин, который Торпы открыли четыре года назад, наступило решающее лето.

"Мы делаем ставку на это, потому что в прошлом году мы очень много потеряли", – сказал г-н Торп.

Четыре года назад Торпы открыли магазин мороженого в бруклинском районе Литтл-Карибиан. Кредит. Малик Рейни для The New York Times

Прошлой весной, когда мир перешел на еду на вынос, рожок мороженого с собой был в лучшем случае запоздалой мыслью. Не было ничего необычного в том, чтобы заканчивать с нулевыми клиентами даже в благодатные дни. Зимние распродажи, которые никогда не были друзьями, деморализовали, хотя в феврале была безумная гонка за пинтами, чтобы подготовиться к сильной метели.

Торпы потратили большую часть своих сбережений, чтобы оставаться открытыми. Чрезвычайные ситуации со здоровьем — ее аневризма головного мозга, его отслоение сетчатки — заставили их закружиться. Воспитание 19-летнего Джосайи, 13-летнего Аджани и 4-летней Амары усилило стресс.

Наконец этой весной дела пошли на лад. Несколько ресторанов попросили продать продукцию Crème и Cocoa. Школы и компании звонили по поводу общественного питания с мороженым. VH1 по рекомендации сайта Black-Owned Brooklyn предоставил Торпам грант на развитие малого бизнеса. Марк из Maker спросил, будет ли пара заинтересована в создании мороженого на основе бурбона для мероприятия.

Все это помогло Торпам остаться на плаву, пока они выпускают новые вкусы, такие как ягодный щербет из сангрии и клубничный коктейль из гуавы, продвигают свою игру в социальных сетях и исследуют возможности расширения. Весной этого года они установили неоновую вывеску и в настоящее время строят плавучую площадку на участке земли сзади для сидения на открытом воздухе.

«Мороженое создает атмосферу; семьи хотят выйти и посидеть», — сказал г-н Торп.

Омар и Астрид Торп, познакомившиеся на свидании вслепую в 1998 году и воспитывающие троих детей, управляют своим магазином и одновременно работают на других работах. Кредит. Малик Рейни для The New York Times

Недавно они профинансировали морозильную камеру периодического действия, блестящий куб волшебства стоимостью 19 000 долларов, в восемь раз превышающий вместимость их старой машины, которая прибудет в конце июля. Ценник был изрядным, но не более чем их амбиции. В самых смелых мечтах их мороженое должно было стать нарицательным, франшизой или, по крайней мере, несколькими магазинами и киосками в крупных аэропортах.

Разве глупо мечтать о таком грандиозном успехе во время пандемии? Возможно.

Но пара также размышляла об ограниченности времени. Прошлой весной г-жа Торп была дома, когда внезапно потеряла сознание. Артерия в ее мозгу расширилась и разорвалась. После экстренной операции врач назвал ее чудом.

«Мои родители обеспокоены. Они говорят, что я работаю слишком много или слишком много, но я сказала им, что мне это нравится», — сказала 44-летняя г-жа Торп, которая с тех пор перенесла еще две операции. После последнего она сразу же вернулась в магазин и приготовила порцию ананасового перевернутого торта-мороженого.

И только в этом месяце мистер Торп оказался в больнице. Он проснулся с затуманенным зрением в левом глазу, вызванным разрывом сетчатки. Сейчас образовалась катаракта, требующая операции. Недавно у него также диагностировали хроническую болезнь почек.

Именно поэтому, пока сияет свет возможностей, Торпы идут ва-банк.

Омар Торп наблюдает за бейсбольной командой своего сына из тележки с мороженым. Кредит. Малик Рейни для The New York Times

«Почему бы и нет? Если Covid не сказал вам, что жизнь может быть короткой, то реальность будет такой», — сказал 46-летний Торп. «Это скорее мотивация, например: «Вау, вместо того, чтобы погрязнуть в этом, посмотрите, через что мы прошли; пришло время жить дальше».

Пара познакомилась в 1998 году на свидании вслепую, где они ели индийскую еду и остановились в Haagen-Dazs. Он уехал из Панамы в возрасте 6 лет со своей семьей; она была дочерью гаитянских иммигрантов. Они выросли недалеко друг от друга в Бруклине, и их было легко наладить. Они поженились, и прошло два десятилетия.

Их общий опыт и атрибуты теперь отражены в их магазине, где г-жа Торп наблюдает за оформлением документов и операциями, а ее муж занимается логистикой, мероприятиями и тем, что он называет черновой работой. Они и лепят мороженое, и изобретают смеси, вдохновленные ароматами своей юности: сметанное яблоко, тамаринд, манго, ром, кокос, ананас, хлопья Grape-Nuts.

Компания часто страдала из-за своего местоположения: полоса Ностранд-авеню в проспекте Леффертс-Гарденс, где пешеходное движение минимально. В последнее время покровители включили недавние пересадки в облагораживающий район. Но магазин также находится в районе, известном как Маленькое Карибское море, и давние местные жители находят в нем воспоминания о доме.

Важно, что Crème and Cocoa сохранились здесь, – говорит Шелли Уоррелл из CaribBeing, организации, которая инициировала присвоение названия району.

Мисс. Уоррелл стремится повысить узнаваемость района, чтобы привлечь больше клиентов в центр, который может похвастаться большим и разнообразным населением с карибскими корнями. «Это похоже на прекрасное место, чтобы быть прямо сейчас», — сказала она. "У бизнеса были свои трудности, и это довольно сложное время, но все открывается, и все еще есть много надежды".

Хотя витрины вокруг них закрылись, Торпам повезло, что у них была другая работа, чтобы покрыть свои убытки. Г-н Торп — специалист по информационным технологиям в Департаменте образования Нью-Йорка. Г-жа Торп ведет бухгалтерский бизнес из своего дома в Мидвуде, Бруклин, хотя она сократила свою деятельность, чтобы снизить стресс. Они также благодарны за разумную арендную плату в размере 1500 долларов США.

На самом деле арендодателями являются родители г-жи Торп, которые купили здание в 1980-х годах, заплатив первоначальный взнос в размере 8000 долларов США. Ее отец, который работал сварщиком на Бруклинской военно-морской верфи, а также в столичном транспортном управлении, до выхода на пенсию в течение трех десятилетий управлял продуктовым магазином.

Торпы заняли помещение и открыли кофейню. Когда это не сработало, они начали экспериментировать с рецептами мороженого, основав Crème и Cocoa в 2017 году.

В основном они управлялись сами, часто с детьми и парой сезонных работников. Когда начали поступать заказы на питание, они купили велосипед за 2500 долларов с прикрепленной морозильной камерой, вмещающей до 10 галлонов мороженого. Мистер Торп сам крутил педали на мероприятиях. Многие клиенты понятия не имели, что он также был владельцем. Однажды кто-то дал ему чаевые в размере 60 долларов.

Бизнес никогда не процветал, и им пришлось сократить рабочий день. Любая прибыль сохранялась в наличных резервах. Тем не менее, их репутация медленно росла.

К марту 2020 года у них был запланирован концерт, в том числе корпоративное мероприятие Google и уроки по приготовлению мороженого. Когда город в конце концов закрылся, казалось, что все на какое-то время будет поставлено на паузу. Затем начались отмены, и 60 процентов их продаж быстро исчезли.

Прошлым летом они получили импульс, когда протесты Black Lives Matter вызвали интерес к поддержке предприятий, принадлежащих чернокожим. Новые лица образовали ряды снаружи. Посетители, вышедшие подышать свежим воздухом в близлежащий Проспект-парк, направились туда. Преимущественно белые беговые клубы подбежали к двери.

В конечном счете это уменьшилось. А потом зима.

Торпы совершили некоторые продажи через приложения для доставки, а также на Goldbelly – онлайн-рынке деликатесов. Их пинты продаются в Fulton Stall Market и Park Slope Food Coop. Они надеялись, что их продукт прослужит сам по себе, если они когда-нибудь потеряют кирпичный магазин, который сопровождался счетами и головной болью.

Но Торпы хотят удерживать витрину как можно дольше. Они оба интроверты («Тот, кто неуклюж в общении, теперь должен быть олицетворением компании», — пошутил мистер Торп), но ценят то, что клиенты заставили их покинуть свою зону комфорта. Приготовление мороженого может быть изолирующим. Прямая обратная связь мотивирует.

"Когда люди приходят в ваш магазин и видят, как их лица светятся и говорят: "Боже мой, это потрясающе", или "Это возвращает меня на Ямайку или Тринидад, где я вырос", или "Моя бабушка". сделали такое мороженое' — мы получаем много таких радостей», — сказала г-жа Торп.

Их друг Пол Сондерс, который часто бывает в этом районе, назвал магазин одним из культурных центров района. Место, представляющее комфорт, особенно когда вирус так много разграбил.

"Это напоминание о том, что все будет хорошо, как будто район все еще жив, они все еще несут факел", – сказал 45-летний Сондерс.

Настойчивость Торпов не следует путать с самонадеянностью. В самый загруженный день в этом году их посетило около 100 клиентов, что составляет половину трафика, который они могли бы получить до вируса.

А выходные, посвященные Дню поминовения, который обычно является знаменательной датой, наступили с проливным дождем. Велотур, который, как ожидалось, должен был прекратиться, продолжался. Та суббота закончилась в общей сложности двумя посетителями. Пару недель спустя их трехлитровый морозильник сломался, и его нельзя было быстро починить, поэтому им пришлось выложить 3000 долларов за еще один.

Чтобы обеспечить себя еще на один год, Торпам необходимо заработать около 40 000 долларов США к середине сентября. Они думают, что смогут добиться этого, если будут продвигать себя, налаживать связи и использовать все, что попадется им на пути.

Они понимают, что это не полностью в их руках. И они находятся на пороге неизвестности, как и год назад.

Читайте также: