Mac os сервис объявлений через айфон что это

Обновлено: 02.07.2024

Переход приложения на iPad и Mac

Приложение Акции появилось ещё в iPhone OS 1 на первом iPhone 2007 года. Однако до презентации iOS 12 и macOS Mojave оно не было доступно на iPad и Mac. В этом году Apple не только расширила приложение и перенесла его на новые платформы, но и изменила его дизайн и добавила новые функции.

Сьюзен Прескотт из Apple отметила следующее:

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

Как пользоваться Акциями на Mac

По умолчанию программа Акции находится в доке macOS Mojave.

1) Нажмите на иконку программы Акции, чтобы её открыть.

2) Слева вы увидите список доступных обменников и акций, за которыми вы следите в приложении для iPhone. Если ранее вы не использовали Акции, то будет отображаться стандартный список: Dow Jones, NASDAQ и APPL.


3) Чтобы добавить или удалить акции из списка, нажмите на кнопку меню в нижнем правом углу этой колонки.

4) Теперь вы можете легко отредактировать список акций. Чтобы добавить что-то, нажмите Файл > Новый в меню Mac.

5) Нажмите на кнопку «удалить» рядом с акциями, которые вам не нужны. Она выглядит как красный кружок с минусом внутри.


6) После завершения нажмите Готово.

Поиск главных новостей

Для начала вернитесь на главный экран Акций.


2) Чтобы открыть новость, просто нажмите на неё.

3) Листайте экран, чтобы прочитать новость полностью.

1) Чтобы больше узнать о рынке, нажмите на обменник в левой части экрана.


2) Справа будет отображаться информация о рынке в реальном времени.

На примере выше вы можете увидеть график с данными Dow Jones Industrial Average. В нём будут отображаться изменения в течение дня. Можно посмотреть график за неделю, месяц, три месяца, полгода, год, два года, пять лет, десять лет и всё время.

3) Листайте вниз, чтобы узнать больше новостей.

4) Нажмите на новость, чтобы открыть её полностью.

Информация о компаниях

1) Чтобы узнать статус своих акций, выберите их в меню слева.


2) Справа откроется информациях об акциях компании в реальном времени.

На примере показан график с акциями Apple. Вы также можете открыть график за неделю, месяц, три месяца, полгода, год, два года, пять лет, десять лет и всё время.


4) Нажмите на новость, чтобы её открыть.

Публичная версия программы Акции выйдет вместе с финальной версией macOS Mojave этой осенью. Пока что программа находится на стадии бета-тестирования, так что в неё могут вносить изменения.


Mac всегда отличался от своего близкого родственника iOS, особенно в отношении того, что пользователю можно и нельзя запускать в своей системе. Даже после появления Apple Silicon компания Apple чётко дала понять, что Mac остаётся Mac, и его по-прежнему можно хакать, даже при запуске на новой архитектуре.

Для программистов это значит, что при разработке для платформы Mac у нас есть выбор: мы можем распространять приложения независимо, за пределами Mac App Store, только через Mac App Store или сочетать оба варианта.

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

App Store и прямое распространение: плюсы и минусы

Все эти варианты имеют свои достоинства и недостатки. Начнём с того, что некоторые приложения для Mac просто невозможно будет распространять через Mac App Store. Примером этого может послужить моё приложение AirBuddy, которому для обеспечения глубокой интеграции с беспроводными устройствами Apple необходимо запускать системный агент и использовать приватные API, что в App Store запрещено. То же самое относится и ко многим другим видам приложений, которые просто не смогут работать в условиях ограничений «песочницы» Mac.

Для тех же, у кого выбор есть, я составил список плюсов и минусов выпуска в Mac App Store или независимого распространения.

Плюсы Mac App Store

  • Компания Apple занимается за вас распространением, продажей и лицензированием.
  • Большинству пользователей проще найти и установить приложение.
  • Есть вероятность попасть в рекомендации Apple и стать известным большему количеству покупателей.
  • Можно использовать такие функции, как вход с учётной записью Apple, недоступные для приложений, распространяемых вне Mac App Store

Минусы Mac App Store

  • Нужно платить Apple долю 15% или 30% от всех продаж. Это зависит от того, сколько заработали за год все ваши приложения.
  • Каждое обновление, даже самое мелкое, обязано пройти процесс App Review с вероятностью отказа по произвольным причинам.
  • Из-за строгих требований «песочницы» невозможно раскрыть весь потенциал macOS.
  • Невозможно выпускать платные обновления.

Плюсы прямого распространения

  • Можно выпускать обновления в любой момент без необходимости ожидания проверки и не боясь, что их отклонят
  • Раскрывается весь потенциал macOS с системными расширениями, демонами, выходом из «песочницы», приватными API и многим другим.
  • Повышение процента продаж.
  • Реализация платных обновлений или других бизнес-моделей, недопустимых в App Store
  • Возможность жить без постоянного страха, что твоё приложение внезапно станет проблемой для Apple и появится угроза его удаления из App Store

Минусы прямого распространения

  • Нужно заниматься лицензированием, распространением и обновлениями (вы увидите, что это не так сложно)
  • Не так просто реализовывать расходные (consumable) и постоянные (non-consumable) покупки внутри приложения (нет StoreKit)
  • Нельзя использовать некоторые сервисы Apple, например, вход с учётной записью Apple (другие сервисы, например, CloudKit, работают нормально)

Примечание о Catalyst и SwiftUI

С появлением Catalyst стало появляться множество новых приложений для Mac, поскольку теперь намного проще взять готовое приложение для iPad и портировать его на Mac. Приложения, портированные на macOS через Catalyst, необязательно выпускать в App Store, даже если оригинал под iOS находится там.

Кроме того, на данный момент не существует TestFlight для macOS (одно из моих пожеланий на 2021 год), поэтому если вы хотите распространять бета-сборки приложения, созданного Catalyst, то это необходимо делать за пределами Mac App Store, и это не сильно отличается от распространения приложения в продакшене.

Многое из описанного в статье применимо и к Catalyst-приложениям — в конце концов, это же приложения для Mac, однако части приложений потребуется дополнительный хакинг — Apple препятствует использованию всех возможностей AppKit непосредственно из Catalyst-приложения. Однако немного потрудившись, можно заставить Catalyst-приложение использовать многие функции Mac, в том числе поддержку AppleScript и другие возможности.

При разработке SwiftUI-приложений для Mac в процессе распространения не должно быть серьёзных отличий, потому что в SwiftUI-приложении мы можем использовать все функции macOS API без хаков, требуемых для Catalyst-приложений.

Распространение

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

Хостинг

Первым серьёзным шагом, позволяющим вашему приложению для Mac попасть в руки пользователей без App Store — выбор способа распространения его двоичного файла. Отсутствие App Store означает, что вам придётся хостить двоичные файлы приложения и обновлений где-нибудь в Интернете, дав пользователям ссылку на скачивание.

Реализовать это можно множеством разных способов. Для приложения в open source можно использовать релизы на Github и даже хостить update feed приложения в репозитории Github. Именно так я распространяю приложение WWDC для macOS.

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

B2 — чрезвычайно доступный провайдер (я редко плачу больше 1 доллара в месяц). Большинство приложений для Mac невелико по размерам, поэтому даже если ваше приложение активно скачивают, маловероятно, что вам придётся много платить за объём хранилища/трафик. Ещё одним популярным вариантом являются бакеты Amazon S3, но его панель управления повергает меня в ужас, поэтому я предпочитаю B2, который намного проще (и дешевле).

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

На правах рекламы

Если вам нужен сервер в России для отладки или размещения проектов, то вам прекрасно подойдут наши эпичные серверы. Создание собственной конфигурации в пару кликов, посуточная тарификация серверов, антиDDoS уже «в коробке», удобная панель управления. Лучше один раз попробовать!



Подтверждение и упаковка

При экспорте архивированного приложения из Xcode у нас есть два основных варианта распространения: App Store Connect и Developer ID. Для распространения приложений без App Store мы будем использовать Developer ID.

Ту же учётную запись разработчика, которую вы используете для распространения приложений через Mac App Store, можно использовать и для подписывания приложений при распространении приложений по Developer ID. Сам сертификат отличается, но Xcode автоматически сгенерирует и установит его, если вы ещё этого не сделали в процессе экспортирования архива.

С момента выпуска macOS Catalina все приложения, распространяемые напрямую среди пользователей должны проходить проверку Apple, в противном случае они по умолчанию не запустятся. Процесс проверки заключается в передаче приложения компании Apple, которая выполняет автоматизированный контроль зловредного ПО и «штампует» ваш двоичный файл специальной сигнатурой, позволяющей ему запускаться. Это не процедура App Review, а автоматизированная проверка, предотвращающая распространение таким способом зловредного ПО. Кроме того, она позволяет Apple пометить как зловред единственный двоичный файл, а не весь аккаунт разработчика на случай, если он когда-нибудь окажется скомпрометированным.

Возможность проверки двоичного файла непосредственно в Xcode organizer зависит от способа упаковки, выбранного для распространения приложения. Нельзя просто закачать папку .app на сервер и позволить пользователям её скачивать, её нужно превратить в неструктурированный файл. Проще всего это сделать, упаковав приложение в zip, и распространять его как файл zip, однако, по моему опыту, распространение приложения в виде файла DMG значительно снижает количество просьб о помощи со стороны пользователей.

Вероятно, вы уже видели DMG при загрузке файлов Mac. Это образы дисков, монтируемые macOS при двойном нажатии в Finder. Они также могут содержать графические инструкции о том, что нужно перетащить приложение в папку Applications. Это упрощает жизнь пользователю и снижает вероятность того, что этот пользователь запустит приложение из папки Downloads или другого произвольного места.

Если вы собираетесь распространять своё приложение в виде DMG, то вам достаточно просто экспортировать его, выбрав в Xcode опцию Developer ID без проверки (notarization), а затем выполнить проверку самого DMG. В Xcode нет опции экспорта в DMG, поэтому придётся воспользоваться сторонним инструментом. Мне нравится работать с create-dmg. Кроме того, я создал и распространяю в open source инструмент dmgdist, автоматизирующий процесс создания, загрузки и штампования DMG, что позволяет одной командой получить готовый к распространению образ.

Для распространения приложения в виде файла zip процесс подготовки проще: после выбора в Xcode Developer ID выберите опцию загрузки (upload). Будет создана проверенная версия приложения, которую затем можно будет упаковать в zip и распространять.

Обновления приложений

Ещё один аспект App Store заключается в том, что он занимается обновлениями приложений. Когда мы загружаем новую версию в App Store Connect и она проходит проверку, пользователям становится доступным обновление в App Store. Нам нужно каким-то образом воссоздать этот процесс для приложений, распространяемых напрямую.

Самый лучший (и популярный) способ — использовать Sparkle. Он существует уже много лет и стал практически официальным способом распространения обновлений приложений для Mac, продаваемых вне Mac App Store.

Сейчас Sparkle как бы живёт двойной жизнью. Можно использовать или «легаси»-версию Sparkle, или более современную ветку «v2», в которую включено множество улучшений, например, возможность обновлять используемые в «песочнице» приложения. Я по-прежнему пользуюсь «легаси»-версией, потому что она мне знакома, а интеграция более современной версии всё ещё кажется немного сложной. Не надо чинить то, что не сломано.

Процесс генерации обновления приложения обычно происходит следующим образом: проверяем, что с каждым обновлением версия приложения становится больше, создаём пакет в соответствии с описанным выше (Sparkle понимает zip, DMG и пакеты установщика), а затем используем инструмент generate_appcast для обновления feed. После этого загружаем дельты, пакет новой версии и обновлённый AppCast feed на выбранный хостинг, после чего пользователи увидят новую версию, проверив обновления внутри приложения.

Это может показаться сложным и определённо требует практики, но после настройки процесса он оказывается совершенно беспроблемным (на мой взгляд, гораздо лучше, чем работа с App Store Connect).

Зарабатываем деньги за пределами Mac App Store

Если вы хотите распространять своё приложение для Mac вне App Store, то есть вероятность, что в какой-то момент вы захотите зарабатывать на нём. Как и в App Store, можно использовать множество разных бизнес-моделей, но наиболее популярной при прямой продаже покупателям является старая добрая модель «плати вперёд»: пользователь платит за скачивание приложения, регистрирует его при помощи лицензионного ключа и получает обновления бесплатно, по крайней мере, в течение какого-то периода времени.

Ещё одна популярная бизнес-модель для приложений, распространяемых вне App Store — это модель подписки, при которой пользователи ежемесячно или ежегодно платят какую-то сумму, чтобы продолжать использовать приложение. По выбору бизнес-модели можно написать целое руководство (или серию руководств), поэтому в этом я вам не помощник. В этом разделе я буду подразумевать, что используется модель «плати вперёд», которую я выбрал для своих приложений.

Чтобы вам заплатили за ваш продукт, нужен какой-то магазин, в который приходят пользователи, узнают о приложении и покупают его (если повезёт). Хорошим вариантом для новичков является сайт Gumroad, предлагающий страницу магазина, обработку платежей, хостинг и лицензирование. Когда я выпустил первую версию AirBuddy в январе 2019 года, то использовал Gumroad, и он сослужил мне очень хорошую службу, продав в течение года десятки тысяч копий приложения.

Однако изначально Gumroad не проектировался для продажи ПО, поэтому ему не хватает гибкости, имеющейся у других сервисов. После выпуска моего нового приложения FusionCast и AirBuddy 2.0 я перешёл на Paddle, который теперь занимается обработкой платежей и лицензированием моих приложений.

Ещё один вариант — просто использовать сервис платежей, что-нибудь типа Stripe или FastSpring, или же обрабатывать заказы и заниматься лицензированием самостоятельно. Таким образом вы получите оптимальную гибкость, хотя придётся больше работать и скорее всего понадобится платить за дополнительные сервисы (например, для отправки электронных писем).

Я бы сказал, что если вы стремитесь подзаработать, продавая приложения для Mac за пределами Mac App Store, то лучшим вариантом является Gumroad, поскольку этот сайт сделает за вас практически всё и вам даже не придётся создавать сайт для приложения. Однако если вы продаёте приложения как компания или это ваш основной источник дохода, то бОльшую гибкость обеспечит профессиональное решение, имеющее меньше ограничений, например, Paddle.

Лицензирование, защита от копирования и пиратство

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

Хоть это и так, я пришёл к выводу, что разработчикам, особенно инди, не стоит тратить любое существенное количество времени на создание защиты от копирования. Да, некоторые люди украдут вашу работу, но они в любом случае не заплатили бы, поэтому время, потраченное на беспокойство об этом или на встраивание в приложение сверхпродвинутой DRM — это время, которое можно было бы потратить на устранение багов и разработку новых функций. Кроме того, подобные практики в конечном итоге чаще наказывают законных пользователей, чем препятствуют пиратству (достаточно взглянуть на множество примеров подобного из отрасли разработки игр).

В первой версии AirBuddy вообще не было никакой защиты от копирования, даже простейшей формы регистрации для ввода лицензионного ключа. Я нашёл в Интернете несколько спираченных копий (разумеется, некоторые из них были заражены), но не увидел признаков того, что приложение пиратит большой процент пользователей, и мои показатели тоже этого не отражают. В версии 2 я использую Paddle SDK для регистрации при установке приложения, но на этом всё.

Приложения, распространяемые через Mac App Store, тоже не имеют автоматической защиты от пиратства: необходимо вручную проверять чек App Store, чтобы убедиться в легальности копии. Большинство кодов верификации чеков тривиально взламывается, поэтому приложение, распространяемое через Mac App Store, защищено от пиратства не сильнее, чем приложение, распространяемое напрямую.

Маркетинг

Я добавил этот раздел в первую очередь для того, чтобы сказать: нет серьёзных различий в маркетинге при прямом распространении приложения для Mac и при распространении через Mac App Store. В наши дни простой выпуск приложения в App Store практически ничего не значит, потому что низка вероятность того, что пользователи просто органически обнаружат совершенно новое приложение без внешней информации.

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

Маркетинг приложений сам по себе может быть темой для ещё одного руководства, но в целом можно порекомендовать использовать любые доступные вам каналы, особенно если у вас уже есть подписчики (в Twitter, Instagram, TikTok и т.д.). Отправка своего приложения (с бесплатной лицензией) веб-сайтам и людям, занимающимся обзорами приложений для Mac, тоже может стать отличным способом повышения популярности. Также можно использовать платную рекламу в социальных сетях, подкастах и изданиях.

Фирменная технология Apple Continuity обеспечивает бесшовный пользовательский опыт и возможность легко переходить от устройства к устройству во время работы. Благодаря универсальному буферу обмена можно копировать текст, ссылки и другой контент на Mac и тут же вставлять его на iPhone. И наоборот.

Для использования этой функции убедитесь, что на обоих устройствах активен Bluetooth и они подключены к одной и той же беспроводной сети. Также проверьте, включён ли Handoff на Mac и iPhone:

  • В macOS откройте «Настройки» → «Основные» и поставьте галочку напротив пункта «Разрешить Handoff между этим Mac и вашими устройствами iCloud».
  • В iOS перейдите в «Настройки» → «Основные» и включите одноимённый тумблер.

2. Продолжайте работу на других устройствах

После включения предыдущей опции вы также можете начать работу в настольной версии приложения, а затем продолжить её на iPhone или iPad. Это работает с Mail, Safari, «Календарём» и многими другими стандартными приложениями.

Например, можно начать писать заметку на iPhone, а затем, пересев за Mac, продолжить работу над текстом с того места, на котором остановились.

MacOS распознаёт запущенные параллельно задачи и отображает их в виде дополнительной иконки в доке слева.

Чтобы продолжить работу с открытым приложением на iOS, нужно вызвать меню многозадачности свайпом вверх или двойным нажатием кнопки Home, а затем тапнуть по небольшой панельке внизу.

3. Отвечайте на звонки с Mac

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

  • В macOS запустите FaceTime, откройте настройки и поставьте галочку напротив пункта «Вызовы с iPhone».
  • В iOS перейдите в «Настройки» → «Телефон» → «На других устройствах», включите тумблер «Разрешить вызовы» и отметьте Mac.

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

4. Принимайте и отправляйте СМС с Mac

5. Отправляйте файлы, документы, ссылки

Отправлять контент можно с macOS на iOS и наоборот в любых комбинациях. Причём не только файлы, но и папки. Это работает для фото, документов, заметок, ссылок и контактов.

6. Используйте iPhone как точку доступа

Когда под рукой нет нормального Wi-Fi, всегда можно использовать смартфон для подключения к интернету. Для этих целей служит функция «Режим модема», которая доступна на iPhone и iPad с сотовым модулем.

Сначала нужно включить её на iOS-устройстве. Для этого перейдите в «Настройки» → «Режим модема» и включите одноимённый тумблер.

Теперь можно подключаться к Mac через иконку Wi-Fi в строке меню. Найдите в списке сетей свой iPhone и выберите его. Здесь же показан уровень сигнала и заряд аккумулятора смартфона.

7. Управляйте вкладками Safari

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

  • На macOS откройте «Настройки» → iCloud и поставьте галочку напротив Safari.
  • На iOS перейдите в «Настройки» → Apple ID → iCloud и включите тумблер Safari.

После этого в меню открытых вкладок в Safari на Mac появятся списки вкладок со всех ваших устройств. Их можно будет закрыть по одной или все разом.

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

8. Разблокируйте Mac с помощью iPhone

Стандартными средствами можно разблокировать Mac лишь через Apple Watch, но если установить специальное приложение, то этих целей подойдёт и iPhone. В App Store есть множество подобных программ. Вот пара самых популярных из них.

Из этой статьи ты узнаешь, как можно общаться с iPhone, iPad и iPod touch из своих программ под Mac OS X, не прибегая к скриптингу iTunes. В результате сегодняшней работы мы получим полный доступ к файловой системе мобильного устройства с помощью закрытого фреймворка Mobile Device Framework.

Введение

Мне нередко приходилось видеть в сети вопросы типа: «Можно ли использовать мой iPhone как флешку?». Действительно, памяти на устройстве установлено немало, хотелось бы иметь возможность использовать ее свободно, а не только для хранения файлов, полученных через iTunes в различных сервисах Apple. Однако iPhone’ы и iPod’ы (имеются в виду iPod touch) при подключении не монтируются как съемные носители ни в Mac OS X, ни в виндах.

Apple действительно не предоставила такой функциональности в своих устройствах, но общественность не дремлет, и со временем появилось множество утилит, которые дают пользователю возможность работать с устройством Apple как со съемным носителем. Некоторые из них устанавливаются на iPhone, некоторые — на хост.

Одни работают через Wi-Fi (например FlashDrive), другие — через USB (iPhone Folders). Нас будет интересовать в основном работа через USB – Wi-Fi не везде есть, да и скорость обмена данными в этом случае оставляет желать лучшего.

Готовые тулзы

Их немало. Те, что работают через USB, можно условно разделить на два класса: одни нужно ставить на мобильное устройство (тогда потребуется и jailbreak), другие следует устанавливать на хост.

Таких поделок существует достаточно много (Touch Drive, Touch Copy и тому подобные), а некоторые из них даже стоят денег, хотя, как мы потом увидим, ничего сложного в создании таких прог нет.

В качестве аналогичного решения для Mac OS X можно привести iPhoneDisk — плагин к MacFuse, который также позволяет работать с файловой системой iPhone.

Среди прог, которые устанавливаются на само мобильное устройство и обеспечивают его монтирование при подключении как съемного носителя, можно отметить, например, USB Drive, которая доступна через Cydia. Подобные приложения имеют существенные недостатки, потому что они, как правило, предлагают на выбор три режима работы, для переключения между которыми требуется перезагрузка мобильного устройства. В режиме Default устройство будет работать как обычно: гаджет можно будет использовать в качестве модема, распознавать его в iPhoto как фотокамеру (по протоколу PTP — Picture Transfer Protocol) и синхронизировать с iTunes.

Второй режим, Drive + iTunes, работает только в Mac OS X. В этом случае интерфейс PTP будет заменен другим, Mass Storage, что позволит использовать девайс в качестве USB-флешки. При этом синхронизация с iTunes и дебаггер XCode продолжат работать как в дефолтном режиме. А в режиме Drive Only устройство определится только как USB-диск. При этом он будет виден в любой операционной системе.

Протоколы iTunes

На рисунке видно, что библиотека взаимодействует с USBустройствами через libusb-1.0. usbmuxd — демон, который обеспечивает мультиплексную передачу данных по TCP/IP через USBинтерфейс. Таким образом, для остального софта USB-интерфейс становится прозрачным и он может взаимодействовать с сервисами, бегающими на мобильном устройстве, через сокеты. Для обмена данными с демоном используется библиотека libusbmuxd. libiphone — это уже реализация протоколов сервисов iOS. Если приложение работает с файловой системой мобильного устройства, то оно использует AFC- (или AFC2-) протокол. AFC (Apple File Connection) — это сервис, который доступен на каждом iPhone/iPod touch. Именно этот сервис iTunes использует для обмена файлами с устройством.

Кодим

Кодить будем на Objective-C/Cocoa. Не забудь в проекте XCode добавить ссылку на MobileDevice.framework, чтобы все нормально слинковалось. Создадим два класса: MobileDevice и MobileDeviceServer.

Первый будет отвечать за работу с файловой системой мобильного устройства, второй — за подключение/отключение устройств.

Интерфейс наших классов

Реализация MobileDeviceServer простая, поэтому приведу ее здесь полностью. Основная задача этого класса — получать уведомления от MobileDevice.framework о подключении/отключении устройств и формировать список подключенных, что бы потом хендлер устройства можно было использовать при создании инстанса класса MobileDevice.

@implementation MobileDeviceServer
static MobileDeviceServer * DefaultServer = nil;
static void AmDeviceNotificationCallback(struct am_device_notification_callback_info * info)
if (info->msg == ADNCI_MSG_CONNECTED)
< // Новое устройство
MobileDevice * device = [[MobileDevice alloc] initWithDevice: info->dev];
[device connect];
[DefaultServer->MobileDevices addObject: device];
>
else if (info->msg == ADNCI_MSG_DISCONNECTED)
< // Отключили устройство
for (int i = 0; i < [DefaultServer->MobileDevices count]; ++i)
< // Ищем его в своем списке и удаляем
if (((MobileDevice *)[DefaultServer->MobileDevices objectAtIndex: i])->dev == info->dev)
[DefaultServer->MobileDevices removeObjectAtIndex: i];
break;
>
>
>
>
+ (MobileDeviceServer *) delfaultServer
if (DefaultServer == nil)
DefaultServer = [[MobileDeviceServer alloc] init];
// Тут будем хранить список подключенных устройств
DefaultServer->MobileDevices = [[NSMutableArray alloc] init];
// Подпишемся к уведомлениям от MobileDevice.framework
struct am_device_notification * subscription;
if (AMDeviceNotificationSubscribe(&AmDeviceNotificationCallback, 0,0,0,&subscription) != 0)
< // Не получилось :(
[DefaultServer->MobileDevices release];
[DefaultServer release];
DefaultServer = nil;
>
>
return DefaultServer;
>
@end

В качестве примера работы с девайсом через AFC приведу реализацию метода downloadFile класса MobileDevice. Всю реализацию приводить здесь смысла нет, но ты можешь найти ее на диске.

- (BOOL) downloadFile: (NSString *) remote_path toLocation: (NSString *) local_path
if (conn == nil) return FALSE;
afc_file_ref file_ref;
if (AFCFileRefOpen(conn, [remote_path cString], AFC_MODE_READ, 0, &file_ref) != 0)
return FALSE;
FILE * local_file = fopen([local_path cString], "w");
if (local_file == NULL)
AFCFileRefClose(conn, file_ref);
return NO;
>
char buffer[10000];
int len;

do
len = sizeof(buffer);
if (AFCFileRefRead(conn, file_ref, buffer, &len) != 0)
fclose(local_file);
AFCFileRefClose(conn, file_ref);
return NO;
>
fwrite(buffer, len, 1, local_file);
> while(len == sizeof(buffer));

fclose(local_file);
AFCFileRefClose(conn, file_ref);
return YES;
>

Заключение

Теперь, зная, как из Mac OS X получить доступ к файловой системе мобильных устройств Apple, для тебя несложно будет написать подобие iPhone folders и других альтернативных утилит. Дополнительным плюсом работы с iPod/iPhone из Mac OS X является то, что нет необходимости устанавливать стороннее программное обеспечение, как в виндах (iTunes, Apple mobile device support и так далее). Все будет работать на голой системе с диска.

Вы можете выбрать информацию, которая будет синхронизироваться между Mac и другим устройством. Можно синхронизировать все объекты определенного типа (например, все фильмы или фото). Либо можно синхронизировать конкретные объекты (например, определенные фильмы и определенные книги)

Контент, который Вы выбрали для синхронизации, будет обновляться при каждой синхронизации устройства с Mac.

Чтобы впервые настроить синхронизацию, нужно подключить устройство к Mac через кабель USB или USB-C. Когда устройство подключено, его значок появляется в боковом меню Finder, а при выборе значка отображаются варианты синхронизации. Вы можете выбрать объекты для синхронизации.

На iPhone (c iOS 5 или новее) или iPad также можно настроить беспроводную синхронизацию с Mac, когда устройство и Mac подключены к одной сети Wi-Fi. Синхронизация контента с Mac на iPhone или iPad по сети Wi-Fi.

Синхронизация всего контента определенного типа

Подключите устройство к компьютеру Mac.

Устройство можно подключить через кабель USB или USB-C либо через Wi-Fi. Синхронизация контента с Mac на iPhone или iPad по сети Wi-Fi.


В Finder на Mac выберите устройство в боковом меню Finder.

Устройство выбрано в боковом меню Finder.

Если устройство подключено к Mac посредством USB‑кабеля, но оно не отображается в боковом меню Finder, см. раздел Если устройство не отображается в боковом меню.

В панели кнопок выберите тип контента, который хотите синхронизировать.

Панель кнопок, в которой есть кнопка «Основные» и кнопки различных типов контента, в том числе музыки, фильмов и телешоу.

Примечание. Если Вы пользуетесь Фото iCloud и Apple Music, Ваши фото и музыка автоматически синхронизируются через iCloud. При нажатии варианта «Музыка» или «Фото» не отображаются варианты синхронизации.

Установите флажок «Синхронизировать [тип контента] на [имя устройства]», чтобы включить синхронизацию объектов соответствующего типа. Например, установите флажок «Синхронизировать фильмы на [имя устройства]», чтобы синхронизировать фильмы.

Установлен флажок «Синхронизировать фильмы на [устройство]». Под ним установлен флажок «Автоматически включать», и во всплывающем меню выбран вариант «все».

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

Повторите шаги 3 и 4 для каждого типа материалов, которые хотите синхронизировать.

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

Когда будете готовы, нажмите кнопку «Применить».

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

ПРЕДУПРЕЖДЕНИЕ. При удалении автоматически синхронизированного объекта с Mac он будет удален и с устройства при следующей синхронизации.

О синхронизации отдельных объектов, а не всех объектов определенного типа см. в следующих разделах:

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