Об авторах ........................................................................................................11
О колофоне.......................................................................................................12
Вступление........................................................................................................13
Часть I. ЗАДАЧИ И ОПЕРАЦИИ.............................................................17
Примечание о текущем положении дел в сфере разработки
мобильных приложений ......................................................................................17
Глава 1. Контроллеры пользовательского интерфейса..................19
Задачи....................................................................................................................19
Android...................................................................................................................20
Как создать начальный контроллер пользовательского интерфейса
приложения.......................................................................................................20
Как изменить активный контроллер пользовательского интерфейса .........22
Основные этапы жизненного цикла контроллера пользовательского
интерфейса .......................................................................................................27
iOS..........................................................................................................................30
Как создать начальный контроллер пользовательского интерфейса
приложения.......................................................................................................30
Как изменить активный контроллер пользовательского интерфейса .........34
Основные этапы жизненного цикла контроллера пользовательского
интерфейса .......................................................................................................38
Что мы узнали.......................................................................................................42
Глава 2. Представления................................................................................43
Задачи....................................................................................................................43
Android...................................................................................................................43
Создание нового представления .....................................................................44
Вложение представлений друг в друга............................................................49
Изменение состояния представлений ............................................................50
iOS..........................................................................................................................50
Создание нового представления .....................................................................51
Вложение представлений друг в друга............................................................53
С помощью Interface Builder............................................................................56
Изменение состояния представлений ............................................................57
Изменение позиции.........................................................................................58
Что мы узнали.......................................................................................................59
Глава 3. Пользовательские компоненты...............................................60
Задачи....................................................................................................................60
Android...................................................................................................................60
Как создать свое представление......................................................................61
Как использовать свое представление............................................................66
iOS..........................................................................................................................68
Как создать свое представление......................................................................68
Как использовать свое представление............................................................70
Что мы узнали.......................................................................................................72
Глава 4. Пользовательский ввод..............................................................73
Задачи....................................................................................................................73
Android...................................................................................................................73
Получение события касания и реакция на него.............................................74
Получение события ввода с клавиатуры и реакция на него..........................78
Обработка сложных жестов..............................................................................81
iOS..........................................................................................................................84
Получение события касания и реакция на него.............................................84
Получение события ввода с клавиатуры и реакция на него..........................85
Обработка сложных жестов..............................................................................87
Что мы узнали.......................................................................................................89
Глава 5. Передача сообщений...................................................................90
Задачи....................................................................................................................90
Android...................................................................................................................90
Использование обратных вызовов для реакции на действия.......................91
Передача сообщений подписчикам, заинтересованным
в их получении..................................................................................................95
Получение и обработка сообщений ................................................................96
iOS..........................................................................................................................98
Использование обратных вызовов
для реакции на действия .................................................................................98
Передача сообщений подписчикам, заинтересованным
в их получении................................................................................................104
Получение и обработка сообщений ..............................................................106
Замыкания вместо селекторов ......................................................................107
Отмена подписки на уведомления................................................................108
Что мы узнали.....................................................................................................109
Глава 6. Файлы...............................................................................................111
Задачи..................................................................................................................111
Android.................................................................................................................111
Определение характеристик файла, таких как размер или дата
последнего изменения...................................................................................112
Чтение и запись данных в файлы..................................................................113
Копирование данных из одного файла в другой..........................................118
iOS........................................................................................................................119
Определение характеристик файла, таких как размер или дата
последнего изменения...................................................................................119
Чтение и запись данных в файлы..................................................................122
Копирование данных из одного файла в другой..........................................123
Что мы узнали.....................................................................................................125
Глава 7. Хранение данных ........................................................................126
Задачи..................................................................................................................126
Android.................................................................................................................126
Соединение с базой данных ..........................................................................127
Создание таблицы или хранимого объекта..................................................128
Запись данных в таблицу или хранимый объект .........................................129
Чтение данных из таблицы или хранимого объекта....................................130
iOS........................................................................................................................133
Настройка соединения со слоем хранения данных .....................................133
Определение и создание таблицы или хранимого объекта ........................135
Запись хранимых данных в SQLite................................................................136
Чтение данных из SQLite ...............................................................................137
Что мы узнали.....................................................................................................138
Глава 8. Конкурентное (многопоточное) выполнение..................140
Задачи..................................................................................................................140
Android.................................................................................................................140
Запуск задачи в фоновом потоке ..................................................................141
Передача результатов из фонового потока в главный.................................144
Завершение потока выполнения...................................................................145
iOS........................................................................................................................150
Запуск задачи в фоновом потоке ..................................................................151
Передача результатов из фонового потока в главный.................................152
Что мы узнали.....................................................................................................153
Глава 9. Сетевые взаимодействия.........................................................155
Задачи..................................................................................................................155
Android.................................................................................................................156
Загрузка текстового файла с удаленного сервера и его вывод....................156
Создание запроса HTTP POST........................................................................157
Загрузка двоичного файла .............................................................................159
iOS........................................................................................................................160
Загрузка текстового файла с удаленного сервера и его вывод....................161
Создание запроса HTTP POST........................................................................162
Загрузка двоичного файла .............................................................................166
Что мы узнали.....................................................................................................171
Глава 10. Обратная связь с пользователем.......................................172
Задачи..................................................................................................................172
Android.................................................................................................................172
Отображение обратной связи с использованием системных
инструментов..................................................................................................172
Snackbar...........................................................................................................173
Изменение строки состояния ........................................................................175
iOS........................................................................................................................177
Отображение обратной связи
с использованием системных инструментов...............................................177
Изменение строки состояния ........................................................................179
Что мы узнали.....................................................................................................180
Глава 11. Предпочтения пользователя................................................182
Задачи..................................................................................................................182
Android.................................................................................................................182
Сохранение предпочтений пользователя.....................................................183
Чтение предпочтений пользователя.............................................................184
Работа с предпочтениями в многопользовательских приложениях ..........184
iOS........................................................................................................................185
Сохранение предпочтений пользователя.....................................................185
Чтение предпочтений пользователя.............................................................188
Работа с предпочтениями в многопользовательских приложениях ..........189
Что мы узнали.....................................................................................................190
Глава 12. Сериализация и транспорты ................................................192
Задачи..................................................................................................................192
Android.................................................................................................................192
Сериализация и десериализация экземпляров объектов............................192
iOS........................................................................................................................200
Сериализация и десериализация экземпляров объектов............................200
Дополнительные замечания для iOS.............................................................205
Что мы узнали.....................................................................................................206
Глава 13. Расширения.................................................................................207
Задачи..................................................................................................................207
Android.................................................................................................................207
Добавление новых возможностей в существующие API .............................207
iOS........................................................................................................................209
Добавление новых возможностей в существующие API .............................209
Что мы узнали.....................................................................................................212
Глава 14. Тестирование ..............................................................................213
Задачи..................................................................................................................213
Android.................................................................................................................213
Как писать и запускать модульные тесты.....................................................217
Как писать и запускать интеграционные тесты...........................................220
iOS........................................................................................................................222
Как писать и запускать модульные тесты.....................................................222
Что мы узнали.....................................................................................................225
Часть II. ПРИМЕР ПРИЛОЖЕНИЯ ......................................................226
Глава 15. Добро пожаловать и настройка окружения ..................227
Сравнение нативных и кросс-платформенных инструментов
разработки мобильных приложений ................................................................227
Веб-разработка ...............................................................................................228
Другие подходы ..............................................................................................228
Настройка окружения.........................................................................................229
Настройка окружения разработки для Android............................................229
Настройка окружения разработки для iOS ...................................................235
Что мы узнали.....................................................................................................236
Глава 16. Создание приложения ............................................................237
Создание нового проекта...................................................................................237
Android Studio .................................................................................................238
Xcode................................................................................................................242
Архитектура приложения ..................................................................................245
Создание первого экрана...................................................................................246
Android ............................................................................................................247
iOS....................................................................................................................249
Что мы узнали.....................................................................................................254
Глава 17. Вывод списка с данными.......................................................255
Оформление представлений .............................................................................255
Android ............................................................................................................255
iOS....................................................................................................................265
Добавление кнопки ............................................................................................270
iOS....................................................................................................................271
Списки, списки и еще раз списки!.....................................................................271
Добавление нового представления каталога................................................272
Подключение кнопки.....................................................................................273
Книги ...................................................................................................................274
Заполнение представления списка ...................................................................278
Android ............................................................................................................278
iOS....................................................................................................................285
Что мы узнали.....................................................................................................288
Глава 18. Моделирование каталога библиотеки.............................290
Динамические данные в представлениях списков ..........................................290
Android ............................................................................................................291
iOS....................................................................................................................294
Пришло время вернуть объекты модели в реальность....................................298
JSON для одного, JSON для всего .......................................................................298
Переключение слоя данных на использование JSON.......................................300
Android ............................................................................................................300
iOS....................................................................................................................306
Что мы узнали.....................................................................................................308
Глава 19. Сохранность данных................................................................309
Детализация информации о книгах..................................................................309
Android ............................................................................................................309
iOS....................................................................................................................314
Сохранение книг для последующего использования.......................................318
Android ............................................................................................................319
iOS....................................................................................................................320
Запись книг в хранилище...................................................................................321
Android ............................................................................................................322
iOS....................................................................................................................331
Сохранение книг в закладках ............................................................................339
Android ............................................................................................................340
Что мы узнали.....................................................................................................341
Глава 20. Сетевые операции в приложении......................................342
Поиск в сети ........................................................................................................342
Android ............................................................................................................345
iOS....................................................................................................................347
Создание службы поиска....................................................................................350
Установка Node и Express ...............................................................................350
Файл JSON с местоположениями библиотек ................................................351
Вызов службы......................................................................................................352
Android ............................................................................................................352
iOS....................................................................................................................356
Что мы узнали.....................................................................................................365
Предметный указатель ..............................................................................366