Коротко и ясно о разработке на Objective-C, JavaScript, C#, Java, Swift. Под Android, iOS, WinForms и Unity

Позднее Ctrl + ↑

Работа с AVAudioPlayer и MPNowPlayingInfo (iOS)

В ходе разработки приложений под iOS часто возникает необходимость проиграть аудио-файл, например композицию или эффект. Наиболее простым способом для этого в iOS является использование класса AVAudioPlayer. Он является частью фреймворка AVFoundation, так что нам потребуется поставить на него using.

Ниже представлен код хэлпера, упрощающего работу с этим классом.

Использование QLPreviewController для просмотра файлов (iOS)

Для реализации просмотра файлов различных форматов (изображения, word, excel, txt, медиа и т. п.) в iOS существует очень удобный класс QLPreviewController. Для его удобного использования необходимо сделать следующее:


  1. Создать класс-наследник QLPreviewController, который инкапсулирует все детали реализации
  2. Создать класс QLPreviewControllerDataSource, который будет являться источником данных для контроллера
  3. Создать классы-наследники QLPreviewItem, которые будут хранить информацию о просматриваемом элементе

Создание и удаление записей в календаре (iOS)

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


Вся работа с календарем строится через фреймворк EventKit, при этом последовательность действий для создания записи примерно следующая:


  1. Создать экземпляра класса EKEventStore
  2. Запросить через него разрешение на работу с календарем
  3. В completionHandler реализовать код, который будет создавать запись
  4. При создании записи необходимо сначала найти наш кастомный календарь EKCalendar (или создать его, если его еще нет)
  5. Создать экземпляр класса EKEvent (это и будет наша запись) и установить для него заголовок, сопроводительный текст, время начала и окончания
  6. Создать и добавить ремайндер (экземпляр класса EKAlarm), который описывает когда должно сработать напоминание о записи

Использование NSUrlSession для загрузки файлов (iOS)

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


  1. Не высокая производительность
  2. Прерывание загрузки при блокировке устройства или уходе приложения в бекграунд

Для решения вопроса с загрузкой файлов наиболее правильным способом будет кардинально переписать загрузку на использование NSUrlSession.

Реализация уведомлений-индикаторов для загружаемых на сервер файлов (Android)

При необходимости загрузить файла на сервер из приложения встает вопрос об индикации процесса загрузки. Если дизайн позволяет то можно отобразить диалог прогресс бара (при этом заблокировать интерфейс пользователя). Но на мой взгляд более интересным вариантом индикации являются уведомления в статус баре системы, которые нельзя смахнуть.


При реализации такого подхода может возникнуть несколько проблем:


  1. Как создать уведомление для каждого загружаемого файла (если например существует возможность единовременно загружать несколько файлов)
  2. Как программно отменить уведомление после завершения процесса загрузки на сервер
Ранее Ctrl + ↓