εισαγωγη στην δημιουργια προγραμματων για φορητες...
DESCRIPTION
εισαγωγη στην δημιουργια προγραμματων για φορητες συσκευες (iOS και Android)TRANSCRIPT
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΓΡΑΜΜΑΤΩΝ ΓΙΑ ΦΟΡΗΤΕΣ ΣΥΣΚΕΥΕΣ (IOS ΚΑΙ ANDROID)
Σχίζας Σταύρος ([email protected])Αναγνώσταρος Γιώργος ([email protected])
Δομή
• Ιστορία
• Εισαγωγή στο iOS
• Εισαγωγή στο Android
Ιστορία
• Εν αρχή είναι τα PDA
• Η πρώιμη περιοδος των smart phones
• Τα πραγματικά έξυπνα κινητά
• Η επόμενη μέρα, smart wearables
PDA was the beginning…
• Τα PDA (Personal Digital Assistant) είναι απο τις πρώτες φορητές ηλεκτρονικές συσκευές, που απέκτησαν δυνατότητες αντίστοιχες αυτών των υπολογιστών.
• Το 1984 η εταιρεία Psion παρουσιάζει το πρώτο PDA, που ονομαζόταν organizer. Η ίδια εταιρεία στις αρχές του ‘90 συνέχισε την εξέλιξη αναπτύσσοντας νέες συσκευές
Το 1992 η Apple βαφτίζει αυτή την κατηγορία συσκευών ως PDA, παρουσιάζοντας την Newton. Ήταν μια αποτυχημένη προσπάθεια, καθώς δεν υπήρχε ακόμα ώριμη αγορά!
Apple
IBM
2 χρόνια αργότερα (1994) ακολουθεί και η IBM παρουσιάζοντας το IBM Simon. Το πρώτο “έξυπνο κινητό” καθώς εκτός απο PDA λειτουργούσε και ως τηλέφωνο.
Nokia
Το 1996 η Nokia εμφανίζει το 9000 Communicator, ένα έξυπνο κινητό που ξεπούλησε!
Microsoft
Την παρουσία της δήλωσε και η Microsoft με μια ειδική έκδοση των Windows για PDA.Το πλεονέκτημα ήταν ότι επέτρεπε σε τρίτους προγραμματιστές να αναπτύξουν εφαρμογές.
Smart Phones Era
Η Google, στην προσπάθειά της να κατακτήσει και τον κόσμο των smart phones, ξεκίνησε το 2007 την ανάπτυξη του πλέον διάσημου λειτουργικού συστήματος, του Android.
Current Situation
Tο 2014 είναι η χρονιά όπου η χρήση και η πώληση έξυπνων κινητών (smart phones) ξεπέρασε αυτή των σταθερών στο Διαδίκτυο και προβλέπεται να αυξηθεί ραγδαία και τα επόμενα χρόνια.
Current Situation
Επικρατέστερες πλατφόρμες για smartphones ειναι οι Android (84,7%) και iOS (11,7%) για το 2014. http://www.idc.com/prodserv/smartphone-os-market-share.jsp
Period Android iOSWindows
PhoneBlackBerry 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%
Wearables (Evolution in the making)
Η Apple παρουσίασε το Apple Watch, ενώ η Google έχει ήδη στην αγορά διάφορα ρολόγια που χρησιμοποιούν Android Wear (Samsung Gear live, Motorola Moto 360, LG G Watch).
iOS
Το λειτουργικό σύστημα που δημιούργησε μια νέα αγορά, όταν κανένας δεν το πίστευε...
iOS – You will need…
• Macbook (Air ή Pro) ή iMac ή Mac PRO (αν είστε αρκετά πλούσιοι! )• XCode• Πραγματικές συσκευές• Gimp ή οποιοδήποτε άλλο εργαλείο για επεξεργασία εικόνας• GIT ή οποιοδήποτε άλλο εργαλείο για version control (Προτιμήστε
το git για να σας κάνει τη ζωή πιο εύκολη!)• Cocoa Pods• Θα χρειαστείτε επίσης ένα ετήσιο licence που κοστίζει $99!
iOS Development : Objective-C
• Η Objective-C είναι μια αντικειμενοστραφής γλώσσα προγραμματισμού• Το Obj-C είναι ένα Smalltalk-style messaging με C• Η Objective-C αναπτύχθηκε στις αρχές της δεκαετίας του 1980• Είχε επιλεχθεί ως η βασική γλώσσα προγραμματισμού από τη NeXT για το
NeXTSTEP λειτουργικό σύστημα• Οι μέθοδοι επιλέγονται κατά την εκτέλεση και όχι κατά τη μεταγλώττιση• Υποστηρίζει method swizzling
iOS Development : Swift
• H Swift είναι μια γλώσσα προγραμματισμού script όπως η Python/JavaScript
• Παρουσίαστηκε τον Ιούνιο του 2014• Η τρέχουσα έκδοση είναι η v1.2• https://developer.apple.com/swift/resources/• Apple Swift Books
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 και πολλά άλλα!
iOS Development : Xcode (Ρύθμιση Περιβάλλοντος)
iOS Development : Xcode (Framework Permissions)
iOS Development : Xcode (Framework Permissions)
• Για κάποια frameworks, η πρόσβαση σε διάφορες ενέργειες ζητείται από τους χρήστες μόνο κατά την εκτέλεση της εφαρμογής, όχι κατά την εγκατάσταση, όπως γίνεται στο Android. Κάποια permissions:• Address Book• Location Services• Microphone Access• Photo gallery• Remote Notifications
iOS Development : Notifications
• Υπάρχουν δύο είδη ειδοποιήσεων: Remote και Local • Τα Remote Notifications στέλνοντα από έναν back-end server και
απαιτούν την έγκριση του χρήστη για την ενεργοποίησή τους• Τα Local Notifications προγραμματίζονται από την εφαρμογή και
παρουσιάζονται από την εφαρμογή στον χρήστη
iOS Development : Gestures
iOS Development : Model – View – Controller
• Model: Το αντικείμενο που κρατά τα δεδομένα της εφαμρογής και τα χειρίζεται
• View: Το αντικείμενο που είναι υπεύθυνο για την οπτική αναπαράσταση του Model και τα controls με τα οποία μπορεί να αλληλεπιδράσει ο χρήστης (όλα τα UIViews και τις υπο-κλάσεις τους)
• Controller: Είναι ο μεσολαβητής που συγχρονίζει όλες τις εργασίες. Αποκτά πρόσβαση στα δεδομένα από το Μodel και τα αναπαριστά με τα Views, ακούει τα events και τα χειρίζεται όπως κρίνεται απαραίτητο
iOS Development : Model – View – Controller (Communication)
• Ο Controller, το View και το Μodel επικοινωνούν μέσω μηνυμάτων• Key-Value Observer (KVO)• Notifications• Delegation• Target Action• Block (επίπεδο πηγαίου κώδικα)
iOS Development : UITableView
iOS Development : UICollectionView
iOS Development : UI
• Μάθετε όλα τα UI components και πώς να τα χρησιμοποιήσετε• Εξατομίκευση UI • Προσαρμοσμένο UI για όλες τις συσκευές (WWDC 2014 videos)• https://developer.apple.com/library/ios/referencelibrary/GettingStart
ed/RoadMapiOS/DesigningaUserInterface.html• Auto layout (πολύ σημαντικό!)
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/
Android
Ένα ανοικτό λειτουργικό σύστημα που έφερε την επανάσταση στα smart phones κι έδωσε ευκαιρίες σε μικρούς κατασκευαστές…
Android – You will need…
• Macbook ή έστω PC με τουλάχιστον 4GB Ram ή αρκετή υπομονή!• Java που πάει παντού!• Eclipse με ADT• Genymotion Simulator • Πραγματική συσκευή• GIT είναι must!• Apache ANT• Google Play dev licence
Android Development – AndroidManifest.xml
• Σε τι έκδοση θα παίξει η εφαρμογή• Ποιες οθόνες υποστηρίζει• Τι features απαιτεί (πχ κάμερα)• Τι δικαιώματα θέλει (πχ να γράφουμε στην SD κάρτα)• Απο τι αποτελείται:• Υπηρεσίες (Services)• Δραστηριότητες (Activities)• Receivers μηνύματων (Push Receiver)
Android Development – AndroidManifest.xml
Android Development – Services
Τι είναι;
Οι υπηρεσίες είναι οτιδήποτε θέλουμε να εκτελείται ασύγχρονα και άσχετα από το User Interface.
Παράδειγμα
Μια υπηρεσία μπορεί να κατεβάζει ειδήσεις, τις οποίες ο χρήστης θα δει σε δεύτερο χρόνο.
Android Development – Activities
Τι είναι;
Θεωρητικά είναι ένα συγκεκριμένο “πράγμα” που χρησιμεύει στην εκτέλεση μια δραστηριότητας του χρήστη, πχ λήψη φωτογραφίας με φίλτρα.
Πρακτικά ειναι συνήθως μια οθόνη της εφαρμογής!Πως ξεκινάει;
Κάθε δραστηριότητα ξεκινάει με κάποια πρόθεση (intent)
Τι είναι πρόθεση;
Η πρόθεση είναι το τι θέλει να κάνει ο χρήστης, για παράδειγμα μια πρόθεση μπορεί να είναι: “Ο χρήστης θέλει να στείλει μήνυμα στο τηλέφωνο +306946222888”
Android Development – Activities
Πώς επιλέγεται ποια δραστηριοτητα αντιστοιχεί για κάθε πρόθεση;
Στο μανιφέστο ορίζουμε για κάθε δραστηριότητα ένα φίλτρο για προθέσεις
Android Development – Activities
Κι αν πολλές δραστηριότητες χειρίζονται την ιδια πρόθεση;
Τo λειτουργικό απλά ρωτάει τον χρήστη ή ξέρει ποια ειναι η προκαθορισμένη!
Android Development – Activities
Πώς ξέρει η εφαρμογή ποιά δραστηριότητα θα είναι η αρχική;
Αρκεί απλά να το ορίσουμε στο μανιφέστο...
Android – GUI
Αυτό που όλοι οι χρήστες θα δουν..
Android – GUI Design
Android – GUI XML
Android – GUI Dealing with events
“Όταν ο χρήστης πατάει ενα κουμπί (συμβάν) τότε κάτι πρέπει να γίνεται (χειρισμός συμβάντος)”
Ο χειρισμός γίνεται απο event listeners.
Οι πιο συχνά χρησιμοποιούμενοι είναι:• OnClickListener για όταν ο χρήστης πατήσει• OnLongClickListener για όταν πατήσει με πείσμα
Android – GUI Dealing with events
Παράδειγμα:
Android – GUI… additionally…
Επιπλέον αξίζει να μάθετε:• Τι είναι layout και πώς μπορώ να έχω εμφολευμένα layouts για
δημιουργία σύνθετου GUI (RelativeLayout, LinearLayout etc)• Τι είναι ListView, GridView και πώς μπορούν να
χρησιμοποιηθούν για να εμφανιστούν λίστες ή πλέγματα (grids) απο στοιχεία
• Σε τι αντιστοιχούν οι μονάδες dp, sp και με ποιον τρόπο μπορούν να μεταφραστούν από px
• Τι είναι τα fragments και πώς μπορούν να αξιοποιηθούν• Πώς μπορώ να φτιάξω custom UI components
Android – Notifications
Επικοινωνία εκτος εφαρμογής…
Android – Notifications
Ή και εκτός συσκευής...
Android – Notifications
Μέσω των ειδοποιήσεων η εφαρμογή “προκαλεί” τον χρήστη να επιστρέψει και να τον ενημερώσει!
Χαρακτηριστικά παραδείγματα:• Νέο μήνυμα• Νέα προσφορά• “Έχεις καιρό να μπεις…”