3. Ιστορία
• Εν αρχή είναι τα PDA
• Η πρώιμη περιοδος των smart phones
• Τα πραγματικά έξυπνα κινητά
• Η επόμενη μέρα, smart wearables
4. PDA was the beginning…
• Τα PDA (Personal Digital Assistant) είναι απο τις πρώτες φορητές
ηλεκτρονικές συσκευές, που απέκτησαν δυνατότητες αντίστοιχες αυτών των
υπολογιστών.
• Το 1984 η εταιρεία Psion παρουσιάζει το πρώτο PDA, που ονομαζόταν
organizer. Η ίδια εταιρεία στις αρχές του ‘90 συνέχισε την εξέλιξη
αναπτύσσοντας νέες συσκευές
5. Apple
Το 1992 η Apple βαφτίζει αυτή την κατηγορία συσκευών ως PDA,
παρουσιάζοντας την Newton.
Ήταν μια αποτυχημένη προσπάθεια, καθώς δεν υπήρχε ακόμα ώριμη αγορά!
6. IBM
2 χρόνια αργότερα (1994) ακολουθεί και η IBM παρουσιάζοντας το IBM Simon.
Το πρώτο “έξυπνο κινητό” καθώς εκτός απο PDA λειτουργούσε και ως
τηλέφωνο.
7. Nokia
Το 1996 η Nokia εμφανίζει το 9000 Communicator, ένα έξυπνο κινητό που
ξεπούλησε!
8. Microsoft
Την παρουσία της δήλωσε και η Microsoft με μια ειδική έκδοση των Windows
για PDA.
Το πλεονέκτημα ήταν ότι επέτρεπε σε τρίτους προγραμματιστές να αναπτύξουν
εφαρμογές.
9. Smart Phones Era
Η Google, στην προσπάθειά της να κατακτήσει και τον κόσμο των smart
phones, ξεκίνησε το 2007 την ανάπτυξη του πλέον διάσημου λειτουργικού
συστήματος, του Android.
10. Current Situation
Tο 2014 είναι η χρονιά όπου η χρήση και η πώληση έξυπνων κινητών (smart
phones) ξεπέρασε αυτή των σταθερών στο Διαδίκτυο και προβλέπεται να
αυξηθεί ραγδαία και τα επόμενα χρόνια.
11. Current Situation
Period Android iOS
Windows
Phone
BlackBerry OS Others
Q2 2014 84.7% 11.7% 2.5% 0.5% 0.7%
Q2 2013 79.6% 13.0% 3.4% 2.8% 1.2%
Q2 2012 69.3% 16.6% 3.1% 4.9% 6.1%
Q2 2011 36.1% 18.3% 1.2% 13.6% 30.8%
Επικρατέστερες πλατφόρμες για smartphones ειναι οι Android (84,7%) και iOS
(11,7%) για το 2014.
http://www.idc.com/prodserv/smartphone-os-market-share.jsp
12. Wearables (Evolution in the making)
Η Apple παρουσίασε το Apple Watch, ενώ η Google έχει ήδη στην αγορά
διάφορα ρολόγια που χρησιμοποιούν Android Wear (Samsung Gear live,
Motorola Moto 360, LG G Watch).
13. iOS
Το λειτουργικό σύστημα που δημιούργησε μια νέα αγορά, όταν κανένας δεν το
πίστευε...
14. iOS – You will need…
• Macbook (Air ή Pro) ή iMac ή Mac PRO (αν είστε αρκετά πλούσιοι! )
• XCode
• Πραγματικές συσκευές
• Gimp ή οποιοδήποτε άλλο εργαλείο για επεξεργασία εικόνας
• GIT ή οποιοδήποτε άλλο εργαλείο για version control (Προτιμήστε το git για
να σας κάνει τη ζωή πιο εύκολη!)
• Cocoa Pods
• Θα χρειαστείτε επίσης ένα ετήσιο licence που κοστίζει $99!
15. iOS Development : Objective-C
• Η Objective-C είναι μια αντικειμενοστραφής γλώσσα προγραμματισμού
• Το Obj-C είναι ένα Smalltalk-style messaging με C
• Η Objective-C αναπτύχθηκε στις αρχές της δεκαετίας του 1980
• Είχε επιλεχθεί ως η βασική γλώσσα προγραμματισμού από τη NeXT για το
NeXTSTEP λειτουργικό σύστημα
• Οι μέθοδοι επιλέγονται κατά την εκτέλεση και όχι κατά τη μεταγλώττιση
• Υποστηρίζει method swizzling
16. iOS Development : Swift
• H Swift είναι μια γλώσσα προγραμματισμού script όπως η Python/JavaScript
• Παρουσίαστηκε τον Ιούνιο του 2014
• Η τρέχουσα έκδοση είναι η v1.2
• https://developer.apple.com/swift/resources/
• Apple Swift Books
17. iOS Development : Xcode
• Είναι το επίσημο IDE για προγραμματισμό iOS και Mac
• Κυκλοφόρησε το 2003
• Η τελευταία έκδοση είναι η v.6.0.1 (που είναι διαθέσιμη μέσω του App Store)
• Παρέχει iOS device simulators
• Κάποια εργαλεία: power profiling, memory leaks, core data, network, zombies
(!!!), animations performance και πολλά άλλα!
20. iOS Development : Xcode (Framework Permissions)
• Για κάποια frameworks, η πρόσβαση σε διάφορες ενέργειες ζητείται από τους
χρήστες μόνο κατά την εκτέλεση της εφαρμογής, όχι κατά την εγκατάσταση,
όπως γίνεται στο Android. Κάποια permissions:
• Address Book
• Location Services
• Microphone Access
• Photo gallery
• Remote Notifications
21. iOS Development : Notifications
• Υπάρχουν δύο είδη ειδοποιήσεων: Remote και Local
• Τα Remote Notifications στέλνοντα από έναν back-end server και απαιτούν
την έγκριση του χρήστη για την ενεργοποίησή τους
• Τα Local Notifications προγραμματίζονται από την εφαρμογή και
παρουσιάζονται από την εφαρμογή στον χρήστη
23. iOS Development : Model – View – Controller
• Model: Το αντικείμενο που κρατά τα δεδομένα της εφαμρογής και τα χειρίζεται
• View: Το αντικείμενο που είναι υπεύθυνο για την οπτική αναπαράσταση του
Model και τα controls με τα οποία μπορεί να αλληλεπιδράσει ο χρήστης (όλα
τα UIViews και τις υπο-κλάσεις τους)
• Controller: Είναι ο μεσολαβητής που συγχρονίζει όλες τις εργασίες. Αποκτά
πρόσβαση στα δεδομένα από το Μodel και τα αναπαριστά με τα Views,
ακούει τα events και τα χειρίζεται όπως κρίνεται απαραίτητο
24. iOS Development : Model – View – Controller
(Communication)
• Ο Controller, το View και το Μodel επικοινωνούν μέσω μηνυμάτων
• Key-Value Observer (KVO)
• Notifications
• Delegation
• Target Action
• Block (επίπεδο πηγαίου κώδικα)
27. iOS Development : UI
• Μάθετε όλα τα UI components και πώς να τα χρησιμοποιήσετε
• Εξατομίκευση UI
• Προσαρμοσμένο UI για όλες τις συσκευές (WWDC 2014 videos)
• https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadM
apiOS/DesigningaUserInterface.html
• Auto layout (πολύ σημαντικό!)
28. iOS Development : Useful Links
• https://developer.apple.com/library/ios/navigation/
• Βίντεο WWDC 2013 και 2014
• http://www.davemark.com/?p=1829&utm_source=iOS+Dev+Weekly&utm_campaign=46a7deb647-
iOS_Dev_Weekly_Issue_100&utm_medium=email&utm_term=0_7bda94b7ca-46a7deb647-299403737
• http://ios.devtools.me/
• http://www.raywenderlich.com/store/ios-apprentice
• http://web.stanford.edu/class/cs193p/cgi-bin/drupal/
• Apple Books, ειδικά για το Swift
• Unit Tests (Test-Driven iOS Development book)
• http://www.pttrns.com/
• http://www.mobile-patterns.com/
• http://capptivate.co/
29. Android
Ένα ανοικτό λειτουργικό σύστημα που έφερε την επανάσταση στα smart
phones κι έδωσε ευκαιρίες σε μικρούς κατασκευαστές…
30. Android – You will need…
• Macbook ή έστω PC με τουλάχιστον 4GB Ram ή αρκετή υπομονή!
• Java που πάει παντού!
• Eclipse με ADT
• Genymotion Simulator
• Πραγματική συσκευή
• GIT είναι must!
• Apache ANT
• Google Play dev licence
31. Android Development – AndroidManifest.xml
• Σε τι έκδοση θα παίξει η εφαρμογή
• Ποιες οθόνες υποστηρίζει
• Τι features απαιτεί (πχ κάμερα)
• Τι δικαιώματα θέλει (πχ να γράφουμε στην SD κάρτα)
• Απο τι αποτελείται:
• Υπηρεσίες (Services)
• Δραστηριότητες (Activities)
• Receivers μηνύματων (Push Receiver)
33. Android Development – Services
Τι είναι;
Οι υπηρεσίες είναι οτιδήποτε θέλουμε να εκτελείται ασύγχρονα και άσχετα από
το User Interface.
Παράδειγμα
Μια υπηρεσία μπορεί να κατεβάζει ειδήσεις, τις οποίες ο χρήστης θα δει σε
δεύτερο χρόνο.
34. Android Development – Activities
Τι είναι;
Θεωρητικά είναι ένα συγκεκριμένο “πράγμα” που χρησιμεύει στην εκτέλεση μια
δραστηριότητας του χρήστη, πχ λήψη φωτογραφίας με φίλτρα.
Πρακτικά ειναι συνήθως μια οθόνη της εφαρμογής!
Πως ξεκινάει;
Κάθε δραστηριότητα ξεκινάει με κάποια πρόθεση (intent)
Τι είναι πρόθεση;
Η πρόθεση είναι το τι θέλει να κάνει ο χρήστης, για παράδειγμα μια πρόθεση μπορεί
να είναι: “Ο χρήστης θέλει να στείλει μήνυμα στο τηλέφωνο +306946222888”
35. Android Development – Activities
Πώς επιλέγεται ποια δραστηριοτητα αντιστοιχεί για κάθε πρόθεση;
Στο μανιφέστο ορίζουμε για κάθε δραστηριότητα ένα φίλτρο για προθέσεις
36. Android Development – Activities
Κι αν πολλές δραστηριότητες χειρίζονται την ιδια πρόθεση;
Τo λειτουργικό απλά ρωτάει τον χρήστη ή ξέρει ποια ειναι η προκαθορισμένη!
37. Android Development – Activities
Πώς ξέρει η εφαρμογή ποιά δραστηριότητα θα είναι η αρχική;
Αρκεί απλά να το ορίσουμε στο μανιφέστο...
41. Android – GUI Dealing with events
“Όταν ο χρήστης πατάει ενα κουμπί (συμβάν) τότε κάτι πρέπει να
γίνεται (χειρισμός συμβάντος)”
Ο χειρισμός γίνεται απο event listeners.
Οι πιο συχνά χρησιμοποιούμενοι είναι:
• OnClickListener για όταν ο χρήστης πατήσει
• OnLongClickListener για όταν πατήσει με πείσμα
43. Android – GUI… additionally…
Επιπλέον αξίζει να μάθετε:
• Τι είναι layout και πώς μπορώ να έχω εμφολευμένα layouts για
δημιουργία σύνθετου GUI (RelativeLayout, LinearLayout etc)
• Τι είναι ListView, GridView και πώς μπορούν να χρησιμοποιηθούν για να
εμφανιστούν λίστες ή πλέγματα (grids) απο στοιχεία
• Σε τι αντιστοιχούν οι μονάδες dp, sp και με ποιον τρόπο μπορούν να
μεταφραστούν από px
• Τι είναι τα fragments και πώς μπορούν να αξιοποιηθούν
• Πώς μπορώ να φτιάξω custom UI components
46. Android – Notifications
Μέσω των ειδοποιήσεων η εφαρμογή “προκαλεί” τον χρήστη να επιστρέψει
και να τον ενημερώσει!
Χαρακτηριστικά παραδείγματα:
• Νέο μήνυμα
• Νέα προσφορά
• “Έχεις καιρό να μπεις…”