εισαγωγη στην δημιουργια προγραμματων για φορητες...

Post on 12-Dec-2014

162 views 1 download

description

εισαγωγη στην δημιουργια προγραμματων για φορητες συσκευες (iOS και Android)

Transcript of εισαγωγη στην δημιουργια προγραμματων για φορητες...

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΓΡΑΜΜΑΤΩΝ ΓΙΑ ΦΟΡΗΤΕΣ ΣΥΣΚΕΥΕΣ (IOS ΚΑΙ ANDROID)

Σχίζας Σταύρος (stavros.schizas@pinnatta.com)Αναγνώσταρος Γιώργος (george.anagnostaros@pinnatta.com)

Δομή

• Ιστορία

• Εισαγωγή στο 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

Μέσω των ειδοποιήσεων η εφαρμογή “προκαλεί” τον χρήστη να επιστρέψει και να τον ενημερώσει!

Χαρακτηριστικά παραδείγματα:• Νέο μήνυμα• Νέα προσφορά• “Έχεις καιρό να μπεις…”