Рубрика «mobile development» - 27

Перейдя в Java и Android из мира C# .NET так и хочется притащить в чужой монастырь свой устав. В данном случае речь пойдет о декларативных состояниях интерфейса (Visual States). Начнем сразу с простой проблемки: у нас есть вьюшка, на которой отображается профиль какого-то пользователя, но, в зависимости от роли текущего пользователя, эта вьюшка может чуть-чуть отличаться. Допустим, у нас есть три роли: guest, member и moderator, и состояния этой вьюшки будут выглядеть следующим образом:

Описание состояний интерфейса в XML вместо кода для Android - 1Читать полностью »

Это перевод статьи Tony DiPasquale «Efficient JSON in Swift with Functional Concepts».

Предисловие переводчика.

Передо мной была поставлена задача: закачать данные в формате JSON с Flickr.com о 100 топ местах, в которых сделаны фотографии на данный момент, в массив моделей:

//------ Массив моделей Places
struct Places {   
    var places : [Place]
}

//-----Модель Place
struct Place {

    let placeURL: NSURL
    let timeZone: String
    let photoCount : Int
    let content : String
    
}

Кроме чисто прагматической задачи, мне хотелось посмотреть как в Swift работает «вывод типа из контекста» (type Inference), какие возможности Swift в функциональном программировании, и я выбрала для парсинга JSON алгоритмы из статьи Tony DiPasquale «Efficient JSON in Swift with Functional Concepts and Generics», в которой он «протягивает» generic тип Result<A> для обработки ошибок по всей цепочке преобразований: от запроса в сеть до размещения данных в массив Моделей для последующего представления в UITableViewController.
Чтобы посмотреть как Swift работает «в связке» с Objective-C, для считывания данных с Flickr.com использовался Flickr API, представленный в курсе Стэнфордского Университета «Stanford CS 193P iOS 7», написанный на Objective-C.
В результате помимо небольшого расширения Моделей:

extension Place: JSONDecodable {
    static func create(placeURL: String)(timeZone: String)(photoCount: String)(content: String) -> Place {
        return Place(placeURL: toURL(placeURL), timeZone: timeZone, photoCount: photoCount.toInt() ?? 0, content: content)
    }
    static func decode(json: JSON) -> Place? {
        return _JSONParse(json) >>> { d in
            Place.create
                <^> d <| "place_url"
                <*> d <| "timezone"
                <*> d <| "photo_count"
                <*> d <| "_content"
        }
    }
}

extension Places: JSONDecodable { 
    static func create(places: [Place]) -> Places {
        return Places(places: places)
    }
    static func decode(json: JSON) -> Places? {
        return _JSONParse(json) >>> { d in
            Places.create
                <^> d <| "places" <| "place"
            
        }
    }
}

мне самостоятельно пришлось написать только три строчки кода:
Читать полностью »

В новом дайджесте автоматизация тестирования iOS приложений, новая серия «программирования мышкой» в Swift, Kotlin для Android и локализация приложений для китайского рынка, истории фееричных провалов и новый фреймворк для гибридных приложений от AppGyver. В общем, много всего разного и интересного.

Дайджест интересных материалов для мобильного разработчика #82 (1-7 декабря) - 1Читать полностью »

Всем привет, с вами снова Delfuego FM, и я наконец-таки созрел, чтобы выложить вторую часть статьи! Вследствие неоднозначной реакции на первую часть, была предпринята попытка выложить вторую на geek times, и… она успешно провалилась. Поэтому придётся совершить небольшой хабрасуицид и выложить её прямо тут! Итак, поехали!..

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

Своей историей, первую часть которой вы можете прочесть тут, я пытаюсь уберечь вас от моих ошибок. Надеюсь, моя история поможет сэкономить вам несколько лет. Это история про разработку игр, но она может быть полезна всем тем, кто желает проявить себя и в других областях (в частности, в области разработки сайтов).

Путь разработчика: истории о моих фееричных провалах, часть 2 - 1
Читать полностью »

На нашей конференции мобильных разработчиков #MBLTDev, которая прошла в конце октября в Москве, продуктолог компании JetBrains Илья Рыженков рассказал доклад о языке программирования под Android Kotlin.

Kotlin был разработан в компании JetBrains и публично представлен в 2011 году. В 2012 был открыт исходный код.


Презентация

Илья рассказал про историю создания языка, преимуществах программирования на Kotlin, отличия Kotlin от Java и о том, что на нем можно делать. А также показал несколько примеров кода на Kotlin для платформы Android.
Читать полностью »

Взрывной рост загрузок после выхода iPhone 6, каким будет мобильный интернет, новый App Store от Xiaomi — и другие новости недели для мобильного разработчика - 1

Выход iPhone 6+ дал серьезный рост количества загрузок приложений

Компания Fiksu в своем новом отчете сообщила о том, что запуск iPhone 6 и iPhone 6+ в конце сентября увеличил загрузки приложений в октябре на 42%. Этот вывод сделан на основе анализа количества скачиваний Топ-200 приложений на iOS, при этом неигровые приложения в данном отчете не учитывались.

В течение октября было 7,8 млн загрузок приложений из списка Top-200 в день против 5,5 млн в сентябре. При этом средняя цена за установку в октябре выросла на 21% и составила $1,46.

Так что запуск новых устройств Apple позволяет не только бить рекорды по продажам устройств, но и рекорды по количеству закачек в день!
Читать полностью »

Всем привет.

Я – игроголик. Могу две недели потратить на прохождение одного босса. По дороге на работу могу просчитывать стратегию битвы с вражеской армией. Могу упасть со стула из-за того, что не заметила, как отсидела ногу во время трехчасового рейда. Могу и практикую.
Если вы сталкивались с подобными проблемами – добро пожаловать в клуб. Здесь мы, как взрослые и очень серьезные люди, попробуем проанализировать состояние иммерсии, которое и заставляет нас восхищаться игрой и забывать о необходимости есть, спать и жить вне игрового мира. Проще говоря, речь пойдет о потоковом состоянии в видеоиграх.
Теория потока: как создать игру, которую полюбят все - 1
Читать полностью »

Мы уже писали, как перевод ключевых слов для iOs-приложения увеличил количество загрузок на 767%, а также как локализация интерфейса помогла поднять приложение на десятки позиций вверх в локальных топах Google Play. В обоих случаях на рекламу приложений не было потрачено ни цента.

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

  1. Мы бесплатно переводим описание и кейворды для страницы вашего приложения в Google Play и/или App Store с английского на любой из нашего списка 40+ языков.
  2. Вы не применяете другие методы продвижения (никакой рекламы, одним словом) в течение месяца.
  3. Вы делитесь с нами графиком загрузок, покупок и рейтингом вашего приложения в локальном сторе.
  4. Мы делимся полученной информацией со всем миром в нашем блоге.

Читать полностью »

Настал вторник, а значит мы выкладываем очередной доклад с конференции мобильных разработчиков #MBLTDev. Доклад посвящен фреймворку Core Data, работы с которым большинство iOS–разработчиков склоны избегать из-за его сложности.

Руслан Шевчук, iOS–разработчик компании Aviasales, не побоялся разобраться с Core Data и на конференции представил доклад о том, как можно использовать его в iCloud.


Презентация.

Руслан рассказал про задачи, которые Core Data решает в приложении Aviasales, его особенности, многопоточность, версионность, синхронизацию, проверку нарушения целостности связей, определение и удаление дубликатов, а также про преимущества Private Queue над Confinement Concurrency.
Читать полностью »

VoiceFabric: технология синтеза речи из облака - 1

Сегодня поговорим про перспективы и возможности облачного сервиса VoiceFabric для разработчиков и пользователей. Сервис озвучивает любую текстовую информацию синтезированным голосом в режиме реального времени. Под катом мы подробно расскажем о нашем синтезе, сценариях его использования (стандартных и не очень) и как подключить его к своим проектам, а так же о том, чем он уникален.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js