6 заметок с тегом

iOS

Москва. Метро. Авторизация вайфай

Ура, модераторы наконец апрувнули mauth в Апсторе!

mauth icon  mauth on the App Store

Все посты об этом — по тегу mauth.

Процесс прохождения модерации был очень долгим. Приложение работает стабильно и безопасно, но информации о его работе дважды оказалось недостаточно для review team. Поэтому mauth получил два metadata rejected, и трижды проходил ревью. Все это заняло около месяца.

Поэтому, сейчас в Апсторе более ранняя сборка, которая и была актуальна месяц назад. Она работает по-старому — полуавтоматически, но стабильно.

За время, пока mauth проходил ревью, в Сторе появилось еще одно интересное приложение почти на эту же тему! Метроблок был адблоком для метро; он появился, и — странно — быстро пропал. А еще за год до этого появился легендарный Автовход для Андроидов.

Мне очень нравится, что началась движуха вокруг метрошного вайфая. Это может привести к капитуляции рекламного фашизма, которое нам устроил провайдер вайфая :-) Подробнее об этом мой прошлый пост.

Кстати, на бета-тестирование приложения записалось 410 бета-тестеров! Это мой небольшой личный рекорд, раньше никогда не набиралось больше 20.

Mauth остается моим хобби-проектом, которым я занимаюсь в свободное время, чтобы тратить меньше времени для подключения к сети метро. Хотя, конечно, если дорогой (и клевый) Билайн проведет ЛТЕ во все перегоны, то потребности в вайфае больше не будет ;-) Но впереди много интересных планов!

Open Source! [BY NC SA]

iOS 9 marked difference

We are familiar and well know all Swift changes between 2.0 and 2.1. And also difference between Xcode 6 and 7. But there are some changes between iOS 8 and 9.1 that we can’t ignore. Because... apps became malfunctioned.

CanOpenURL

Most significant and despicable difference is between iOS 9 and 9.1. The canOpenURL does not work as expected anymore. All checks for that are failing at this time.

if app.canOpenURL(url) {
   app.openURL(url)
}

To understand what happened, see this post: Quick Take on iOS 9 URL Scheme Changes.

But TL;DR is that you must explicitly set an array of URL schemes that your app may open. So add a key called LSApplicationQueriesSchemes to your Info.plist. And the value of this key is an array of URL schemes you want to be opened. Like: twitter, fb, instagram, vk.

More generally, xml for this in Info.plist should look like:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>twitter</string>
    <string>instagram</string>
    <string>comgooglemaps</string>
    <string>yandexnavi</string>
</array>

3D Touch

Next big thing is how to fast implement quick actions for 3D-touching app icon.

As I have no 3D Touch devices (have just Force Touch one) and have no expertise in there, I just provide a link where it described very well: Add 3D Touch quick actions tutorial.

See also:

Let’s code!

Авторизация в Московском метро

cover black

Обновлено—2. Приложение для авторизации в метро для iOS появилось Апсторе!

Обновлено. Бета-тестирование завершилось. Спасибо всем за участие! «Москва. Метро. Авторизация вайфай» отправилось в Апстор на проверку. Нет рекламе прокладок в Московском метро! Подписывайтесь на меня в твитере @m4rr — следите за новостями. А пока зацените мой стартап — Paste.

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

Новый логотип вайфая

За две недели в бета-тестирование было выпущено 10 билдов. Спасибо дорогим бета-тестерам за фидбек! Отдельное спасибо @iShift за помощь в построении гипотез, и @r3s3t за прекрасную иконку!

Приложение работает так: телефон подключается к вайфаю в вагоне, вы запускаете приложение, и — вуаля! — приложение автоматически проходит 9 кругов авторизации вместо вас и на айфоне появляется интернет.

Это приложение пока не в Апсторе Если вы хотите его попробовать — напишите мне письмо и я отправлю вам приглашение.

***

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

За время работы над приложением я подробнее узнал про сетевой сервис Captive portal, который для этого и был создан. Как это работает?

Айось, после подключения к вайфаю, делает первый запрос на какой-нибудь captive-check.apple.com, и если получает ожидаемый ответ, то считает, что интернет доступен. Если ответ неожиданный — показывает специальное окно, в котором загружается страница логина. В Старбаксе, например, именно так.

Но разработчики авторизации в метро специально [1, 2, 3] пропускают запрос на каптив-портал, и айось получает ожидаемый успешный ответ. Но если после этого, вы пытаетесь открыть любой сайт, то вместо него вы все равно получаете страницу авторизации! И новости про Coбянинa, конечно.

Короче, я считаю, что это неправильно, и приложение отлично с этим справляется!

Open Source! [BY NC SA]

Дополнение про Size Classes

Сегодня появилась видеозапись моего доклада на августовской встрече разработчиков CocoaHeads Moscow. Ура!

Хочу еще немного добавить про особенности сайз-классов. В докладе я немного упомянул про специальные отступы от границ экрана. Это Leading Margin и Trailing Margin по бокам, и Top и Bottom Layout Guides сверху и снизу.

Leading Margin и Trailing Margin по бокам, и Top и Bottom Layout Guides сверху и снизу.

Например, вы проектируете единый интерфейс для айфона и айпада. И нужно сделать так, чтобы на разных дивайсах у кнопок, расставленных по бокам, были ожидаемые пользователем отступы. Для этого можно расставить кнопки именно относительно ведущего — слева — и замыкающего — справа — отступа. То есть, если нативный отступ слева на айфоне — это 8 пк, а на айпаде — 20 пк, то кнопки автоматически встанут как надо.

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

Кроме того, интересно, что Leading и Trailing Margin меняются местами, если на устройстве установлен какой-нибудь язык, который пишется справа налево (RTL). Для обычных LTR-языков они находятся слева и справа, соответственно.

2014   CocoaHeads   iOS   Xcode

Size Classes

В конце августа, на ежемесячной встрече разработчиков приложений для iOS и OS X CocoaHeads Moscow, я рассказывал про новую концепцию Size Classes, представленную Эплом на WWDC-2014. Это совершенно новый способ построения адаптивных интерфейсов для айос-дивайсов. Немного коснулся интересных тонкостей о том, как их использовать в приложениях на айос-8, и как их бекпортить на айос-6.

Встреча традиционно проходила в офисе Мейл-ру. Там точно была видеозапись и, кажется, даже трансляция. У меня пока этой записи нет, но вот слайды с презентации:

Очень интересно, какие вопросы появятся у читателей моего блога. Буду рад ответить :)

На этой встрече также докладывал Михаил Байнов про массивы и структуры ANSI C/C99, и Саша Зимин рассказывал материальный дизайн кнопок из нового Андроида-Л и показывал как это сделать на Свифте; с его презентации также доступны слайды.

Upd. Видеозапись доклада: http://blog.m4rr.ru/all/size-classes-addition/

2014   CocoaHeads   iOS   Objective-C   Swift   Xcode

iOS 7 is more original iPhone OS than ever

It seems to be iOS 7 inherits abandoned original iPhone OS design.

Look at this awesome bottom dashboard we had in iPhone OS. iOS 7 will have the same. Brilliant!

Original iPhone OS and iOS 7.

Also, look at missing search icon on the left of pagination. Wow!

iOS 6.

Not like iOS 6!

2013   aйфон   in English   iOS   дизайн