исходный код приложения для ios
Как просматривать исходный код веб-страницы с iPhone или iPad
Предвзятое отношение профессионалов к iOS как операционной системе, абсолютно непригодной для работы, тянется из глубины времен и живет скорее по наитию, чем по причине сколь-нибудь веских оснований. Вся прелесть мобильной ОС от Apple кроется в приложениях, большинство из которых способны выполнять вполне десктопные задачи, позволяя не только сочинять музыку и монтировать видео, но даже просматривать HTML-код.
Название: HTML Viewer Q
Издатель/разработчик: Spica
Цена: Бесплатно
Встроенные покупки: Нет
Совместимость: Универсальное приложение
Ссылка: Установить
Новости, статьи и анонсы публикаций
Свободное общение и обсуждение материалов
Лонгриды для вас
Ускорение видеозаписей, видеозвонки на 1000 зрителей, новый механизм восстановления пароля — все это, а также многое другое вы можете найти в новом обновлении приложения Telegram.
Разработчики Сбера выпустили приложение AI Resp, которое должно определять COVID-19 по кашлю, дыханию и голосу с точностью до 82%. Должно — потому что не всегда ему это удаётся.
WhatsApp впервые оштрафовали в России за отказ от локализации данных россиян. Сумма штрафа составила 4 миллиона долларов. Если мессенджер не устранит нарушение, размер штрафов будет расти, а итогом для него станет блокировка
Как мы публиковали iOS приложение для видеочата в App Store
В этой статье мы расскажем как собирали свое первое WebRTC-приложение для iOS и размещали его в App Store, с чем пришлось при этом столкнуться и что из этого вышло.
Зачем
Мы занимаемся тем, что пилим WebRTC медиасервер и три SDK для работы с сервером: Web, Android, iOS.
С каждым SDK идет несколько примеров. Например для iOS SDK есть 11 примеров приложений, исходники которых доступны здесь.
Разработчик берет пример по ссылке, убеждается, что пример работает и уже после этого собирает пример из исходников и начинает его видоизменять / встраивать SDK в свое приложение для работы с потоковым видео.
Такой подход, как «посмотрел демку — собрал — внедрил» прекрасно работает практически везде, но не с Apple. Вы не можете сбросить ссылку любому желающему протестировать ваше приложение до тех пор, пока оно не будет опубликовано в App Store.
Возможно мы пишем здесь простые истины, которые уже давно пройдены всеми iOS разработчиками и издателями, но для нас это было небольшим сюрпризом.
Без публикации в App Store никто не сможет установить ваше приложение, пока UDID вашего устройства (iPhone) не будет внесен в список.
Т.е. Для того, чтобы дать потестировать приложение кому-то, вы должны сначала попросить этого кого-то дать вам UDID устройства, внести его в список на сайте developer.apple.com, пересобрать приложение в Xcode, выложить, и только после этого давать ссылку на скачивание этому конкретному человеку.
Такой метод распространения называется adhoc. В принципе это удобно, внутри команды — один раз вписать всех разработчиков и тестировщиков. Но это жутко неудобно, если вам нужно предоставить доступ к тестовому демо-приложению всем желающим.
В результате, было принято решение опубликовать наше демо-приложение в App Store, дабы дать всем желающим возможность его потестить и понять как оно работает, не затрачивая времени на сборку из сурсов.
Приложение
В качестве пилотного приложения взяли Two Way Streaming, которое выглядит так:
Это простое приложение позволяет делать всего три вещи:
Исходный код приложения доступен по этой ссылке и требует WCS iOS SDK в качестве зависимости. Процесс сборки приложения и всех остальных примеров, с вытягиванием сурсов, описан на странице SDK. Поэтому на сборке мы заострять внимание не будем, а перейдем сразу к описанию публикации в App Store.
Публикация
1. Начнем с самого главного — с иконок. Делаем иконки с максимальным размером 1024×1024 и добавляем в Xcode.
С иконками вышла незадача, т.к. самую крупную иконку решили сделать немного другой и по этой причине наше приложение было впервые отклонено, но об этом позже.
2. Создаем App Record — заполняем карточку приложения.
Заполнение формы процесс не сложный., поэтому предлагаем ознакомиться с ним на сайте Apple.
3. Добавляем скриншоты.
Так как, у нас демо-приложение, мы не стали долго раздумывать и просто подфотошопили скриншоты под требуемые размеры:
Это можно сделать с использованием Application Loader для выгрузки приложения в iTunes Connect.
1) Открываем Xcode меню и кликаем Open Developer Tool / Application Loader
2) Логинимся со своим Apple ID
3) Нажимаем «Deliver Your App».
4) Выбираем приложение ipa, кликаем Send и ждем окончания загрузки.
5. Отправляем загруженное приложение на модерацию в iTunes Connect
Здесь нужно будет ответить на три вопроса. Немного погуглив, мы вписали No во все три ответа:
Is your app designed to use cryptography or does it contain or incorporate cryptography? | No |
Does your app contain, display, or access third-party content? | No |
Does this app use the Advertising Identifier (IDFA)? | No |
На самом деле, наше приложение активно использует шифрование, а именно AES и HTTPS / Websocket. Но гугл дал ответ о том, что это про кастомное шифрование, выходящее за рамки стандартных технологий AES, HTTPS. Поэтому поставили No, как и для двух остальных вопросов.
В результате приложение ушло на модерацию, а мы занялись своими делами.
Траблы
После того, как приложение отправилось на модерацию, на почту может прийти нотификация об отклонении сборки — Binary Rejected.
1. Первый реджект не заставил себя долго ждать и буквально в этот же день пришло сообщение.
We have started the review of your app, but we are not able to continue because we need access to a video that demonstrates your app in use on an iOS device.
Пришлось записать короткое демонстрационное видео и выложить его на YouTube. Видеоролик записан с экрана мобильного устройства и показывает как функционирует данное мобильное приложение.
2. Второй трабл, как мы и писали, был связан с иконкой. Мы установили в качестве крупной иконки такую:
А в качестве мелких иконок такую:
Оказывается так делать нельзя, потому что вводит пользователей в заблуждение.
We noticed the app icon displayed on the device and the large icon displayed on the App Store do not sufficiently match, which makes it difficult for users to find the app they just downloaded.
3. Разобраться с иконками и записать видео для демонстрации приложения было делом недолгим, и в этот же день мы снова отправили приложение на модерацию.
Следующий реджект пришел через четыре дня и был, с первого взгляда, более непонятным:
Your app declares support for audio in the UIBackgroundModes key in your Info.plist but did not include features that require persistent audio.
The audio key is intended for use by apps that provide audible content to the user while in the background, such as music player or streaming audio apps. Please revise your app to provide audible content to the user while the app is in the background or remove the «audio» setting from the UIBackgroundModes key.
Здесь утверждается, что наше приложение декларирует поддержку аудио в UIBackgroundModes, но при этом не имеет фич, которые бы требовали воспроизведения аудио в бэкграунде. Имеется в виду, что если при работе приложения переключиться на другое приложение либо нажать кнопку Home, то аудио будет продолжать играть, и это называется audio in the UIBackgroundModes, т.е. функция, актуальная например для воспроизведения музыки.
Чтобы не спорить с модераторами Apple и не доказывать, что наше приложение Two Way Streaming тоже способно играть аудио / видеопотоки в бэкграунде, мы просто отключили декларацию этой фичи.
4. Аналогичное требование, касающиеся работы в UIBackgroundModes было по функции VoIP. Наше приложение декларировало поддержку VoIP в бэкграунде, а модераторы заподозрили наше приложение в отсутствие VoIP.
Your app declares support for VoIP in the UIBackgroundModes key in your Info.plist, but it does not include any Voice over IP services.
To resolve this issue, please revise your app to either add VoIP features or remove the «voip» setting from the UIBackgroundModes key.
Формулировка «revise your app to add VoIP features» нам не очень понравилась, т.к. пришлось бы доказывать и показывать модераторам, что у нас есть VoIP функции и им необходимо работать в UIBackgroundModes. Поэтому чтобы ускорить процесс, мы отключили VoIP in UIBackgroundModes, пересобрали приложение и снова отправили на модерацию.
Отключение UIBackgroundModes
Для отключения, мы проводили все манипуляции с файлом Info.plist, который для adhoc-раздачи выглядел так.
После подготовки его для публикации в App Store, конфиг стал выглядеть так.
И сейчас, после удаления UIBackgroundModes, конфиг имеет такой вид:
Через пару дней пришло сообщение о том, что наше приложение заапрувили и теперь оно имеет статус Ready For Sale и скоро появится в App Store.
The following app has been approved and the app status has changed to Ready for Sale:
App Name: TwoWayStreaming
App Version Number: 1.0
App Type: iOS
В результате публикация приложения заняла 1 неделю и потребовала корректировки следующих проблем:
Теперь любой желающий сможет установить апп и провести тесты.
Надеемся, что эта статья поможет при публикации вашего собственного приложения с аудио и видео функциями и ваше приложение попадет в App Store намного быстрее.
Ссылки
Two Way Streaming for iOS — демо приложение Live-стриминга для iOS
Source — исходный код
Two Way Streaming for Web — тоже самое приложение для Web
Source — исходный код
Two Way Streaming for Android — тоже самое приложение для Android
Source — исходный код
Web Call Server — WebRTC сервер, через который работает приложение Two Way Streaming
WCS iOS SDK — описание процесса сборки примеров в Xcode для iOS.
iOS-разработка: способы быстрого старта
Когда мы задумываемся о разработке под iOS, чаще всего в голове возникает пятизначная сумма входного порога: как минимум нужно iOS-устройство на последней версии ОС и Mac. Если вы уже пишете под iOS, вам наверняка известны альтернативные варианты, а если нет — посмотрите, вдруг пригодится? Приведенный ниже обзорный пост — как раз на этот случай. Под катом вы найдете довольно простую информацию, так что если хотите хардкорчика, вам не сюда!
Путь от Apple
Путь настоящего джедая тру iOS-разработчика лежит в плоскости следования идеям Apple. Свежий SDK, свежая же версия Xcode, документация от Apple по технологиям Apple, форумы разработчиков на технологиях Apple – если вдуматься, а что ещё нужно для создания отличного приложения, кроме толики времени? Польза очевидна: разработка идет самым близким к платформе и к идеологии Apple образом, с использованием всех новинок, предлагаемых Apple в текущем (и будущих) iOS API, так что постоянное изучение нового приносят больше хорошего, чем плохого.
Новинки Apple озвучивает регулярно. На последней конференции для разработчиков WWDC 2017 были показан новый SDK и новая версия среды для разработке Xcode. Список изменений довольно обширен (тем более в преддверии выхода iOS 11):
Xcode
Текстовый редактор в Xcode переписали на Swift, сделав его надёжнее и быстрее. Можно ли это почувствовать? Да! Подсветка синтаксиса работает (почти) моментально, открытие и навигация по файлу теперь без заметных задержек, а сообщения об ошибках больше не перекрывают исходный код. В beta все выглядит очень приятно, посмотрим, что нас ждет в релизе!
В Xcode появилась поддержка Markdown. Разметку можно использовать при документировании кода, и функциональность эта, на первый взгляд, косметическая, довольно заметно облегчает чтение кода, особенно чужого:
(Источник)
Редактор, кстати, научился подсвечивать блоки кода, удобно при изучении большого объёма кода.
(Источник)
Ещё одной важной фичей Xcode 9 стал рефакторинг кода на Swift, Objective-C, Objective-C++, C. Рефакторинг позволяет переименовывать классы, переменные, а также дробить методы на менее крупные.
(Источник)
Из менее выделяющихся, но тем не менее полезных фич, можно назвать:
Swift 4
Это изменение стоит особняком. Все, кто уже пережил чувство «в Swift 2 было, в Swift 3 пропало?!», могут ощутить дежавю, но сейчас ожидаются изменения, скорее, в лучшую сторону (впрочем, замечу вполголоса, когда это было не так, по мысли авторов-то?)
«Гибридное», «не совсем нативное» приложение
Уточню: термин, вынесенный в заголовок, даже по сути своей не очень верен. Приложения, которые мы получим в результате, самые что ни на есть нативные в смысле того, что они исполняются на той же iOS, на том же железе, что и любое другое ПО для iOS, просто сам процесс разработки позволяет использовать не только предложенные Apple технологии и языки программирования. Если человек умеет писать, скажем, на JavaScript, и не хочет разбираться в Swift, то Apple ему ничем не поможет (кроме, конечно, хорошего учебника по Swift), а вот вариант написать, условно говоря, приложение на JavaScript, а потом запустить его на iOS, как если бы оно было написано в Xcode (получив, таким образом, некий «гибридный» вариант) существует, и вполне востребован.
Ionic
Ionic – один из самых известных фреймворков для кросс-платформенной разработки. Он построен на базе Apache Cordova, что обеспечивает доступ к различным функциям устройства, таким как геолокация, push-уведомления, камера и прочим, и позволяет разработчикам создавать приложения для iOS и Android с веб-технологиями, такими как HTML, CSS и JavaScript.
В дополнение к фреймворку, Ionic может похвастаться целой экосистемой, облегчающей разработчикам-новичкам процесс изучения и вхождения. Ionic Cloud предоставляет разработчикам различные инструменты для управления, развертывания и масштабирования приложений на Ionic. Ionic Creator представляет собой визуальный редактор, который позволяет разработчикам быстро прототипировать и создавать мобильные приложения методом drag&drop. Наконец, существует Ionic View — бесплатное приложение для iOS и Android, которое позволяет разработчикам легко делиться своим Ionic-приложением с пользователями, тестерами и клиентами без необходимости развертывать приложение в магазине приложений конкретной мобильной платформы. Разработчики просто отправляют пользователям приглашение из приложения Ionic View, и как только оно принято, пользователь может загрузить и запустить конкретное приложение в своей копии Ionic View — так, как если бы приложение было установлено на его телефоне из магазина приложений.
Увы, есть и «ложка дегтя». Приложения, написанные с использованием Ionic, используют WebView, в результате мы получаем самое натуральное веб-приложение, со своей обычной (обычно не самой впечатляющей) скоростью работы. За счет этого трудно считать его подходящим для создания тяжелых приложений, таких, как игры, либо программы с интенсивным использованием графики. Разработка с Ionic требует хороших знаний Angular, по крайней мере при желании «выжать» из фреймворка как можно больше.
PhoneGap / Cordova
PhoneGap исходно был создан компанией Nitobi. В 2011 году, Adobe приобретает Nitobi и бренд PhoneGap. Adobe затем передает одну из версий PhoneGap (назвав её Cordova), в Apache Foundation, оставив себе бренд PhoneGap и его как продукт. В результате Cordova можно рассматривать как движок, стоящий под капотом PhoneGap (а также некоторе другие гибридные фреймворки). PhoneGap, в свою очередь, добавляет к возможностям Cordova свои, дополнительные, функции.
PhoneGap во многих отношениях очень похож на Ionic. Он так же дает разработчикам возможность создавать кросс-платформенные приложения при помощи веб-технологий, и так же построен на базе Apache Codova. Однако PhoneGap не привязан к какому-то определенному Javascript-фреймворку, поэтому разработчики имеют бОльший выбор, на чем и как они будут создавать свои приложения. У PhoneGap имеется десктопное приложение, мобильное приложение, и облачный сервис под названием PhoneGap Build, который позволяет собирать и деплоить приложение.
Увы, подобно Ionic, PhoneGap использует WebView (который в iOS работает довольно медленно), так что со скоростью у приложений, созданных на базе этого фреймворка, дела не всегда обстоят блестяще.
Xamarin
Основанная в 2011 году компания Xamarin, выпускающая семейство продуктов Xamarin через пять лет своего существования была купена компанией Microsoft. Сегодня продукты Xamarin представляют на рынке очень интересный подход к разработке кросс-платформенных мобильных приложений: приложения пишутся на C#, затем Xamarin компилирует его в нативное приложение для iOS, либо для Android, при этом в качестве базовой технологии Xamarin использует Mono, чем кросс-платформенность и обеспечивается. Разработчики Xamarin говорят, что полученные на выходе приложения используют нативное API платформы, для которой приложение компилируется, так что поведение полученного приложения никак не отличается от поведения любого другого приложения на этой же платформе. Разработку, кстати, можно вести при помощи Visual Studio (что совсем неудивительно).
Несмотря на то, что большая часть кода проекта может быть без изменений использована на каждой из поддерживаемых мобильных платформ, тем не менее, некоторые фрагменты потребуется писать специально для версии приложения под iOS и под Android.
React Native
Проект React Native появился на свет в Facebook, и построен на основе React. Наше JS-приложение крутится на встроенном в iOS движке: на нем выполняется код и производятся все манипуляции с нативными виджетами ОС. React Native сопоставим с Xamarin, при этом приложения, созданные с помощью React Native, очень похожи на нативные приложения iOS и Android (потому что они собственно, оперируют нативными UI-элементами).
Синтаксис React довольно прост, что облегчает изучение фреймворка, а Стандартная библиотека UI-компонентов в поставке React Native содержит много полезных компонентов, однако самым большим отличием React Native от других JavaScript-фреймворков называют возможность использования кода на на Objective-C и Swift (чаще для для улучшения производительности или более тонкого взаимодействия с мобильной платформой). На практике это означает, что разработчики могут использовать существующие собственные библиотеки в своих приложениях React Native.
Веб, чистый веб
Часто недооцениваемая возможность использовать веб-страницу как отдельное приложение тем не менее к нашим услугам: если нет особых проблем со связью, а приложение обладает несложной функциональностью (вывод таблицы данных, или вывод постоянно обновляемого списка), то нет причин не воспользоваться старым добрым веб-просмотром информации с сервера.
Разница между открытием той же страницы в браузере будет в оформлении экрана: элементы управления браузера (в т.ч. и адресная строка) будут спрятаны, а содержимое страницы окажется выведенным на весь экран устройства. Из неудобств нас, конечно, ждет довольно долгое время открывания такого «приложения» (что связано со скоростью ответа удаленного веб-сервера), но для ряда применений это, думаю, вовсе не проблема.
Разработка приложений для мобильных платформ имеет свой подвох: поначалу думаешь, что дело не стоит усилий и времени, затем твоим приложением начинают пользоваться люди, причем пользоваться, в буквальном смысле нося его с собой, и вот тут ты понимаешь, что дело оказалось глубже, и затянуло тебя больше, чем ты мог бы себе представить.
Если вы любите мобильную разработку так же, как любим ее мы, рекомендую обратить внимание на следующие доклады Mobius 2017 Moscow (да-да, в ноябре Мобиус едет в Москву, если вы еще не знали):
Приложения iPhone с открытым кодом
В данной статье речь пойдет о приложениях с открытым кодом, которые размещены в App Store. Мы будем рассматривать только приложения которые одобрены компанией Apple и опубликованы. Начинающие разработчики могут изучать их код для повышения своих навыков.
1. ABC 123 – Простенькая игра на развитие памяти. ИспользуетCocos2D. (itunes link) (source code)
2. Colloquy – Порт известного Mac IRС клиента на iPhone. (itunes link) (source code)
3. Diceshaker — Симулятор броска кубиков (дайсов) для фанатов ролевых игр. (itunes link) (source code)
5. Freshbooks – Приложение, которое позволяет использовать веб-сервис Freshbooksдля выставления счетов прямо с вашего iPhone. (itunes link) (source code)
6. Gorillas – Классчиеская игра наподобии Вормсов/Танчиков. ИспользуетCocos2D. (itunes link) (source code)
7. Last.fm –Приложение позволяющее использовать персональные радиоканалы сервиса Last.fm(itunes link) (source code)
9. Molecules – Приложение позволяет просматривать 3Д модели молекул и управлять ими касаниями экрана. (itunes link) (source code)
10. Mover – Приложение, которое позволяет перемещать данные между двумя различными iTouch устройствами (itunes link) (source code)
12. NowPlaying – Позволяет вам получать местные афиши и смотреть критику идущих показов с сайтов RottenTomatoes и Metacritic (itunes link) (source code)
13. Packlog – iPhone — клиент для популярного сервиса BackPak. (itunes link) (source code)
14. PocketFlix – Приложение позволяет осуществлять поиск и управлять своим аккаунтом в сервисе Netflix. (itunes link) (source code)
16. Task Coach – Приложение для управления временем и задачами. (itunes link) (source code)
17. Tubestatus – Расписание лондонских электричек. (itunes link) (source code)
18. Tweejump – Игра-попрыгушка вдохновленная твиттером и игрой Icy Tower. Использует Cocos2D.(itunes link) (source code)
19. Tweetero – Простенький твиттер — клиент с поддержкой загрузки изображений. (itunes link) (source code)
20. Twitterfon – Супер быстрый твиттер клиент (itunes link) (source code)
21. Wikihow – Ридер для популярной вики. (itunes link) (source code available by e-mail from support@wikihow.com)
22. WordPress – Официальный клиент для движка WordPress. (itunes link) (source code)
23. YourRights – Карманный справочник по вашим правам.(itunes link) (source code)
Update
24. BookShelf — читалка электронных книг для iTouch — устройств. (itunes link) (source code)
25. iOctocat — клиент для популярного хостинга исхоного кода GitHub (itunes link) (source code)
27. MobileTerminal — терминал для iphone/ipod touch (source code)
30. iPhone-wireless — сканер wifi-сетей, обещают скоро поддержку так же GSM-вышек и bluetooth — точек. (source code)
31. Waze — программа навигации для iphone, необычная тем, что вы не только пользуетесь картами сервиса, но и сами создаете карту своими поездками закрывая «белые» пятна сервиса и получая бонусные очки. (itunes link) (source code)
32. AppsAmuck — подборка простеньких приложений с исходным кодом для начинающих азработчиков, просто кликните на иконку приложения и следуйте инструкциям.
33. Siphone — бесплатное VoIP — приложение с минималистичным функционалом, использует популярную библитеку pjsip, спасибо @astarovoitov
34. OmniFrameworks — набор инструментов от OmniGroup с открытым кодом для разработки под iPhone и Mac, спасибо mirkitanov
35. iRdesktop — RDP клиент для iPhone OS. (source code) (itunes link), спасибо спасибо icesik
36. Battle For Wesnoth – Фентезийная тактическая пошаговая RPG доступная для нескольких платформ ранее, а теперь и для iPhone/iPad. (itunes link) (source code)
37. Artifice – Логическая игра в которой вам необходимо достичь противоположного конца экрана передвигая коробки на своем пути. Использует Cocos2D. (itunes link) (source code)
38. Countitout -Приложение для ведения счета. (itunes link) (source code)
39. Ecological Footprint — Приложение для подсчета вашей экологической эффективности (itunes link) (source code)
40. Fosdem — Приложение календарь для конференции Fosdem(itunes link) (source code)
41. Go Go Lotto –Приложение для генерации билетов Лото (itunes link) (source code)
43. PlainNote — Простой текстовый редактор (itunes link) (source code)
44. Puff Puff – Красивая игрушка в подводном мире, использует Cocos2D и OpenFeint. (itunes link) (source code)
45. reMail – Емейл клиет с очень быстрым поиском по почте, удален из AppStore, исходные коды доступны. (source code)
46. RobotFindsKitten – Порт классической ASCII — игрушки. (itunes link) (source code)
47. SpaceBubble – Космическая игра, использующая Core Grafics и акселерометр телефона. (itunes link) (source code)
48. Star3Map – Приложение дополненной реальности для поиска созвездий на звездном небе. (itunes link) (source code)
49. Tux Rider – Порт популярной 3Д игры Tux Racer. (itunes link) (source code)
50. Tweetee – Расширенная версия твиттер-клиента Natsulion.(itunes link) (source code)
51. ViralFire — Приложение, в котором вам надо выступать в качестве клетки крови и бороться с вирусами. (itunes link) (source code)
53. Xpilot – Классическая игрушка — аркадный шутер. (itunes link) (source code)
54. ZBar –Сканнер баркодов с исходными кодами. (itunes link) (source code)