47
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΓΡΑΜΜΑΤΩΝ ΓΙΑ ΦΟΡΗΤΕΣ ΣΥΣΚΕΥΕΣ (IOS ΚΑΙ ANDROID) Σχίζας Σταύρος ([email protected] m) Αναγνώσταρος Γιώργος (george.anagnostaros@pinnatt

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

Σχίζας Σταύρος ([email protected])Αναγνώσταρος Γιώργος ([email protected])

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

Δομή

• Ιστορία

• Εισαγωγή στο iOS

• Εισαγωγή στο Android

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

Ιστορία

• Εν αρχή είναι τα PDA

• Η πρώιμη περιοδος των smart phones

• Τα πραγματικά έξυπνα κινητά

• Η επόμενη μέρα, smart wearables

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

PDA was the beginning…

• Τα PDA (Personal Digital Assistant) είναι απο τις πρώτες φορητές ηλεκτρονικές συσκευές, που απέκτησαν δυνατότητες αντίστοιχες αυτών των υπολογιστών.

• Το 1984 η εταιρεία Psion παρουσιάζει το πρώτο PDA, που ονομαζόταν organizer. Η ίδια εταιρεία στις αρχές του ‘90 συνέχισε την εξέλιξη αναπτύσσοντας νέες συσκευές

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

Το 1992 η Apple βαφτίζει αυτή την κατηγορία συσκευών ως PDA, παρουσιάζοντας την Newton. Ήταν μια αποτυχημένη προσπάθεια, καθώς δεν υπήρχε ακόμα ώριμη αγορά!

Apple

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

IBM

2 χρόνια αργότερα (1994) ακολουθεί και η IBM παρουσιάζοντας το IBM Simon. Το πρώτο “έξυπνο κινητό” καθώς εκτός απο PDA λειτουργούσε και ως τηλέφωνο.

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

Nokia

Το 1996 η Nokia εμφανίζει το 9000 Communicator, ένα έξυπνο κινητό που ξεπούλησε!

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

Microsoft

Την παρουσία της δήλωσε και η Microsoft με μια ειδική έκδοση των Windows για PDA.Το πλεονέκτημα ήταν ότι επέτρεπε σε τρίτους προγραμματιστές να αναπτύξουν εφαρμογές.

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

Smart Phones Era

Η Google, στην προσπάθειά της να κατακτήσει και τον κόσμο των smart phones, ξεκίνησε το 2007 την ανάπτυξη του πλέον διάσημου λειτουργικού συστήματος, του Android.

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

Current Situation

Tο 2014 είναι η χρονιά όπου η χρήση και η πώληση έξυπνων κινητών (smart phones) ξεπέρασε αυτή των σταθερών στο Διαδίκτυο και προβλέπεται να αυξηθεί ραγδαία και τα επόμενα χρόνια.

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

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%

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

Wearables (Evolution in the making)

Η Apple παρουσίασε το Apple Watch, ενώ η Google έχει ήδη στην αγορά διάφορα ρολόγια που χρησιμοποιούν Android Wear (Samsung Gear live, Motorola Moto 360, LG G Watch).

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

iOS

Το λειτουργικό σύστημα που δημιούργησε μια νέα αγορά, όταν κανένας δεν το πίστευε...

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

iOS – You will need…

• Macbook (Air ή Pro) ή iMac ή Mac PRO (αν είστε αρκετά πλούσιοι! )• XCode• Πραγματικές συσκευές• Gimp ή οποιοδήποτε άλλο εργαλείο για επεξεργασία εικόνας• GIT ή οποιοδήποτε άλλο εργαλείο για version control (Προτιμήστε

το git για να σας κάνει τη ζωή πιο εύκολη!)• Cocoa Pods• Θα χρειαστείτε επίσης ένα ετήσιο licence που κοστίζει $99!

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

iOS Development : Objective-C

• Η Objective-C είναι μια αντικειμενοστραφής γλώσσα προγραμματισμού• Το Obj-C είναι ένα Smalltalk-style messaging με C• Η Objective-C αναπτύχθηκε στις αρχές της δεκαετίας του 1980• Είχε επιλεχθεί ως η βασική γλώσσα προγραμματισμού από τη NeXT για το

NeXTSTEP λειτουργικό σύστημα• Οι μέθοδοι επιλέγονται κατά την εκτέλεση και όχι κατά τη μεταγλώττιση• Υποστηρίζει method swizzling

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

iOS Development : Swift

• H Swift είναι μια γλώσσα προγραμματισμού script όπως η Python/JavaScript

• Παρουσίαστηκε τον Ιούνιο του 2014• Η τρέχουσα έκδοση είναι η v1.2• https://developer.apple.com/swift/resources/• Apple Swift Books

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

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 και πολλά άλλα!

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

iOS Development : Xcode (Ρύθμιση Περιβάλλοντος)

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

iOS Development : Xcode (Framework Permissions)

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

iOS Development : Xcode (Framework Permissions)

• Για κάποια frameworks, η πρόσβαση σε διάφορες ενέργειες ζητείται από τους χρήστες μόνο κατά την εκτέλεση της εφαρμογής, όχι κατά την εγκατάσταση, όπως γίνεται στο Android. Κάποια permissions:• Address Book• Location Services• Microphone Access• Photo gallery• Remote Notifications

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

iOS Development : Notifications

• Υπάρχουν δύο είδη ειδοποιήσεων: Remote και Local • Τα Remote Notifications στέλνοντα από έναν back-end server και

απαιτούν την έγκριση του χρήστη για την ενεργοποίησή τους• Τα Local Notifications προγραμματίζονται από την εφαρμογή και

παρουσιάζονται από την εφαρμογή στον χρήστη

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

iOS Development : Gestures

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

iOS Development : Model – View – Controller

• Model: Το αντικείμενο που κρατά τα δεδομένα της εφαμρογής και τα χειρίζεται

• View: Το αντικείμενο που είναι υπεύθυνο για την οπτική αναπαράσταση του Model και τα controls με τα οποία μπορεί να αλληλεπιδράσει ο χρήστης (όλα τα UIViews και τις υπο-κλάσεις τους)

• Controller: Είναι ο μεσολαβητής που συγχρονίζει όλες τις εργασίες. Αποκτά πρόσβαση στα δεδομένα από το Μodel και τα αναπαριστά με τα Views, ακούει τα events και τα χειρίζεται όπως κρίνεται απαραίτητο

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

iOS Development : Model – View – Controller (Communication)

• Ο Controller, το View και το Μodel επικοινωνούν μέσω μηνυμάτων• Key-Value Observer (KVO)• Notifications• Delegation• Target Action• Block (επίπεδο πηγαίου κώδικα)

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

iOS Development : UITableView

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

iOS Development : UICollectionView

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

iOS Development : UI

• Μάθετε όλα τα UI components και πώς να τα χρησιμοποιήσετε• Εξατομίκευση UI • Προσαρμοσμένο UI για όλες τις συσκευές (WWDC 2014 videos)• https://developer.apple.com/library/ios/referencelibrary/GettingStart

ed/RoadMapiOS/DesigningaUserInterface.html• Auto layout (πολύ σημαντικό!)

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

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/

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

Android

Ένα ανοικτό λειτουργικό σύστημα που έφερε την επανάσταση στα smart phones κι έδωσε ευκαιρίες σε μικρούς κατασκευαστές…

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

Android – You will need…

• Macbook ή έστω PC με τουλάχιστον 4GB Ram ή αρκετή υπομονή!• Java που πάει παντού!• Eclipse με ADT• Genymotion Simulator • Πραγματική συσκευή• GIT είναι must!• Apache ANT• Google Play dev licence

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

Android Development – AndroidManifest.xml

• Σε τι έκδοση θα παίξει η εφαρμογή• Ποιες οθόνες υποστηρίζει• Τι features απαιτεί (πχ κάμερα)• Τι δικαιώματα θέλει (πχ να γράφουμε στην SD κάρτα)• Απο τι αποτελείται:• Υπηρεσίες (Services)• Δραστηριότητες (Activities)• Receivers μηνύματων (Push Receiver)

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

Android Development – AndroidManifest.xml

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

Android Development – Services

Τι είναι;

Οι υπηρεσίες είναι οτιδήποτε θέλουμε να εκτελείται ασύγχρονα και άσχετα από το User Interface.

Παράδειγμα

Μια υπηρεσία μπορεί να κατεβάζει ειδήσεις, τις οποίες ο χρήστης θα δει σε δεύτερο χρόνο.

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

Android Development – Activities

Τι είναι;

Θεωρητικά είναι ένα συγκεκριμένο “πράγμα” που χρησιμεύει στην εκτέλεση μια δραστηριότητας του χρήστη, πχ λήψη φωτογραφίας με φίλτρα.

Πρακτικά ειναι συνήθως μια οθόνη της εφαρμογής!Πως ξεκινάει;

Κάθε δραστηριότητα ξεκινάει με κάποια πρόθεση (intent)

Τι είναι πρόθεση;

Η πρόθεση είναι το τι θέλει να κάνει ο χρήστης, για παράδειγμα μια πρόθεση μπορεί να είναι: “Ο χρήστης θέλει να στείλει μήνυμα στο τηλέφωνο +306946222888”

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

Android Development – Activities

Πώς επιλέγεται ποια δραστηριοτητα αντιστοιχεί για κάθε πρόθεση;

Στο μανιφέστο ορίζουμε για κάθε δραστηριότητα ένα φίλτρο για προθέσεις

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

Android Development – Activities

Κι αν πολλές δραστηριότητες χειρίζονται την ιδια πρόθεση;

Τo λειτουργικό απλά ρωτάει τον χρήστη ή ξέρει ποια ειναι η προκαθορισμένη!

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

Android Development – Activities

Πώς ξέρει η εφαρμογή ποιά δραστηριότητα θα είναι η αρχική;

Αρκεί απλά να το ορίσουμε στο μανιφέστο...

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

Android – GUI

Αυτό που όλοι οι χρήστες θα δουν..

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

Android – GUI Design

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

Android – GUI XML

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

Android – GUI Dealing with events

“Όταν ο χρήστης πατάει ενα κουμπί (συμβάν) τότε κάτι πρέπει να γίνεται (χειρισμός συμβάντος)”

Ο χειρισμός γίνεται απο event listeners.

Οι πιο συχνά χρησιμοποιούμενοι είναι:• OnClickListener για όταν ο χρήστης πατήσει• OnLongClickListener για όταν πατήσει με πείσμα

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

Android – GUI Dealing with events

Παράδειγμα:

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

Android – GUI… additionally…

Επιπλέον αξίζει να μάθετε:• Τι είναι layout και πώς μπορώ να έχω εμφολευμένα layouts για

δημιουργία σύνθετου GUI (RelativeLayout, LinearLayout etc)• Τι είναι ListView, GridView και πώς μπορούν να

χρησιμοποιηθούν για να εμφανιστούν λίστες ή πλέγματα (grids) απο στοιχεία

• Σε τι αντιστοιχούν οι μονάδες dp, sp και με ποιον τρόπο μπορούν να μεταφραστούν από px

• Τι είναι τα fragments και πώς μπορούν να αξιοποιηθούν• Πώς μπορώ να φτιάξω custom UI components

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

Android – Notifications

Επικοινωνία εκτος εφαρμογής…

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

Android – Notifications

Ή και εκτός συσκευής...

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

Android – Notifications

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

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

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