Как удобно расставить иконки приложений в iOS
Организация рабочего пространства это крайне важно. От того, насколько вы грамотно распределяете свои ресурсы, напрямую зависит качество вашей работы. И рабочее пространство вашего смартфона, а именно домашняя страница — есть одна из главных составляющих продуктивности. С iPhone мы проводим большую часть нашего дня. Просыпаемся — телефон, в течение дня тоже телефон, засыпаем — снова тоже самое. Грамотная расстановка иконок — есть составляющая вашего ежедневного успеха.
Иконки приложений на iPhone надо расставить с умом.
Грамотная расстановка иконок на iPhone
Прежде чем начать что-то говорить и советовать как сделать лучше, следует оговориться, что даже если иконки рабочего стола будут расставлены идеально — этого мало. Как и дома, мало убираться каждый день. Необходимо поддерживать свой порядок. Еще около года назад я установил для себя правило, которое называется «правило 1 месяца». Что я под этим подразумеваю:
Регулярно проверяйте новые приложения в App Store
Многие пользуются софтом и даже не задумываются на тему того, что приложения следует обновлять. Каждый день выходят сотни новых программ и часто, засидевшись, мы просто игнорируем прогресс. Особенно это касается широко распространенных приложений, вроде менеджера задач. Если даже раз в месяц будете пополнять свою библиотеку, в итоге окажитесь в курсе самых последних новинок. На нашей странице в Яндекс.Дзен, мы публикуем только самую свежую информацию. Рекомендую ознакомиться.
Смело удаляйте ненужные приложения
Меняются привычки, софт, задачи, появляется новая мобильная техника. Как бы вам не нравилось расположение всех своих иконок, с течением времени все изменится и превратится в хлам. Здесь решает не столько грамотная расстановка иконок, сколько их наличие в принципе. Если спустя месяц вы понимаете, что не пользуетесь тем или иным приложением смело отпускайте софт в корзину (библиотеку).

Регулярно просматривайте библиотеку App Store.
Каждый «экран» iPhone под свои задачи
Больше трех страниц приложений делать бессмысленно. И все они по порядку должны содержать иконки, по мере потребности. Первую страницу приложений предлагаю посвятить работе: видеоконференциям, мобильному банкингу, почтовым клиентам, приложениям для заметок и прочему. Здесь все индивидуально. Подбирайте под себя то, чем вы пользуетесь на работе. На втором экране предлагаю разместить приложения личного характера. Подкасты, музыка, социальные сети, виджеты активности и прочее. До третьего экрана обычно мы просто не доходим, поэтому там я располагаю все игры и приложения развлекательного рода. Да, посмотреть Lancer с объемом 2.4 на Авито вечером это никуда, кроме как в развлечения, не отнести.

Приложения для работы на iPhone.
Тянуться одной рукой на iPhone это неудобно
Я левша. И каждый раз тянуться в правый верхний угол представляет большую для меня трудность. Многие пользователи располагают там иконки, в которые заходят раз в месяц. Здесь вывода просится два. Первый — если ты заходишь в это приложение раз в месяц, какого черта эта иконка вообще делает на домашнем экране. Чистим. Второй — так уж случилось, что в iOS пока нельзя расположить иконки в хаотичном порядке и оставить пустое пространство. Выход получается только один — поставить туда виджет.

Тянуться одной рукой очень неудобно.
Топ виджеты в iOS
Все точки, куда я не могу дотянуться своей рукой заполнены виджетами. Но есть некоторые исключения. У меня это календарь. Дату и день недели я должен видеть в любой точке домашней страницы, поэтому наверху я располагаю иконку календаря. Вариантов для виджетов огромное множество. Если вы используете iPhone в связке с Apple Watch или AirPods виджет зарядки в процентах всех ваших устройств необходим, как воздух. Совсем недавно мы писали про лучшие приложения для Apple Watch, рекомендую ознакомиться.
Для Apple Watch приятным дополнением будет виджет вашей активности. Так, даже при случайной разблокировке устройства — кольца напомнят вам, что не время для прокрастинации. Предложения Siri — еще один отличный вариант. В рутинных задачах она глуповата, согласен. Но что касается напоминаний и подборок — это ее конек. Что касается стопок, я отношусь к ним скептически. В стопку можно объединить только большие виджеты. Потому что если сделать стопку из квадратов, листать одним пальцем будет очень неудобно. А использовать папки я вам совсем не рекомендую.

Виджеты значительно упрощают работу с устройством.
Поиск Spotlight — недооценен
Легким движением пальца вниз по домашнему экрану мы переходим в поиск Spotlight. Удивительно, но, по неизвестной мне причине, его игнорируют как пользователи iPhone, так и Mac. Встречают нас рекомендации Siri, быстрые действия и сам поиск. Spotlight способен удовлетворить почти любой запрос. Поиск в Интернете — пожалуйста. В магазине приложений App Store — тоже без проблем. Поиск по приложениям, контактам записной книжки, заметкам, электронной почте — все это Spotlight. А значит, можно смело разгружать главный экран от разного мусора. Что касается компьютеров Mac, о возможностях Spotlight в связке с ним мы писали ранее.

Все ненужные приложения можно убрать в библиотеку и использовать Spotlight.
Конечно, задачи каждого пользователя строго индивидуальны. Поэтому я не предлагаю вам готовых решений. Всегда располагайте иконки под свои нужды и не забывайте регулярно чистить домашний экран от разного хлама.
А как вы расставляете иконки на своем iPhone? Поделитесь своим опытом в нашем Телеграм чате.
Ломаем iOS-приложение. Часть 1
Вы хорошо поработали, и вот ваше приложение в App Store!
- Храните учётные записи юзеров?
- Используете встроенные покупки?
- Не хотите показывать своё ноу-хау?
Disclaimer
Цель данного урока — не сделать вас хакером, а показать, как злоумышленники могут обвести вас вокруг пальца. В статье пропущена кое-какая инфа, необходимая для взлома реального приложения на девайсе. Будем мучить симулятор (кстати, это вроде бы даже законно [citation needed] ).
Disclaimer от переводчика: из оригинального текста убрано много «воды» и отсылок к Голливуду (и так длинно). Добавлен ряд ключевых пояснений.
Итак
Ни одно приложение не является безопасным! Если кто-то действительно захочет найти у вас уязвимости, то он их найдёт. Нет гарантированного способа предотвратить атаку. Разве что, не выпускать приложение. Но есть отличные способы помешать взломщикам. (По мнению автора, им надоест, и они пойдут спать искать более лёгкую добычу, ага. — Прим. пер.)
Перед тем, как читать дальше, вы должны примерно понимать, что такое терминал, а также Objective C и Cocoa (впрочем, особо много кода не будет).
Приступим
Нам понадобится:
1. Утилита class-dump-z;
2. Прокси для отладки по сети, например, Charles (триал-версия отличается надоедливыми сообщениями и работает максимум 30 минут за 1 сеанс). В комментах к исходнику статьи советуют альтернативу Чарльзу — Burpsuite.
Чтобы вы творчески подошли к процессу, предлагаю вам сценарий. Представьте: вышло новое приложение для айпада — «Собиратель мемов» (Meme Collector). Всем нравится. Но вам шепнули на ухо, что встроенные покупки вытянут из вас значительную сумму денег.

В общем, вы задумали получить платный контент (мемы) бесплатно. Есть несколько направлений, куда можно двигаться, мы поговорим о них — и о соответствующих методах защиты.
Небольшое упрощение
Из-за длины этого урока мы изначально допустили некоторые упрощения в тестовом проекте. Например, «покупка» игровой валюты представляет из себя не настоящий in-app purchase, а фэйковый запрос к StoreKit (всё происходит локально на девайсе).
Что к чему? «Карта» приложения (application mapping)
Взглянем на приложение с высоты птичьего полёта! Что оно делает, с точки зрения пользователя? Какова его основная структура?
Откройте проект Meme Collector в своей любимой IDE или в Xcode (не реклама).

Мы будем запускать приложение в конфигурации Release.
Xcode: Product > Scheme > Edit scheme… (⌘) — слева выбрать Run…, справа вкладка Info > Build Configuration: Release.
AppCode: Run > Edit configurations… > Configuration: Release.

Запустите приложение на симуляторе iPad (⌘R). А теперь забудьте, что у вас есть исходники, вы — юзер. Откроется одно из двух:
У вас вариант слева?
Это хабраэффект или проблема с соединением. Мемы берутся с API memegenerator.net — проверьте, что этот урл выдаёт <"success":true,"result":[список мемов]>. Во время перевода статьи у них были проблемы с сервером. Если есть желание избавить проект от зависимости от данного API, велкам на гитхаб.
Этот странный интерфейс позволяет «купить» мем по тапу на него, а также показывает число покупок данного мема и остаток денег на вашем счёте. От переводчика: нажав кнопку «Purchase Currency», я реально задумался: а не вводил ли я Apple ID на симуляторе?

…но вспомнил, что у меня к US-аккаунту не привязана кредитка. 🙂 Русский бы сказал цену в рублях.
В общем, всё просто. Есть «игровая валюта», и вы (типа взломщик) не хотите отдавать за неё реальные деньги. Наша цель — получить больше мемов, не нажимая кнопку «Purchase Currency».
Мы примерно поняли, что делает приложение, давайте заглянем глубже. Что ещё мы можем узнать?
Упомянутая утилита class-dump-z отобразит нам все объявления (declarations), которые она сможет достать из исполняемого файла. Скачайте последнюю версию утилиты (например, 0.2a), распакуйте архив. В терминале перейдите в папку class-dump-z_0.2a/mac_x86/ . Там есть исполняемый файл class-dump-z, установите его, например, скопировав в /usr/bin/ :
sudo cp class-dump-z /usr/bin/
Перейдите в папку симулятора iOS: (вместо 7.0.3 — ваша версия)
cd ~/Library/Application\ Support/iPhone\ Simulator/7.0.3/Applications/
Здесь лежат все приложения, которые вы запускали в симуляторе. Их там может быть много. Как найти Meme Collector?
Вариант 1. Если вы только что запускали Meme Collector, то он лежит в папке с самой новой датой модификации. Просто перейдите в неё:
cd `ls -tr | tail -1`
Это что за магия?
- Команда ls выдаёт содержимое папки. Флаг «-tr» сортирует по времени: самая новая папка будет последней в списке.
- Весь этот список поступает на вход команды tail. Она берёт некоторый объём данных с конца. В данном случае — ровно одну строчку (флаг «-n 1» или просто «-1»).
- Далее команда cd переходит в эту самую новую папку.
Вариант 2. Взять и найти:
find . -name "Meme Collector"
- Meme Collector.app — главный бандл (main application bundle)
- ещё что-то 🙂
cd Meme Collector.app
Тут есть исполняемый файл, который так и называется: Meme Collector (без расширения). Посмотрим, на какие фреймворки (frameworks) и общие библиотеки (shared libraries) имеются в нём ссылки. Нам поможет стандартная утилита otool :
otool -L "Meme Collector"
И вот что видим:
Meme Collector: /System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration (compatibility version 1.0.0, current version 615.0.0) /System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices (compatibility version 1.0.0, current version 51.0.0) /System/Library/Frameworks/Security.framework/Security (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/StoreKit.framework/StoreKit (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/QuartzCore.framework/QuartzCore (compatibility version 1.2.0, current version 1.8.0) /System/Library/Frameworks/UIKit.framework/UIKit (compatibility version 1.0.0, current version 2903.23.0) /System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 1047.22.0) /System/Library/Frameworks/CoreGraphics.framework/CoreGraphics (compatibility version 64.0.0, current version 600.0.0) /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0) /usr/lib/libSystem.dylib (compatibility version 1.0.0, current version 111.0.0)
Мм, интересно, приложение использует фреймворк Store Kit — встроенные покупки? Ну-ка, идём дальше. Запускаем утилиту class-dump-z:
class-dump-z "Meme Collector" > ClassDump.txt
И откроем полученный файл в стандартном гуёвом редакторе:
open ClassDump.txt

Ого! Хотя нет, по сравнению с примером из оригинальной статьи (Xcode 4, iOS 6 SDK) появились неприятные моменты типа XXUnknownSuperclass , но всё же! Мы видим не только интерфейсную часть, но и объявления закрытых (private) методов, свойств, протоколов.
Изучение дампа классов серьёзного проекта — чаще всего утомительное занятие. Но оно может дать потрясающую картину внутреннего устройства приложения!
Итак, мой юный следопыт! Найдите-ка мне все синглтоны в приложении.
Подсказка
В сигнлтонах часто встречаются объявления методов класса с ключевыми словами: manager, shared, store.
Если встретите интересный синглтон, изучите все его методы.
(Видимо, «интересный» = «похоже, имеющий отношение к логике приложения». — Прим. пер.)
Решение
Точно нашли? Посмотрите у себя внимательнее. Их там около четырёх штук.
Да, все.
@property(retain, nonatomic) AFHTTPClient* client; @property(readonly, assign, nonatomic) NSMutableArray* memes; +(id)sharedManager; -(void)memePurchased:(int)purchased; -(void)getMemeInformation; // кстати, это private-метод
@property(readonly, assign, nonatomic) NSNumber* money; +(id)sharedManager; -(BOOL)saveState; // кстати, это private-метод -(void)loadState; // кстати, это private-метод -(BOOL)purchaseCurrency; -(BOOL)buyObject:(id)object;
Взломщики часто делают то, что вы сейчас сделали — ищут определённые слова в дампе класса. Например, если они хотят узнать, есть ли в приложении логика, завязанная на джейлбрейк девайса, то поиск по словам ‘jailbroken’, ‘security’ и т.д. может дать быстрый ответ.
Как это предотвратить?
Есть две новости. Начну с хорошей.
Apple делает это за вас автоматически. Когда вы отправляете приложение в App Store, они шифруют ваши бинарники с использованием DRM-технологии под названием FairPlay. Если вы сдампите class-dump-z’ом зашифрованный бинарник, то получите… тарабарщину.
Плохая новость: обойти эту защиту довольно легко! Дело на 10 минут (вручную), а ещё есть средства автоматизировать сей процесс. В общем, будьте уверены, ваше приложение расшифруют и увидят названия всех ваших классов, методов, протоколов и т.д.

Plist-файлы: уязвимы!
Мы кое-что узнали о приложении. Теперь поищем всё, что плохо лежит. Разработчикам свойственно ошибаться. Злоумышленникам свойственно использовать эти ошибки в своих целях.
Ошибки… Начнём с самых глупых! Например, как вам идея: использовать файл .plist для хранения критической информации? Взломщики всегда смотрят plist’ы: их легко просмотреть, а их изучение может дать ключ к внутренней логике приложения. (Plist = property list, текстовый файл с сериализованными объектами).
Посмотрим, какие plist’ы у нас есть?
(напомню, мы всё ещё находимся в папке бандла «Meme Collector.app»)
ls *.plist
А вот какие — две штуки:
Info.plist MoneyDataStore.plist
Посмотрим первый — Info.plist:
plutil -p Info.plist
< "DTSDKName" =>"iphonesimulator7.0" "CFBundleName" => "Meme Collector" "CFBundleDevelopmentRegion" => "en" "CFBundleVersion" => "1.0" "DTPlatformName" => "iphonesimulator" …и ещё куча всего…
Ничего интересного, какая-то общая информация. Ладно. Ну-ка, а второй:
plutil -p MoneyDataStore.plist
Прикол! Этот .plist содержит ключ userCurrency с тем же значением, которое вы только что видели на экране симулятора. Значит ли это, что приложение хранит деньги в .plist’е? Есть только один способ узнать!
open MoneyDataStore.plist
Измените значение userCurrency , например, на 1234. Сохраните и закройте файл .plist.
Вернёмся к симулятору. Уберём наше приложение из оперативной памяти (как говорят, «из многозадачности»).
На всякий случай инструкция.
Сочетание клавиш ⇧⌘H в симуляторе iOS соответствует нажатию кнопки Home. Нажмите это сочетание дважды, чтобы показать экран многозадачности, и смахните Meme Collector в никуда вверх.

Кажется, он не очень доволен, что его смахивают:
В дальнейшем, когда я буду говорить «перезапустите приложение», я буду иметь в виду именно эту операцию.
Снова запустите приложение. 1234 виртуальных тугриков в вашем распоряжении!
От переводчика: я ждал большей интриги. Не бывает так просто! Хоть свой тестовый проект пиши.
Пользовательские настройки: небезопасно!
Ну вы поняли? Хранить важную информацию в .plist — не самая лучшая идея. А теперь угадайте: что представляют из себя пользовательские настройки ( NSUserDefaults )? Ага, тоже plist! Физически он лежит по адресу /Library/Preferences/.plist .
Это как раз то место, где разработчики часто ошибочно чувствуют себя в безопасности. Не только фрилансеры: крупные корпорации время от времени попадают в эту ловушку. Бесчисленное множество приложений хранят важные данные в NSUserDefaults . Посмотрим, что нам здесь приготовил Meme Collector?
Из терминала (мы по-прежнему находимся в Meme Collector.app, так?) откройте файл:
open ../Library/Preferences/com.selander.Meme-Collector.plist
Несложное упражнение для вас: используя методы, о которых говорилось выше, модифицируйте NSUserDefaults так, чтобы получить кучу мемов из серии «Y U No …» бесплатно. Даже если вы уже обо всём догадались, советую сделать это для закрепления.

Но ведь злоумышленники могут получить доступ к plist-файлам, даже когда iOS-девайс заблокирован — так где же безопасно хранить данные? Одно из решений — хранить данные в NSUserDefaults в зашифрованном виде. В этом случае (и не только. — Прим. К.О.) нужно проверять на валидность данные, читаемые оттуда.
Связка ключей: лучшие рецепты
Другое возможное решение — перенос важных данных из .plist’ов в Связку ключей iOS (Keychain). Как это сделать — написано, например, здесь.
Связка ключей «повышает ставки» для хакера. Злоумышленники не смогут ничего стянуть, если устройство заблокировано.
Тем не менее, не стоит полностью полагаться на одну только Связку ключей! И вот почему. Связку ключей поддерживает Apple. (Ну вы уже всё поняли, да?) Информация в ней зашифрована паролем пользователя, который обычно является простым 4-значным цифровым кодом. А это значит, что атака брутфорсом займёт минут двадцать. Узнав пароль, легко сдампить всю связку ключей.
Что же делать? Некоторые общие рекомендации:
-
Шифруйте данные! Связка ключей вроде как безопасна, но это приоритетная цель для хакеров, поэтому её ломают в первую очередь. (Про джейлбрейкнутые устройства вообще нечего говорить — для них существуют утилиты, показывающие содержимое Связки ключей.) Усложните жизнь взломщикам хотя бы ненамного: шифруйте данные с помощью CommonCrypto API, который входит в состав стандартного Security Framework (пример).
Сеть: тестирование на проникновение
Ещё хакеры любят наблюдать, как приложение взаимодействует с сетью. Самый тупой способ увидеть, происходит ли какая-то работа с сетью на устройстве, это поискать URL’ы в бинарнике.
Находясь в папке бандла (Meme Collector.app), наберите в терминале:
strings "Meme Collector"
Стой, куда столько! Команда strings идёт по разделам бинарника и выводит все элементы данных, похожие на строки. Отфильтруем шум:
strings "Meme Collector" | grep http
А, ну вот, одна строка:
http://version1.api.memegenerator.net/Generator_Select_ByUrlNameOrGeneratorID
Похоже, в какой-то момент приложение обращается к генератору мемов по этому урлу. Будучи хакером, вы бы хотели исследовать это дело дальше, изучив сетевой трафик приложения. Для этого нам понадобится сетевой монитор, перехватывающий все входящие и исходящие запросы.
Charles, упомянутый в начале статьи — хороший вариант для такого исследования. Скачайте его, если ещё не сделали это. Установите и запустите.
Проверьте, что Charles ловит сетевое взаимодействие с симулятора iOS (путём запуска «Карт», или в Safari набрать урл). Вы увидите, как в Charles побегут сетевые запросы. Если этого не произошло, убедитесь, что в меню Proxy > Mac OS X Proxy галочка установлена.
Кстати, Charles отлично перехватывает SSL-трафик.
Мы не будем это делать, потому что не увидели HTTPS-урлов на выходе команды strings . Но этот шаг потребуется для других приложений, которые могут использовать HTTPS. В меню Proxy > Proxy Settings… > SSL нужно включить SSL-прокси и добавить домены, по которым требуется перехватывать (и расшифровывать) HTTPS-трафик. Пока вы это не сделаете, SSL будет выглядеть примерно так:

При работающем Charles перезапустите Meme Collector. После запуска вы должны увидеть три запроса к version1.api.memegenerator.net , нажав на треугольник слева от урла (см. ниже). Раскроются три запроса, отличающиеся GET-параметрами. Например, у первого один GET-параметр: urlName=Foul-Bachelor-Frog — это видно на вкладке Request.
Выберите вкладку Response и затем внизу JSON. Ответ сервера, расшифрованный из JSON, представлен в виде красивой таблички:

Мы видим здесь множество строк вида «ключ-значение»: заголовок ( displayName ), описание ( description ), URL картинки ( imageUrl ) — в общем, некая информация по данному типу мемов «Four Bachelor Frog» из GET-параметра.
Что происходит дальше? Приложение трижды делает одно и то же: HTTP-запрос по урлу картинки, пытается скачать её с cdn.memegenerator.co , получает 301-й редирект на cdn.memegenerator.net и качает оттуда.

Похоже на то, что мы видели в приложении, правда? Двум другим картинкам в этот раз повезло меньше, они так и не дождались ответа от сервера (Charles сообщает об этом на вкладке Overview) и поэтому не отобразились в приложении.

А я вообще не вижу, чтобы запрашивались картинки!
При повторном запуске картинки могут браться из кэша симулятора, Charles лб этом не знает. Очистите кэш и перезапустите приложение.
rm -R Library/Caches/
Итак, с определённой долей вероятности делаем вывод: приложение берёт мемы с данного API и представляет их в виде платного контента. А что если попытаться изменить URL с целью приобрести какой-то новый контент, кроме этих трёх мемов? Непохоже, что тут есть проверка, действительно ли приложение получает с сервера то, что ожидал разработчик!
Вам уже надоели эти три мема? Ну-ка попробуем, можно ли отобразить и «купить» что-то новое, скажем, «Success Kid».
Выберите в меню Charles: Tools > Rewrite. Эта функция позволяет перехватывать входящие/исходящие запросы и модифицировать их по тем правилам, которые вы установите. Включите галочку Enable Rewrite. Правила группируются в «наборы» (Sets). Под списком Sets нажмите Add для добавления нового набора правил. По желанию, переименуйте (Name). Мы создали набор правил, но он пока пустой. Давайте добавим правило — в разделе Rules есть кнопка Add, нажмите её.

Открылось окно Rewrite Rule. Измените Type на «Modify Query Param» («Изменить параметр запроса») и заполните два поля:

- Match > Name: urlName
- Replace > Value: success-kid
Нажмите OK, OK. Перезапустите приложение… Success! Мы можем покупать контент, который ранее был недоступен.

Интересно: для этого нового мема указана конкретная цена. Откуда? Приложение должно было как-то определить стоимость, исходя из JSON-ответа.
Откройте вкладку Response и посмотрите на JSON, который возвращает сервер. Что может определить стоимость цены?
Попробуйте найти JSON-ключи, которые могут определить стоимость мема в приложении. Может быть, это generatorID, totalVotesScore, instancesCount, templatesCount или ranking. В качестве упражнения для вас: найдите тот ключ, который влияет на стоимость мема.
- Protocol: http
- Host: version1.api.memegenerator.net
- опция Response включена

Теперь перезапустите приложение. Как только нам придёт ответ с сервера, сработает точка останова (breakpoint). Когда это произойдёт, щелкните на вкладке Edit Response, внизу выберите JSON:

Здесь вы можете вручную модифицировать JSON-ответ, который пойдёт в приложение. Поиграйтесь с этими параметрами и попробуйте определить, какие ключи влияют на цену, отображаемую в приложении. Изменив JSON-ответ, нажмите Execute (выполнить) для отправки ответа. Приложение делает три запроса к API, поэтому вам понадобится нажать Execute трижды.
Нашли, какой ключ влияет на цену?
Это ranking . Чем больше ranking , тем меньше цена.
Важно: действуйте быстро! AFNetworking имеет таймаут 30 секунд. Если вы перехватили ответ, но не успели внести изменения, AFNetworking вернёт ошибку таймаута запроса и выполнит соответствующий обработчик в коде (который в данном случае не делает ничего). Если у вас вышло время, перезапустите приложение и попробуйте снова.
Что дальше?
Вы открыли в себе хакерские способности и выполнили простейшие тесты на проникновение на примере файловой системы и сетевого взаимодействия конкретного приложения. Вы победили простые plist’ы и даже можете модифицировать ответы сервера.
Возможно, эти знания повысят безопасность вашего iOS-приложения… чуть-чуть. В следующей части мы углубимся гораздо дальше в недры приложения, будем изменять его функционал! А пока вы ждёте, когда я выложу перевод (до следующей пятницы), можно много чего попробовать на тему хранения данных в приложении:
-
Попробуйте такие средства, как iExplorer. iExplorer позволяет изучить содержимое файлов, которые используются вашими реальными приложениями. Посмотрите, что они там хранят.
Без джейлбрейка? Да ну?
Серьёзно!

Замечания по поводу перевода или неработающих примеров можно отправлять на почту dev @ x128.ru.
Перенести приложения с iPhone на iPhone
2022 год порадовал поклонников iPhone новыми моделями. Но, многие приложения для телефонов были удалены с официального сайта. Потому, многие стали задумываться, где закачать приложения для программного обеспечения? Чтобы не ломать голову, можно перенести их с другого телефона.

Перенос приложений
Перенос приложений предназначен для перемещения файлов, находящихся в телефоне, работающих настроек. Приложения, которые применяются для переноса, не копируются. Их система фиксирует и автоматически скачивает с официального сайта. Потому установить подобным образом возможно лишь софт, официально доступный для загрузки.
Сбербанк Онлайн, другие удалённые приложения так перенести невозможно. Но, выйти из ситуации можно.
Как перенести Сбербанк?
Выход из положения — приложение iMazing. С её помощью возможно восстановление удалённого софта, которого нет в официальном магазине. Но не многие знают, что она даёт возможность переноса приложений между телефоном, планшетом.

Работать с ней просто:
- Скачать приложение на компьютер.
- Подключить телефон для копирования приложения по кабелю к компьютеру.
- Запустить сервис, согласится на пробный период.
- Подождать загрузки файла, перейти в раздел «Приложения».
- Отыскать нужный софт, кликнуть «Копировать на Mac».
- Указать место сохранения, дождаться извлечения софта.
- Отключить телефон от компьютера, подключить смартфон для переноса софта.
- Открыть «Приложения», «Копировать на устройство».
- Нажать в проводнике скопированный сервис «Выбрать».
- Зайти в раздел «Настройки», «Локатор», отключить «Найти iPhone».
- Подтвердить процедуру копирования, дождаться окончания.
Перенос приложений через iMazing
В некоторых ситуациях необходимо ввести код-пароль на телефоне. Потом оставить телефон до переноса. Сделать перезагрузку телефона. Выполнить повторную активацию. Следовать инструкции на телефоне.
Не открывается Сбербанк Онлайн
Приложение после переноса не будет сразу работать. Чтобы активировать сервис, нужно верифицировать учетную запись со смартфона переноса. Просто нажать на программу, он лично выведет на экран окно диалога, чтобы ввести учётные данные.
Безопасен ли iMazing?
Сервис исправно работает. Единственный неудобный момент переноса приложений в iMazing — поочерёдный перенос приложений (по одному). Поэтому, при необходимости переноса двух и более программ, необходимо копировать по одному.
Apple таки разрешит устанавливать приложения на iPhone в обход App Store, но не всем
Скорее всего, эта функция не будет доступна для украинских пользователей.

Информация о том, что Apple собирается разрешить установку сторонних приложений на устройствах iOS, циркулирует в прессе и соцсетях весь 2023 год, но в последние недели сведения об этом становится все больше. Изначально считалось, что эту функцию добавят вместе с iOS 17, но этого так и не случилось. Теперь журналист Bloomberg Марк Гурман утверждает, что свобода все-таки придет на iOS в 2024 году.
Вероятно, такая возможность появится в iOS 17.3 или 17.4. Известно, что до марта 2024 года яблочные пользователи точно получат возможность ставить приложения в обход App Store.
Владельцы iOS-устройств смогут покупать и скачивать приложения напрямую с сайтов разработчиков. Это позволит разработчикам не платить комиссию Apple 15-30%. В то же время Гурман отмечает, что Apple будет «жестко контролировать этот механизм».
Как известно, в ноябре прошлого года официально вступил в силу Закон Европейского Союза о цифровых услугах (DSA). Он, помимо всего прочего, обвязывает Apple снять запрет на установку приложений из сторонних источников. Купертиновцы выступают против этого закона, но им придется его соблюдать, при этом время у компании есть до марта 2024 года.
Есть нюанс
Установка приложений на iOS в обход App Store, скорее всего, появится только в странах Евросоюза, поскольку именно этот регулятор принял законопроект, обязывающий открыть доступ маркетплейсам.
Недавно в Айфонах появился механизм против обхода блокировок, который, как ожидается, Apple включит одновременно с новой функцией. Таким образом, пользователи из США или Украины не смогут выставить в настройках iPhone европейский регион, чтобы устанавливать сторонние приложения.
Как УНИАН уже рассказывал, Google решила воспользоваться давлением ЕС на Apple и вместе с ведущими европейскими операторами попытается отвоевать у Apple ее сервис iMessage, сделав его совместимым с другими устройствами.
Вас также могут заинтересовать новости:
- Стало известно, когда выйдут первые iPad и MacBook с OLED-дисплеями
- В сети показали, как может выглядеть новый iPhone: решение Apple многих удивит
- iOS 18 принесет самое большое за последние годы обновление: что известно
