Programació de Dispositius Mòbils introdueix el desenvolupament d'aplicacions natives per a iOS amb Swift, Xcode i UIKit. L'assignatura acompanya l'estudiant des de la creació del primer projecte i la construcció d'interfícies adaptables fins a la integració de dades, serveis de xarxa i funcionalitats pròpies del dispositiu.
El recorregut és eminentment pràctic: cada bloc es concreta en un exercici que amplia una aplicació de referència i prepara el projecte final. Es treballen l'arquitectura i el cicle de vida, la navegació, les llistes i col·leccions, els permisos, la geolocalització i els mapes, la concurrència, la persistència i la seguretat, la càmera i els sensors, la localització, les notificacions, les Live Activities i HealthKit. El curs es tanca amb una primera aproximació a SwiftUI i a la convivència entre tecnologies.
L'objectiu és que l'estudiant entengui el procés complet de construcció d'una app iOS robusta, usable i mantenible, i que sigui capaç de prendre decisions tècniques justificades en un context professional.
Professors Titulars
Professors Docents
Per seguir l'assignatura amb profit es recomana que l'estudiant tingui:
• Coneixements bàsics de programació orientada a objectes.
• Familiaritat amb estructures de dades, algorismes i gestió d'errors.
• Nocions d'arquitectura client-servidor, serveis web i accés a dades.
• Coneixements generals de disseny d'interfícies, usabilitat i experiència d'usuari.
No cal experiència prèvia amb Swift, Xcode ni desenvolupament per a iOS.
Els objectius de l'assignatura són:
• Dominar els fonaments de Swift i utilitzar Xcode amb solvència per crear, depurar i provar aplicacions iOS.
• Dissenyar interfícies adaptables i accessibles amb UIKit, Storyboards, Auto Layout, UITableView i UICollectionView.
• Estructurar una aplicació mitjançant responsabilitats clares, patrons de disseny i mecanismes de navegació adequats.
• Consumir serveis remots, descodificar dades i gestionar operacions asíncrones i dependències de tercers.
• Persistir dades i tractar informació sensible amb els mecanismes adequats, inclosos Core Data i Keychain.
• Integrar permisos i capacitats del sistema de manera responsable: ubicació, mapes, càmera, sensors, notificacions, activitat en segon pla i dades de salut.
• Aplicar criteris d'UI/UX, localització, eficiència, privacitat i qualitat de codi al llarg de tot el desenvolupament.
• Planificar, documentar, presentar i defensar en equip una aplicació iOS completa.
Els continguts s'organitzen en una seqüència progressiva:
• Fonaments d'iOS i entorn de treball. Ecosistema Apple, iOS i UIKit; Xcode, projectes, targets, schemes, simulador i dispositiu físic; Storyboards, connexions, Auto Layout, safe areas, stack views i adaptabilitat.
• Swift aplicat a UIKit. Tipus, opcionals, col·leccions, control de flux, funcions, closures, structs, classes, enums, protocols, extensions, errors, ARC i introducció a async/await.
• Arquitectura, cicle de vida i navegació. Responsabilitats de vistes i controladors, MVC i col·laboradors, app i scene lifecycle, navegació amb tabs, stacks, segues i presentacions modals, pas de dades i comunicació entre components.
• Interfícies basades en dades. UITableView i UICollectionView, cel·les reutilitzables, XIBs, self-sizing, data sources clàssics i diffable, snapshots, layout de flux i compositional layout.
• Privacitat, ubicació i mapes. Permisos i purpose strings, Core Location, qualitat de les dades de posició, consum responsable de bateria, MapKit, anotacions i proves en simulador i dispositiu.
• Xarxa i dependències. Swift Package Manager, resolució de versions, Alamofire, Codable, concurrència, gestió d'errors, models de transport i de domini, càrrega i memòria cau d'imatges.
• Persistència i seguretat. UserDefaults, fitxers i Codable, Core Data, consultes, migracions, repositoris i Keychain.
• Capacitats del dispositiu i internacionalització. Fotos, càmera, sensors, gestió de recursos, catàlegs de strings, formats locals, Dynamic Type i disseny adaptable a diferents idiomes.
• Notificacions i execució en segon pla. Notificacions locals i remotes, permisos, categories i accions, BackgroundTasks i Live Activities.
• Dades de salut. HealthKit, disponibilitat, autorització, tipus, unitats, consultes, estadístiques i estats sense dades.
• Introducció a SwiftUI. Programació declarativa, composició de vistes, estat, bindings, llistes i interoperabilitat amb UIKit.
L'assignatura combina explicació conceptual, demostracions, pràctica guiada i treball autònom dins d'un enfocament d'aprenentatge basat en projectes.
• Sessions presencials: 14 sessions de 3 hores. Cada sessió introdueix els conceptes essencials i dedica la major part del temps a aplicar-los amb Xcode.
• Exercicis progressius: els hands-on labs setmanals amplien una aplicació de referència i obliguen a provar els casos normals, els errors, els permisos denegats, els estats buits i diferents configuracions de dispositiu.
• Aprenentatge autònom: l'estudiant consulta documentació, contrasta alternatives i resol problemes amb l'orientació del professorat.
• Projecte final en parelles: es desenvolupa una app iOS completa. Abans de programar-la, l'equip valida el concepte, les API i SDK necessaris i un disseny integral de les pantalles. El seguiment es fa mitjançant punts de control i entrevistes breus.
La metodologia posa l'accent en la pràctica deliberada, la justificació de les decisions i la capacitat de transformar requisits en un producte funcional.
L'avaluació és contínua i combina l'adquisició de coneixements amb la seva aplicació en un projecte complet.
Nota final = 30 % coneixements i exercicis setmanals + 70 % treball pràctic i projecte final.
• Coneixements i exercicis setmanals (30 %): activitats individuals vinculades als blocs del temari. Es valoren la correcció funcional, la comprensió, la qualitat del codi, la capacitat de diagnosi i el lliurament en el termini i format establerts.
• Treball pràctic i projecte final (70 %): desenvolupament en parelles d'una app iOS funcional que integri, com a mínim, una API accessible per HTTP, autenticació d'usuaris, un SDK o capacitat del dispositiu i una interfície completa preparada per a un ús real. Inclou disseny previ, memòria, lliurament del codi i defensa del treball.
Cal lliurar totes les activitats obligatòries i el projecte final per superar l'assignatura. Els treballs s'han de presentar a través d'eStudy, seguint la nomenclatura i les normes d'originalitat indicades.
Ús d’intel·ligència artificial (escala AIAS)
- Exercicis pràctics setmanals (hands-on) realitzats i avaluats íntegrament a l’aula o laboratori (40%): Nivell 1 (sense IA). S’hauran de completar sense l’ajuda d’eines d’intel·ligència artificial generativa.
- Projecte final de desenvolupament d’una aplicació i projecte de recuperació (60%): Nivell 2 (planificació amb IA). La IA només es podrà utilitzar durant la ideació, l’exploració inicial, l’organització i la planificació del treball. No es podrà utilitzar per generar, completar, corregir o reescriure el codi, la documentació ni cap altra part del producte lliurat.
- Demostració, presentació i defensa individual del projecte: Nivell 1 (sense IA).
Qualsevol ús permès de la IA s’haurà de declarar en el lliurament, indicant l’eina utilitzada, la seva finalitat i els prompts o instruccions introduïts. L’ús de la IA que excedeixi el nivell indicat, o la seva utilització sense declarar-la, es considerarà un incompliment de les normes d’honestedat acadèmica. L’alumnat serà responsable de l’autoria, l’exactitud i el funcionament de tot el material lliurat.
Les evidències d'avaluació es valoren segons els criteris següents:
• Funcionament i robustesa: l'aplicació compleix els requisits, gestiona errors i estats alternatius i es pot executar en el dispositiu objectiu.
• Swift i qualitat del codi: ús correcte de tipus, opcionals, col·leccions, concurrència, gestió d'errors i memòria; codi llegible i coherent.
• Arquitectura: responsabilitats ben separades, navegació comprensible, models adequats i dependències encapsulades.
• Dades i serveis: integració correcta de l'API, descodificació, persistència i protecció de la informació sensible.
• Integració amb iOS: permisos contextuals, ús justificat de frameworks i capacitats, i comportament correcte davant canvis de disponibilitat o autorització.
• UI/UX: interfície completa, adaptable, localitzable, accessible i coherent amb les convencions de la plataforma.
• Procés i comunicació: compliment dels punts de control, proves, documentació, presentació, capacitat de justificar les decisions i contribució equilibrada de l'equip.
• Apple. Xcode Documentation. https://developer.apple.com/documentation/xcode
• Apple. UIKit Documentation. https://developer.apple.com/documentation/uikit
• Apple. Human Interface Guidelines. https://developer.apple.com/design/human-interface-guidelines/
• The Swift Project. The Swift Programming Language. https://docs.swift.org/swift-book/documentation/the-swift-programming-language/
• Apple. SwiftUI Documentation. https://developer.apple.com/documentation/swiftui
• Apple. URL Loading System. https://developer.apple.com/documentation/foundation/url-loading-system
• Apple. Core Data. https://developer.apple.com/documentation/coredata
• Apple. MapKit. https://developer.apple.com/documentation/mapkit
• Apple. UserNotifications. https://developer.apple.com/documentation/usernotifications
• Apple. HealthKit. https://developer.apple.com/documentation/healthkit