Обновить
65.74

iOS *

Мобильная ОС компании Apple

Сначала показывать
Порог рейтинга
Уровень сложности

Дайджест интересных материалов для мобильного разработчика #80 (17-23 ноября)

Время на прочтение3 мин
Охват и читатели13K
Восьмидесятый выпуск дайджеста получился ударным — на этой неделе вышли WatchKit и Android Auto API, русский учебник по Swift и руководство для разработчиков от Google, закрылся Nokia Store, а сама Nokia представила свой планшет на Android.

Читать дальше →

Apple Watch. Что можно и чего нельзя в приложениях, разбор SDK

Время на прочтение3 мин
Охват и читатели31K
После официального анонса Apple Watch многие остались в недоумении — что же это такое, почему вокруг этого столько шума и действительно ли сдулся Apple. Было совершенно непонятно, зачем же эта штука нужна, что в ней такого особенного и чем она будет лучше других часов от конкурентов? Маркетинговая болтовня Тима Кука и попытки рисовать на этом девайсе не убедили совершенно.



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

Результаты исследование несколько озадачили.
Читать дальше →

Изучаем WatchKit — создаем первое приложение для Apple Watch

Время на прочтение4 мин
Охват и читатели26K
Буквально пару дней назад Apple выпустила Xcode 6.2 с поддержкой iOS 8.2 beta и WatchKit.
Данный фреймворк предназначен для взаимодействия с Apple Watch и разработки приложений для них.
Впрочем, все не так просто.
Читать дальше →

Реактивное программирование на Swift

Время на прочтение1 мин
Охват и читатели17K
В конце октября в Москве прошла наша первая конференция мобильных разработчиков #MBLTDev. 17 докладчиков из Англии, Германии, Голландии, Дании, России и США пришло послушать более 300 человек.

Мы будем постепенно выкладывать записи докладов с презентациями и начнем с доклада канадского блоггера Эша Фюрроу «Реактивное программирование на Swift». Помимо ведения блога, Эш является iOS-разработчиком онлайн галереи Artsy и автором нескольких книг про iOS-разработку.


Презентация

В своем докладе Эш познакомил аудиторию с основами фреймворка ReactiveCocoa, проиллюстрировав их примерами на Swift. Также, он рассказал о приложении, над которым он в данное время работает в Artsy с использованием этих инструментов. Приложение, что примечательно, с открытым исходным кодом и доступно на GitHub.
Читать дальше →

Учить Swift теперь стало проще

Время на прочтение1 мин
Охват и читатели27K
После того, как Apple представила абсолютно новый язык программирования Swift, он не перестает быть предметом активного обсуждения на форумах разработчиков и в курилках dev-конференций. Учить язык можно уже сейчас — Apple соорудила подробный мануал по своему детищу. Правда, только на английском.

Недавно к нам обратился клиент, который хотел исправить этот недостаток и перевести документацию по Swift на русский язык. Благо переводчикам в Alconost не привыкать к задачам по техническому переводу с обилием IT-шной терминологии. Результат порадовал и нас, и клиента: первые главы уже ждут читателей по этой ссылке, вэлкам!

Мы надеемся, что наши усилия по переводу будут востребованы разработчиками. Да и хаб по Swift не зря на Хабре появился. И все же интересно узнать ваше мнение:

Ciklum iOS Practice Leaders Meet-Up // Architecture in iOS, Днепропетровск, 20 ноября

Время на прочтение1 мин
Охват и читатели1.9K
20 ноября Днепропетровский офис Ciklum принимает гостей из Харькова: Алексей Демедецкий, iOS разработчик с более чем 4 летним опытом в области разработки бизнес приложений, выступит в рамках iOS Practice Leaders Community.
Доклад будет посвящен теме архитектуры в iOS приложениях.


image
Читать дальше →

Проверка уязвимости Masque в iOS

Время на прочтение3 мин
Охват и читатели6.9K
Недавно опубликована статья, относящаяся к т. н. «Masque» уязвимости в iOS. Выдержка из статьи:
«Уязвимость позволяет установить вредоносное приложение поверх уже существующего, причем это новое приложение получит доступ ко всем файлам предыдущего. Это при условии того, что устанавливаемое приложение будет иметь тот же самый идентификатор «bundle identifier», который iOS & OS X используют для идентификации приложений на уровне ОС, например, при доставке им обновлений. Уязвимости подвержены все версии iOS начиная с 7.1.1, включая, последнюю iOS 8.1.1 beta.»

Мне, как человеку, не понаслышке знакомому с Enterprise сертификатами, захотелось непременно опровергнуть/доказать настоящий факт.

Итак, что известно про Enterprise лицензию:
Читать дальше →

Дайджест интересных материалов для мобильного разработчика #79 (10-16 ноября)

Время на прочтение3 мин
Охват и читатели14K
Интересная неделя с множеством интересных материалов. Мы снова обсуждали баны Google Play, разбирались в HomeKit, запускали Windows 98 на iPhone 6, следили за конференциями для разработчиков Samsung и Microsoft, наконец, заваривали чай и варили кофе в умных чайниках.

Читать дальше →

Что может быть проще кнопки?

Время на прочтение6 мин
Охват и читатели17K
Safe Trip — сервис поддержки путешественников
Кейс разработки мобильного приложения, которое сводит обращение в страховую до одного action point


Читать дальше →

[Перевод] The Home Kit Framework — Подробнее о протоколе домашней автоматизации от Apple

Время на прочтение4 мин
Охват и читатели29K
Всем привет! Хочу поделиться переводом статьи, интересной для многих увлекающихся системами умных домов и любителей Apple.



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

Каждую неделю на Kickstarter'е появляются системы умных домов. Кажется, что все в отрасли хотят изобрести свой собственный велосипед.

На протяжении многих лет мы часто задавались вопросом, что произойдет, если компания Apple перенесет свой знаменитый пользовательский опыт на системы умного дома.
Читать дальше →

#MBLTDev 2014 глазами простого iOS-разработчика из Тинькофф Банка

Время на прочтение8 мин
Охват и читатели11K
Москва • 28 октября 2014 • Digital October

Хоть и с опозданием, решил поделиться с вами своими впечатлениями от посещения #MBLTDev 2014. Отличная конференция, надеюсь, кому-то пригодятся мои заметки.



Читать дальше →

Создание универсального UIAlertController'а для различных версий iOS

Время на прочтение7 мин
Охват и читатели15K
Одними из самых востребованных классов в UIKit до выхода iOS версии 8 являлись UIAlertView и UIActionSheet. Наверное, каждый разработчик приложений под мобильную платформу от Apple рано или поздно сталкивался с ними. Показ сообщений или меню выбора действий — это неотъемлемая часть практически любого пользовательского приложения. Для работы с этими классами, а точнее для обработки нажатий кнопок, программисту требовалось реализовывать в своем классе методы соответствующего делегата — UIAlertViewDelegate или UIActionSheetDelegate (если не требовалось чего-то сверх, то достаточно было реализовать метод clickedButtonAtIndex). На мой взгляд это очень неудобно: если внутри объекта создавалось несколько диалоговых окон с разными наборами действий, то их обработка все равно происходила в одном методе с кучей условий внутри. С выходом 8 версии iOS в составе UIKit появился класс UIAlertController, который пришел на смену UIAlertView и UIActionSheet. И одной из его главных отличительных черт является то, что вместо делегатов он использует блочный подход:

    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Hello" message:@"Habr!" preferredStyle:UIAlertControllerStyleAlert];
    
    [alertController addAction:[UIAlertAction actionWithTitle:@"Action" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
        // код обработчика кнопки
    }]];

Такой подход позволяет писать более структурированный и логичный код. Отныне программисту больше не требуется разделять создание диалогового окна и обработку событий — UIAlertController устраняет это недоразумение, но одновременно с этим привносит историческую несправедливость из-за невозможности использования в iOS 7 и более ранних версиях. Решить эту проблему можно несколькими способами:

  • Не обращать внимание на UIAlertController и продолжать использовать устаревшие UIAlertView и UIActionSheet.
  • Использовать нестандартные диалоговые окна. Программист либо пишет собственную реализацию, что приводит к увеличению временных затрат, либо подключает сторонние компоненты (например, SIAlertView), использование которых имеет ряд недостатков:
    1. программные модули с хорошей поддержкой можно пересчитать по пальцам (зачастую их создатели быстро забрасывают это неблагодарное дело);
    2. если в проекте используются несколько компонентов от разных разработчиков, то при их взаимодействии могут возникать проблемы (редко, но это возможно).

  • Проверять версию iOS и создавать либо UIAlertController, либо UIAlertView или UIActionSheet.

Последний вариант наиболее логичен, и большинство разработчиков, я уверен, выбрали бы именно его, но данный метод имеет существенный недостаток — условие проверки версии операционной системы придется писать каждый раз, когда потребуется отобразить диалоговое окно. Столкнувшись с этим на практике, я создал специальный класс-обертку UIAlertDialog, который позволяет забыть об этой проблеме.
Читать дальше →

Дайджест интересных материалов для мобильного разработчика #78 (2-9 ноября)

Время на прочтение2 мин
Охват и читатели14K
Новостей в связи с праздниками не очень много, но все же: вышла статья о «визуальном» программировании в Xcode, Xamarin представил бесплатные планы для студентов, объявлены финалисты Samsung Gear App Challenge, у Parse вышли Push Experiments и ParseUI. Да, еще же в «Южном парке» вышла серия про free-to-play игры!

Читать дальше →

Ближайшие события

Минимализм Objective-C

Время на прочтение2 мин
Охват и читатели17K
Я часто пишу небольшие тестовые проекты на Objective-C, чтобы поэкспериментировать или поиграться с чем-нибудь. Обычно, я помещаю код в main.m и избавляюсь от всего остального:

#!/usr/bin/env objc-run
@import Foundation;

@implementation Hello : NSObject
- (void) sayHelloTo:name
{
    printf("Hello %s, my address is %p\n", [name UTF8String], self);
}
@end

int main ()
{
    id hello = [Hello new];
    [hello sayHelloTo:@"sunshine"];
}


Это полноценный проект из одного файла, готовый к выполнению. Под катом — описание приемов, позволивших прийти к данному минимализму.
Читать дальше →

«Программирование мышкой» в XCode 6 для Swift

Время на прочтение5 мин
Охват и читатели54K
Привет, Хабрахабр!

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

Дайджест интересных материалов для мобильного разработчика #77 (26 октября-2 ноября)

Время на прочтение2 мин
Охват и читатели13K
Результат прошедшей недели: HTML5 достиг статуса рекомендации, две истории разработки игр, Энди Рубин покинул Google, Microsoft выпустил умный браслет Band. О многом другом – под катом в еженедельном дайджесте.

Читать дальше →

Приглашаем на CocoaHeads Moscow 31 октября

Время на прочтение2 мин
Охват и читатели4.1K


Эта неделя богата на конференции для разработчиков мобильных приложений, но ничто не заменит тёплого общения на пятничном CocoaHeads в офисе Mail.Ru Group — приходи обсудить YaC, MBLTDev и всё, что случилось за этот месяц. Ну и, конечно же, послушать доклады наших спикеров. А спикеров у нас будет трое:

Первым продолжит тему эффективности, начатую в предыдущий раз Олегом Овечкиным, Константин Забелин из компании Забабако, рассказав доклад под названием "Как писать больше кода в Xcode или ещё немного про эффективность". Константин планирует рассказать про то, как можно писать больше кода, используя для этого пару твиков любимой идэешки и системных способов ввода. Также он поделится несколькими рецептами для упрощения жизни разработчиков.
Читать дальше →

О мотивированном и немотивированном трафике в App Store

Время на прочтение4 мин
Охват и читатели14K
Доброго времени суток, Хабр!
На этой неделе ресурсы «Цукерберг Позвонит» и «Планета iPhone» решили поднять тему мотивированного трафика для пиара приложений в App Store. Так как я периодически анализирую пиар-кампании некоторых приложений на российском рынке и достаточно внимательно слежу за лидерами рейтинга игр, решил добавить к этой теме и свои 5 копеек. К сожалению, с публикацией на «Цукерберге», мне ознакомиться не удалось, поскольку ее оперативно удалили. О точных причинах удаления можно только догадываться (говорят, там была авторская колонка основателя сервиса по продаже мотивированного трафика Эдуарда Лебедева, но материал на «Планете» наводит на мысль, что это произошло из-за ложного упоминания некоторых компаний разработчиков, которые к мотивированному трафику не прибегали.
Читать дальше →

Каждому по тысяче: еще раз о Testflight

Время на прочтение2 мин
Охват и читатели60K
Трудно отыскать iOS-разработчика, никогда не пользовавшегося для тестирования своих приложений сервисом TestFlight, или хотя бы не слышавшего о нем. Его популярность в феврале этого года подтвердила сама Apple, купив компанию Burstly, благодаря которой в свое время появился TestFlight.



Как известно, Apple не из тех, кто бросает деньги на ветер — 9 сентября Apple представила TestFlight в App Store уже под своим брендом.
Читать дальше →

Мой опыт размещения игры в App Store

Время на прочтение7 мин
Охват и читатели54K


Привет, Хабрахабр!

В этом топике я хотел бы рассказать о своем первом опыте размещения и продвижения игры в App Store. Не могу назвать его удачным, но, по крайней мере, само по себе наличие опыта, набитые шишки и сделанные выводы — это уже плюс. Я довольно давно занимаюсь разработкой Android-игр, поэтому это будет еще и взгляд со стороны Android-разработчика, который надеюсь, тоже будет кому-то интересен.
Читать дальше →