Лайфхакер
Лайфхакер
Лучшее
Рубрики
Рецепты
Подкасты
Сервисы
Колонки
Лучшее
Рубрики
Рецепты
Подкасты
Сервисы
Колонки
Сколько дней до лета
Новости
Здоровье
Спорт и фитнес
Покупки
Технологии
Отношения
Кино
Реклама
МакрадарiOS
16 июня 2014

Всё, что нужно знать о расширениях в iOS 8

Фото автора Артём Козориз
Артём Козориз

Автор Лайфхакера

Всё, что нужно знать о расширениях в iOS 8

Из всех новых возможностей iOS 8, представленных на WWDC, самыми значимыми, пожалуй, являются расширения (extensibility). Именно они должны оказать большое влияние на дальнейшее развитие ОС. Зачастую эта функция описывается как “возможность сторонних приложений взаимодействовать друг с другом”. Это, конечно же, слишком утрированно, поскольку взаимодействие далеко не единственная возможность расширений, да и не могут они общаться между собой напрямую, если уж быть точным.

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

Что же делают расширения?

add_new_target_2x-640x355

Предоставление возможности сторонним приложениям обращаться друг к другу, это лишь одна из проблем, которые призваны решить расширения. Сторонние клавиатуры; интеграция приложений с другими облачными хранилищами, помимо iCloud; виджеты в Центре уведомлений — всё это тоже ложится на плечи расширений.

На самом деле, не все части iOS могут быть “расширены” сторонними разработчиками. Например, если вы захотите заменить приложение по умолчанию или добавить свой переключатель в Пункт управления — у вас ничего не выйдет. Apple предусматривает не так много четко определенных “точек расширения” (extension points), чтобы показать разработчикам с какими частями ОС они могут работать. Список этих точек выглядит следующим образом:

  • Расширения Сегодня (Today extensions) или виджеты — используются для предоставления мгновенной информации в Центре уведомлений. Можно считать их ответом на живые плитки Windows Phone и виджеты домашнего экрана Android.
  • Расширения обмена (Share extensions) — позволяют отправлять фото, ссылки или другие файлы из приложений в онлайн-сервисы. Например постинг фото в Pinterest или выгрузка файлов в Dropbox или OneDrive прямо из приложений.
  • Расширения действий (Action extensions) — используются для “манипуляции или просмотра контента в контексте другого приложения”. Другими словами это значит, что вы можете редактировать фото, которое содержится в текстовом документе или, например, как было показано на презентации, использовать что-то вроде Bing Translate для перевода текста в окне Safari.
  • Расширения для редактирования фото (Photo Editing extensions)— могут использовать возможности редактирования других приложений при просмотре изображений в Фотопленке.
  • Расширения хранилищ (Storage Provider extensions) — позволяют приложениям открывать документы из ряда облачных хранилищ. Например, можно использовать для хранения ваших документов Dropbox и открывать их прямо оттуда из Office for iPad или Pages.
  • Расширения для сторонних клавиатур (Custom keyboard extensions) — заменяют стандартную клавиатуру в iOS.

Названные расширения относятся к iOS, однако многие из них (включая виджеты, расширения обмена и др.) работают в OS X Yosemite, так же как и в iOS. Разработчики приложений из Mac App Store сталкиваются с аналогичными ограничениями песочницы и внедрение расширений немного упростит их жизнь. Хотя, скорее всего, многие разработчики продолжат обходить их, избегая Mac App Store вообще.

Этот предварительный список точек расширения отличается от системы интентов (Intents system), работающей в Android. Приложения в Android используют фильтры, чтобы ОС понимала какие действия они могут выполнять и обрабатывать. Например, Twitter и Facebook* могут постить фото и ссылки; Google Drive и Dropbox могут загружать различные файлы; Chrome и Firefox могут открывать веб-страницы и т.д. Сторонние разработчики даже могут сами задавать фильтры, которые будут действовать в ОС.

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

Как установить расширения и как они работают?

IMG_0042-640x480

Как и все официальные приложения для iOS, расширения загружаются из App Store. Самым большим ограничением здесь является то, что Apple не позволит разработчикам публиковать расширения в “чистом виде”. Каждое расширение должно распространяться в составе приложения (containing app), которое в свою очередь должно нести какую-либо базовую функциональность и быть полезным для пользователя. То есть, разработчики не могут публиковать в App Store просто виджет или просто клавиатуру, как это происходит сейчас в Android. В то же время Apple не накладывает никаких ограничений на количество и типы расширений, которые может содержать ваше приложение.

Другие рекомендации Apple для разработчиков не являются обязательными. Это касается дизайна расширений, который должен соответствовать стандартным приложениям ОС: виджеты не должны отличаться от существующих виджетов в Центре уведомлений, а меню редактирования фото в Фотопленке — радикально отличаться от нативного. Вероятно найдутся те, кто не будет соблюдать эти рекомендации, но в основном большинство разработчиков и так придерживаются философии Apple при создании своих приложений.

IMG_2085-640x360

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

Несмотря на то, что все расширения должны быть “упакованы” в приложения (containing app), работать они могут независимо от них. Каждое расширение — это небольшой бинарный .appex-файл, который открывается, выполняет свою работу и закрывается без необходимости запуска основного приложения. Для расширений, которые выполняют те же задачи, что их основное приложение (например Instagram*, использующийся для добавления фильтра к изображению) предлагается использовать встроенный фреймворк для передачи исполняемого кода, необходимого для соответствующей задачи. Создайте фреймворк, поместите туда код и вы сможете встроить этот фреймворк как в приложение, так и в расширение. Единственным ограничением здесь является то, что такие приложения будут требовать версию iOS 8 и выше, так как не смогут запуститься на более ранних ОС.

app_extensions_lifecycle_2x-640x280

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

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

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

Безопасность пользовательских данных. Отличия от Android

IMG_0046-640x480

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

По сути, если бы пользователи Android использовали настройки безопасности по умолчанию и перед установкой каждого приложения читали обширный список вещей, которые оно может делать — опасность предоставления своих личных данных третьим лицам или заражения вредоносным ПО была бы не так уж и велика. Но все эти права приложений приводят к путанице. Некоторые люди хотят устанавливать приложения не только из Google Play, но и из других источников; другие желают получить root-доступ, чтобы получить возможность устанавливать альтернативные дистрибутивы — нет проблем, с Android можно всё. Такие вещи вызывают интерес некоторых пользователей к платформе, однако делают они все это на свой страх и риск.

Посмотрим на iOS, которая даже с внедрением расширений по-прежнему возводит барьеры между приложениями, их расширениями и данными приложений, чтобы защитить пользователей (и их информацию) от самих себя. Как мы уже говорили, приложения по-прежнему не могут обращаться друг к другу напрямую, поскольку расширения это небольшие бинарные файлы, которые запускаются отдельно от содержащего их приложения. Любое приложение, которое вызывает расширение (host app в терминологии Apple) обращается к расширению, а не к приложению, которое его содержит (containing app). При этом, когда хост-приложению нужно использовать расширение, оно отправляет запрос через системный фреймворк, а не напрямую и никогда не получит доступ к данным приложения.

simple_communication_2x-640x312

Разработчик из FortyTwo Inc. Эдуардо Фонсека объясняет как iOS удается держать приложения и расширения “на безопасном расстоянии”.

“Каждое расширение — это отдельный бандл (bundle) внутри главного бандла приложения, содержащего отдельные исполняемые файлы”, — говорит Фонсека. “Самое смешное здесь то, что расширение не является приложением. Оно вызывается через системные фреймворки Apple, используя четко обозначенный интерфейс, который инициирует процесс запуска расширения. При этом его код выполняется отдельно, а это подразумевает, что выполнение какого-либо стороннего кода внутри приложения невозможно. Поэтому нет никакого риска, что с приложениями которые будут поддерживать расширения (например Safari), могут возникнуть проблемы при использовании расширений внутри других приложениях. Они как вода и масло — они не смешиваются.”

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

detailed_communication_2x-640x225

Для обмена данными между ними, вы должны сделать их частью группы приложений (App Group), что позволит им иметь некоторые общие данные во внешнем контейнере, за пределами обоих песочниц. Вы наверняка замечали, что единожды войдя в свой аккаунт в Google Chrome на iOS, вы также будете залогинены и в Google Maps и Google Drive — это и есть результат использования App Group. Но даже эти группы имеют ограничение на определенные типы данных, которыми можно обмениваться. Допускается обмен базами данных, кэшем, информацией учетных записей. Однако к локальным документам и медиафайлам это не относится — они по-прежнему под запретом.

app_extensions_container_restrictions_2x-640x277

Говоря проще, Apple не хочет, чтобы одни приложения имели доступ в песочницу других. Расширения представляют собой маленькие песочницы внутри другой песочницы, которые облегчат взаимодействие разных приложений, но при этом никогда подпускают запускающее приложение (host app) к данным приложения, которое содержит расширение (containing app).

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

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

Опять же, все эти механизмы эффективны только в том случае, когда используются правильно, но люди, как правило, редко читают лицензионные соглашения и просто соглашаются с теми запросами, которые выдает ПО при установке, подвергая свои данные риску. Apple очень грамотно подходит к этому вопросу и даже сейчас в iOS есть удобные настройки приватности с переключателями, в которых четко видно какие прилолжения используют ту или иную информацию. Что-то подобное Google анонсировала в Android 4.4, но в финальном релизе этого, к сожалению, не оказалось. Это не имеет прямого отношения к расширениям, однако это хороший пример того, как iOS 8, продолжает жертвовать гибкостью ради безопасности и конфиденциальности пользователей.

Apple также налагает другие ограничения на расширения — они не могут использовать все API, которые доступны приложениям. В частности пользовательские клавиатуры ограничены многими обязательными требованиями и правилами. Механизмы взаимодействия расширений Apple отличаются от тех что использует Google и, по сути, iOS 8 по-прежнему остается закрытой операционной системой по сравнению с Android. Сторонние приложения до сих пор не могут напрямую взаимодействовать между собой, а системные элементы вроде домашнего экрана или экрана блокировки не поддаются кастомизации, так же как и приложения по умолчанию.

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

(via)

*Деятельность Meta Platforms Inc. и принадлежащих ей социальных сетей Facebook и Instagram запрещена на территории РФ.

Если нашли ошибку, выделите текст и нажмите Ctrl + Enter

Лучшие предложения

Вакуумный рюкзак

Надо брать: рюкзак с вакуумным отсеком со скидкой 63%

Nahodki AliExpress: samye interesnye i poleznye tovary marta

Находки AliExpress: самые интересные и полезные товары марта

Оперативная память от CUSU

Популярную DDR4-оперативку на 16 ГБ отдают со скидкой 67% на AliExpress

Магазины, которые продлили скидки после большой распродажи на AliExpress

Магазины, которые продлили скидки после большой распродажи на AliExpress

10 предметов для небольших, но заметных изменений в интерьере

10 предметов для небольших, но заметных изменений в интерьере

Игровой монитор от Bloody

Надо брать: недорогой игровой монитор с высокой герцовкой от Bloody

15 товаров, чтобы с комфортом проводить время на даче

15 товаров, чтобы с комфортом проводить время на даче

Забираем очаровательные кеды из коллаборации SELA и «Союзмультфильма»

Забираем очаровательные кеды из коллаборации SELA и «Союзмультфильма»

Это интересно
ИГРА: Помогите Яне построить свой бизнес

ИГРА: Помогите Яне построить свой бизнес

От обучения к трудоустройству: 3 истории женщин, которые добились карьерных успехов в сфере новых технологий

От обучения к трудоустройству: 3 истории женщин, которые добились карьерных успехов в сфере новых технологий

Куда поехать за классным сувениром: 7 точек Золотого кольца с удивительными народными промыслами

Куда поехать за классным сувениром: 7 точек Золотого кольца с удивительными народными промыслами

Как поддержать подростка с избыточным весом? Чек-лист для родителей

Как поддержать подростка с избыточным весом? Чек-лист для родителей

Комментарии
Elvis271
16.06.14 22:45
Интересная статья, спасибо. Не очень понятен один момент Чем отличается это: "Приложения в Android используют фильтры, чтобы ОС понимала какие действия они могут выполнять и обрабатывать. Например, Twitter и Facebook могут постить фото и ссылки; Google Drive и Dropbox могут загружать различные файлы; Chrome и Firefox могут открывать веб-страницы и т.д. " от этого: "Расширения обмена и действий могут быть вызваны из любого приложения, однако разработчики должны добавить правила активации к расширению и указать, какие данные оно будет обрабатывать. Если ваше расширение предусматривает только обмен фото, в правилах активации нужно указать это, чтобы расширение не появлялось когда пользователь захочет поделиться ссылкой или документом." ? Разница в том, что в первом случае указываются действия плюс тип данных, а во втором - только тип? Либо в том, что количество действий в iOS ограничено, и нельзя задать например открытие ссылок в стороннем браузере?
Артем Козориз
17.06.14 11:11
Хороший вопрос. Я считаю, что открытие ссылок в сторонних браузерах (и тому подобное) не исключено. Просто Apple заставляет разработчиков четко указывать правила, чтобы избежать нагромождения и излишней путаницы. Т.е., "Если ваше расширение предусматривает только обмен фото, в правилах активации нужно указать это, чтобы расширение не появлялось когда пользователь захочет поделиться ссылкой или документом."
nyck
16.06.14 22:50
"По сути, если бы пользователи Android использовали настройки безопасности по умолчанию и перед установкой каждого приложения читали обширный список вещей, которые оно может делать" простите, но фигню же пишите. вы или соглашаетесь и ставите или не соглашаетесь и не ставите. если прога нужна, то кроме как "согласиться" другого выбора же нет
Артем Козориз
17.06.14 11:07
Я думаю там речь немножко о другом. Скорее всего имеются в виду действия, которые разрешаете приложению: использование gps, доступ к контактам, учетным записям и все в таком духе.
Что вы могли пропустить
Какой стороной вставлять вилку в розетку и есть ли вообще разница
Какой стороной вставлять вилку в розетку и есть ли вообще разница
0
Вчера
Технологии
Технологии
Российские операторы собираются отключить оплату с мобильного счёта на iPhone
Российские операторы собираются отключить оплату с мобильного счёта на iPhone
0
Вчера
Новости
Технологии
Лучшие смартфоны марта
Лучшие смартфоны марта
0
29 марта
Устройства
Устройства
10 новых приложений для Android: лучшее за март
10 новых приложений для Android: лучшее за март
0
29 марта
Android
Android
Чем заменить Telegram: 10 мессенджеров для общения с близкими и коллегами
Чем заменить Telegram: 10 мессенджеров для общения с близкими и коллегами
0
28 марта
Технологии
Технологии
Android оказался почти на 50% быстрее iOS при работе в браузере
Android оказался почти на 50% быстрее iOS при работе в браузере
0
28 марта
Android
Новости
8 новых игр для Android и iOS: лучшее за март
8 новых игр для Android и iOS: лучшее за март
0
27 марта
Технологии
Технологии
В Японии создали приложение, которое переводит плач младенцев на понятный язык
В Японии создали приложение, которое переводит плач младенцев на понятный язык
0
27 марта
Новости
Технологии
Sony повысит цены на PlayStation 5 и PlayStation Portal по всему миру
Sony повысит цены на PlayStation 5 и PlayStation Portal по всему миру
0
27 марта
Новости
Устройства
Windows против macOS: в Omnissa сравнили скорость, сбои и срок службы двух ОС
Windows против macOS: в Omnissa сравнили скорость, сбои и срок службы двух ОС
0
27 марта
Windows
Новости
В пару кликов: как включить общий буфер обмена между Windows 11 и Android
В пару кликов: как включить общий буфер обмена между Windows 11 и Android
0
27 марта
Технологии
Технологии
12 лучших аэрогрилей для дома в 2026 году
12 лучших аэрогрилей для дома в 2026 году
0
27 марта
Ликбез
Технологии
Вертикальные вкладки в Chrome теперь доступны всем пользователям
Вертикальные вкладки в Chrome теперь доступны всем пользователям
0
26 марта
Браузеры
Новости
Microsoft может вернуть установку Windows без интернета
Microsoft может вернуть установку Windows без интернета
0
26 марта
Windows
Новости
Изобретатель попытался создать ховерборд из «Назад в будущее», а получилась «парящая» доска
Изобретатель попытался создать ховерборд из «Назад в будущее», а получилась «парящая» доска
0
26 марта
Новости
Технологии

Новые комментарии

Аватар автора комментария
Horugvi7 часов назад

0 / 0

Скажу тебе по секрету — как люди говорят, так и правильно.
20 коварных ударений, которые многие ставят неправильно
Аватар автора комментария
Serhio Dedovets8 часов назад

0 / 0

Попробовал тест из 6 1 угадал. В некоторых, вообще, ударение там, где сроду не подумал и не слышал. Я не противник правил и за грамотную речь , но встаёт вопрос, как так получается, что по сути большинство говорит неправильно, где сбой ? В преподавании или в огромном количестве этих слов ? Потому что , наверно, речь мы учим с детства от людей из разговора, а не по словарям , а люди говорят ,как удобно ,а не как правильно, а почему им так удобно? Может в книгах выделять правильные ударения, в школе больше времени на эту тему, ну и сами преподаватели обязаны обладать грамотной речью. Тогда и толк будет.
20 коварных ударений, которые многие ставят неправильно
Аватар автора комментария
Horugvi8 часов назад

0 / 0

это щасливая совецкая жизнь, скоро догоним
Шурик и «Груз 200»: в соцсетях делятся «величайшими кадрами из российских фильмов»
Аватар автора комментария
Павел Степанов8 часов назад

0 / 0

Автор ! Как вообще это возможно... и для какой цели ,позиционировать для людей предметы , работающие почти все ,на абсолютно старых и старейших(!!!) операционных системах Андроид типа Андроиды 10,11,12 ,которые более никогда не обновляются как системы и не обновятся более никогда из-за старого железа внутри, которое даже там не менять, а нужно выбрасывать !?? Обновляются приложения ,а системы те старые - больше нет ! В буквально самое короткое время,эти старые аппараты после первых же обновлений,начнут "лагать" и "глючить" и у них снизится производительность труда их обработки информации на основе обновлений у приложений из магазина GOOGLE PLAY STORE ,которые происходят чуть ли не раз в неделю, а то и чаще. Эти лаги будут заметны даже на таких примитивных действиях как простой отклик пульта, а про работы приложений я и говорить не хочу ! Со временем эта медвежья услуга станет в ранге повсеместности ?!ДА? Ведь все ,кто осведомлён разумеется и хоть немного что-то понимает , все прекрасно знают,что исходя их жизненных реалий, а реалии у нас такие : Сегодня 30 марта 2026 года и сейчас уже скоро будет скоро год ,как 10го июня 2025 года состоялся релиз на секундочку операционной системы Андроид 16 ! У тебя автор здесь была представлена только одна свежая модель Google Streamer 4K которая действительно имеет самую новую ОС Андроид 14. Всё остальное уже даже не хлам ! На дворе 2026й год ! Это как я предложу использовать ручную (60х годов прошлого столетия) мясорубку . Но скажу ,что она сделана сегодня !
11 лучших смарт-приставок и медиаплееров для ТВ в 2025 году
Как найти покупателей без помощи социальных сетей

Как найти покупателей без помощи социальных сетей

Лайфхакер
Информация
О проектеРубрикиРекламаРедакцияВакансииО компании
Подписка
TelegramВКонтактеTwitterViberYouTubeИнициалRSS
Правила
Пользовательское соглашениеПолитика обработки персональных данныхПравила применения рекомендательных технологийПравила сообществаСогласие на обработку персональных данныхСогласие для рекламных рассылокСогласие для информационной программы
18+Копирование материалов запрещено.
Издание может получать комиссию от покупки товаров, представленных в публикациях