SlideShare a Scribd company logo
1 of 51
The Social Publishing Network
28 Luglio 2015
Piattaforma
online
Le persone
propongono
idee di app
Creano team
attorno ai
progetti
Sviluppano
app insieme
TALENTI
Un Team di talenti per il successo
Sviluppatore ContenutiDesigner
Traduttore
Project Manager
Sound Designer
MakeItApp è Social Network
Talenti creano profili con skills
condividono progetti
Team condividono il talento
condividono ricavi
investimento zero
investito solo il tempo
App
TOOLS
L’App è la punta dell’iceberg
Analytics BaaS
ESPERIENZA
Un App Angel affianco ad ogni Team!
Porta l’esperienza del mercato
per evitare i tipici errori.
Testare il mercato e saper
leggere dati e feedback utenti
MakeItApp è Time to Market Accelerator
Tool di Sviluppo
BaaS
Adv Network
Analytics
Tool di Progetto
Wiki
Issue tracker
Git repository
Coaching
App Angel
Esperienza condivisa
PROMOZIONE
Il Mare Magnum!
MakeItApp è Sales booster
Cross & Up Selling
cross-sell +51% (flurry)
up-sell +85% (flurry)
Campagne Adv
Partnership con network
Portfolio di spesa
Comunicazione
Digital PR
PR con Store
Social & blog
Eventi
Un Ambiente Fertile per le App
TALENTI SUPPORTO PROMOZIONE
Revenue Sharing
MakeItApp è in revenue
sharing con i Team,
partecipando al 30% dei
ricavi delle App.
Revenue Sharing
Tutti condividono con gli
altri i ricavi, tutti vincono se
anche gli altri vincono.
Perché un server?
www.makeitapp.eu
● Data Store
● File Storage
● Validazione Receipts
● Push Notification
● Configurazione App in remoto
● Login Utenti
● Cron job
Aprire il proprio server
www.makeitapp.eu
● Scegliere un hosting (AWS,
DigitalOcean, Linode, ecc.)
● Capire le proprie necessità e
scegliere un piano adeguato
● Attivare la macchina e costruire
lo stack di backend
● Attivarsi per renderla sicura
dagli attacchi
● Sviluppare i servizi che si vuole
utilizzare
Aprire il proprio server
www.makeitapp.eu
● Rendersi conto di aver
cancellato l’accesso root ed
essersi chiusi fuori dalla propria
macchina
● Ricominciare tutto dall’inizio
● Preparasi al peggio il giorno del
lancio
2011 BaaS
www.makeitapp.eu
Backend as a Service
Un servizio cloud (ed a richiesta) che risolve tipici
problemi server-side
Vantaggi BaaS
www.makeitapp.eu
● Nessun server setup per ogni App che sviluppiamo
● Nessuna replica di codice per ogni App
● API semplici
● Indipendenza dall’OS del dispositivo mobile
The Social Publishing Network
23 Settembre
2015
Perché un server?
www.makeitapp.eu
● Data Store
● File Storage
● Validazione Receipts
● Push Notification
● Configurazione App in remoto
● Login Utenti
● Cron job
Aprire il proprio server
www.makeitapp.eu
● Scegliere un hosting (AWS,
DigitalOcean, Linode, ecc.)
● Capire le proprie necessità e
scegliere un piano adeguato
● Attivare la macchina e costruire
lo stack di backend
● Attivarsi per renderla sicura dagli
attacchi
● Sviluppare i servizi che si vuole
utilizzare
Aprire il proprio server
www.makeitapp.eu
● Rendersi conto di aver cancellato
l’accesso root ed essersi chiusi
fuori dalla propria macchina
● Ricominciare tutto dall’inizio
● Preparasi al peggio il giorno del
lancio
2011 BaaS
www.makeitapp.eu
Backend as a Service
Un servizio cloud (ed a richiesta) che risolve
tipici problemi server-side
Vantaggi BaaS
www.makeitapp.eu
● Nessun server setup per ogni App che sviluppiamo
● Nessuna replica di codice per ogni App
● API semplici
● Indipendenza dall’OS del dispositivo mobile
BaaS Architecture example
REST APIs
Push Servers
Google
Apple
Microsoft
SDK
Mobile
Code
Push
Notifications
NoSQL
Collections
Storage
File
SystemScheduler
Backup
System
Data
Connectors
Data Modeler & ConfiguratorBackoffice for App CMS
App
Cloud
Data
Collections
and Offline
Sync
Users
Files /
Resources
Social Advertising
In App
Purchase
Validators
Analytics Events
Plugins and
Extensions
CURL!
CURL! (cont.)
#simple read
curl --header "secret:secret" -H "Accept: application/json" -H
"Content-Type: application/json" -X GET
https://demo.baas.makeitapp.eu/test
#create/update
curl --header "secret:secret" -H "Accept: application/json" -H
"Content-Type: application/json" -d ‘{"field1": "ciao mondo"}’ -X POST
https://demo.baas.makeitapp.eu/test
#simple filter
curl --header "secret:secret" -H "Accept: application/json" -H
"Content-Type: application/json" -X GET -G
https://demo.baas.makeitapp.eu/test --data-urlencode '{"field1": "ciao
mondo"}'
Android – iOS SDK
Una dolce copertura sopra le API REST ed anche qualcosa di più
Android – iOS SDK
● MKAppInstance: Singleton che si occupa di inizializzare e mantenere
le connessioni con il server remoto.
● MKCollection: L’oggetto base, ogni sua istanza rappresenta una riga
all’interno delle collezioni su MongoDB
● MKFileCollection: Rappresenta un file caricato sul server ed incapsula
le operazioni di upload e download
● MKUser: Un’utente della piattaforma. Espone i metodi per effettuare
login/logout e un sistema di SSO per le App pubblicate da MakeItApp
● MKQuery: Come suggerisce il nome è la rappresentazione di una
query sul database. È la classe principale utilizzata per ottenere i dati.
Android – iOS SDK free goodies
● MKBannerView: È una classe wrapper per il nostro servizio di adv
mediation.
● MKAnalytics: È la classe utilizzata per sfuttare il servizio di analytics
che mettiamo a disposizione dei progetti creati sulla nostra
piattaforma.
● MKLoginViewController/MKLoginActivity: È una classe per
visualizzare una schermata di login per gli utenti.
● MKRegisterViewController/MKRegistrationActivity: È una classe per
visualizzare una schermata di registrazione per i nuovi utenti.
Android – iOS chat example
MKAppInstanceMKQuery
MKCollection
MKFileCollection
MKUser
MakeItApp Android & iOS SDK
MakeItApp BaaS
ChatMessage collection File collection User collection
Message
- Alias
- Message
- Attachment
Sviluppiamo Whatsapp in un’ora con un
BaaS
Integriamo la comunicazione con il BaaS
• Inizializziamo la singleton (MKAppInstance)
• Integriamo la login con la piattaforma (MKUser)
• Recuperiamo i messaggi già inviati (MKQuery)
• Salviamo i messaggi inviati dal nostro utente (MKCollection)
• Integriamo i servizi di push notification (senza riscontro per via di certificati
e provisioning profiles) (MKAppInstance)
• Aggiungiamo la parte di download e upload dei file (MKFileCollection)
iOS - Importare ed inizializzare l’SDK
Login Utente
L’applicazione per riconoscere i vari utenti sfrutterà la login messa a
disposizione dal nostro BaaS.
Usate la classe MKLoginViewController messa a disposizione dall’SDK ed
implementate in modo corretto il suo delegate.
MKQuery *query = [MKQuery queryWithcollectionName:@"chatmessage"];
query.limit = 30; // optional
query.skip = 0; // optional
[query orderDescendingByCreationDate];
[query findAllInBackgroundWithBlock:^(NSArray *results, NSError *error) {
MKQuery
MKQuery
MKCollection
MKCollection *newText = [MKCollection collectionWithName:@"chatmessage"];
[newText setObject:<text> forKey:@"message"];
or
[newText setObject:<fileCollId> forKey:@"messageAttachment"];
[newText setObject:<userName> forKey:@"alias"];
[newText saveInBackgroundWithBlock:^(MKCollection *collection, NSError
*error) {
MKFileCollection
Upload:
MKCollectionFile *file = [MKCollectionFile fileWithName:fileName
data:<JPGData>];
[file saveInBackgroundWithBlock:^(MKCollection *collection, NSError *error) {
Download:
MKQuery *query = [MKQuery queryWithcollectionName:@"files"];
[query whereKey:@"file" equalTo:<collectionId>];
MKCollectionFile *file = results.firstObject;
[file loadDataInBackgroundWithBlock:^(BOOL success, NSData *data, NSError
*loadError) {
MKFileCollection
UI
L’importante è che abbia almeno le seguenti caratteristiche
• Login utente al lancio
• Differenza fra miei messaggi e messaggi di altri
• UITextField/UITextView per inserire il testo
• Bottone per il selezionamento/scatto di uno foto da inviare
• Nome dell’utente
Android - Importare ed inizializzare l’SDK
SDK: https://github.com/MakeItApp/android-example-chat
DOC: http://www.makeitapp.eu/documentation/android-sdk/
Login Utente
L’applicazione per riconoscere i vari utenti sfrutterà la login messa a
disposizione dal nostro BaaS.
Usate la classe MKUserExtension e MKLoginActivity messe a
disposizione dall’SDK ed implementate il flusso di login
MKQuery
MKCollection
MKFileCollection - Upload
MKFileColelction - Download
UI
L’importante è che abbia almeno le seguenti caratteristiche
• Login utente al lancio
• Differenza fra miei messaggi e messaggi di altri
• EditText per inserire il testo del messaggio
• Bottone per il selezionamento/scatto di uno foto da inviare
• Nome dell’utente

More Related Content

Similar to Modi innovativi per costruire App

Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web Appdotnetcode
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web Appdotnetcode
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angulardotnetcode
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDaniele Mondello
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store appsDotNetCampus
 
Cloud & No-Coding: come fare su Azure?
Cloud & No-Coding: come fare su Azure?Cloud & No-Coding: come fare su Azure?
Cloud & No-Coding: come fare su Azure?Andrea Carratta
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
 
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloudRiccardo Zamana
 
Wearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchWearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchPaolo Musolino
 
Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Todi Appy Days
 
App Mobile Powerapps
App Mobile PowerappsApp Mobile Powerapps
App Mobile PowerappsGiuneco S.r.l
 
Aruba Cloud: 5 minuti sul VisualCloud #Arubait5
Aruba Cloud: 5 minuti sul VisualCloud #Arubait5Aruba Cloud: 5 minuti sul VisualCloud #Arubait5
Aruba Cloud: 5 minuti sul VisualCloud #Arubait5Aruba S.p.A.
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS BuildGian Maria Ricci
 
Webkit meets native development
Webkit meets native developmentWebkit meets native development
Webkit meets native developmentNicholas Valbusa
 
Con Aruba, a lezione di cloud #lezione 31: 'API e Cloud Computing, personali...
Con Aruba, a lezione di cloud  #lezione 31: 'API e Cloud Computing, personali...Con Aruba, a lezione di cloud  #lezione 31: 'API e Cloud Computing, personali...
Con Aruba, a lezione di cloud #lezione 31: 'API e Cloud Computing, personali...Aruba S.p.A.
 
SMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA ItalySMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA ItalyPaolo Dadda
 

Similar to Modi innovativi per costruire App (20)

Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angular
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
 
Cloud & No-Coding: come fare su Azure?
Cloud & No-Coding: come fare su Azure?Cloud & No-Coding: come fare su Azure?
Cloud & No-Coding: come fare su Azure?
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloud
 
Swagger per tutti
Swagger per tuttiSwagger per tutti
Swagger per tutti
 
Wearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchWearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple Watch
 
Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015
 
App Mobile Powerapps
App Mobile PowerappsApp Mobile Powerapps
App Mobile Powerapps
 
Virtual Agency
Virtual AgencyVirtual Agency
Virtual Agency
 
m-v-vm @ UgiAlt.Net
m-v-vm @ UgiAlt.Netm-v-vm @ UgiAlt.Net
m-v-vm @ UgiAlt.Net
 
Aruba Cloud: 5 minuti sul VisualCloud #Arubait5
Aruba Cloud: 5 minuti sul VisualCloud #Arubait5Aruba Cloud: 5 minuti sul VisualCloud #Arubait5
Aruba Cloud: 5 minuti sul VisualCloud #Arubait5
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS Build
 
WordCamp Catania 2019 PWA e TWA
WordCamp Catania 2019 PWA e TWAWordCamp Catania 2019 PWA e TWA
WordCamp Catania 2019 PWA e TWA
 
Webkit meets native development
Webkit meets native developmentWebkit meets native development
Webkit meets native development
 
Con Aruba, a lezione di cloud #lezione 31: 'API e Cloud Computing, personali...
Con Aruba, a lezione di cloud  #lezione 31: 'API e Cloud Computing, personali...Con Aruba, a lezione di cloud  #lezione 31: 'API e Cloud Computing, personali...
Con Aruba, a lezione di cloud #lezione 31: 'API e Cloud Computing, personali...
 
SMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA ItalySMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA Italy
 

More from Commit University

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdfBreaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdfCommit University
 
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdfAccelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdfCommit University
 
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...Commit University
 
Commit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptxCommit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptxCommit University
 
Sviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PASviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PACommit University
 
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...Commit University
 
Prisma the ORM that node was waiting for
Prisma the ORM that node was waiting forPrisma the ORM that node was waiting for
Prisma the ORM that node was waiting forCommit University
 
Decision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit UniversityDecision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit UniversityCommit University
 
Component Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdfComponent Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdfCommit University
 
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Commit University
 
Prototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsPrototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsCommit University
 
KMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and SwiftKMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and SwiftCommit University
 
Da Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazioneDa Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazioneCommit University
 
Orchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lcOrchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lcCommit University
 
Fastify has defeated Lagacy-Code
Fastify has defeated Lagacy-CodeFastify has defeated Lagacy-Code
Fastify has defeated Lagacy-CodeCommit University
 

More from Commit University (20)

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdfBreaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
 
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdfAccelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
 
Slide-10years.pdf
Slide-10years.pdfSlide-10years.pdf
Slide-10years.pdf
 
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
 
Vue.js slots.pdf
Vue.js slots.pdfVue.js slots.pdf
Vue.js slots.pdf
 
Commit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptxCommit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptx
 
Sviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PASviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PA
 
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
 
Prisma the ORM that node was waiting for
Prisma the ORM that node was waiting forPrisma the ORM that node was waiting for
Prisma the ORM that node was waiting for
 
Decision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit UniversityDecision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit University
 
Component Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdfComponent Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdf
 
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
 
Prototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsPrototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step Functions
 
KMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and SwiftKMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and Swift
 
Da Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazioneDa Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazione
 
Orchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lcOrchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lc
 
Fastify has defeated Lagacy-Code
Fastify has defeated Lagacy-CodeFastify has defeated Lagacy-Code
Fastify has defeated Lagacy-Code
 
SwiftUI vs UIKit
SwiftUI vs UIKitSwiftUI vs UIKit
SwiftUI vs UIKit
 

Modi innovativi per costruire App

  • 1. The Social Publishing Network 28 Luglio 2015
  • 2. Piattaforma online Le persone propongono idee di app Creano team attorno ai progetti Sviluppano app insieme
  • 4. Un Team di talenti per il successo Sviluppatore ContenutiDesigner Traduttore Project Manager Sound Designer
  • 5. MakeItApp è Social Network Talenti creano profili con skills condividono progetti Team condividono il talento condividono ricavi investimento zero investito solo il tempo App
  • 7. L’App è la punta dell’iceberg Analytics BaaS
  • 9. Un App Angel affianco ad ogni Team! Porta l’esperienza del mercato per evitare i tipici errori. Testare il mercato e saper leggere dati e feedback utenti
  • 10. MakeItApp è Time to Market Accelerator Tool di Sviluppo BaaS Adv Network Analytics Tool di Progetto Wiki Issue tracker Git repository Coaching App Angel Esperienza condivisa
  • 13. MakeItApp è Sales booster Cross & Up Selling cross-sell +51% (flurry) up-sell +85% (flurry) Campagne Adv Partnership con network Portfolio di spesa Comunicazione Digital PR PR con Store Social & blog Eventi
  • 14. Un Ambiente Fertile per le App TALENTI SUPPORTO PROMOZIONE
  • 15. Revenue Sharing MakeItApp è in revenue sharing con i Team, partecipando al 30% dei ricavi delle App.
  • 16. Revenue Sharing Tutti condividono con gli altri i ricavi, tutti vincono se anche gli altri vincono.
  • 17. Perché un server? www.makeitapp.eu ● Data Store ● File Storage ● Validazione Receipts ● Push Notification ● Configurazione App in remoto ● Login Utenti ● Cron job
  • 18. Aprire il proprio server www.makeitapp.eu ● Scegliere un hosting (AWS, DigitalOcean, Linode, ecc.) ● Capire le proprie necessità e scegliere un piano adeguato ● Attivare la macchina e costruire lo stack di backend ● Attivarsi per renderla sicura dagli attacchi ● Sviluppare i servizi che si vuole utilizzare
  • 19. Aprire il proprio server www.makeitapp.eu ● Rendersi conto di aver cancellato l’accesso root ed essersi chiusi fuori dalla propria macchina ● Ricominciare tutto dall’inizio ● Preparasi al peggio il giorno del lancio
  • 20. 2011 BaaS www.makeitapp.eu Backend as a Service Un servizio cloud (ed a richiesta) che risolve tipici problemi server-side
  • 21. Vantaggi BaaS www.makeitapp.eu ● Nessun server setup per ogni App che sviluppiamo ● Nessuna replica di codice per ogni App ● API semplici ● Indipendenza dall’OS del dispositivo mobile
  • 22. The Social Publishing Network 23 Settembre 2015
  • 23. Perché un server? www.makeitapp.eu ● Data Store ● File Storage ● Validazione Receipts ● Push Notification ● Configurazione App in remoto ● Login Utenti ● Cron job
  • 24. Aprire il proprio server www.makeitapp.eu ● Scegliere un hosting (AWS, DigitalOcean, Linode, ecc.) ● Capire le proprie necessità e scegliere un piano adeguato ● Attivare la macchina e costruire lo stack di backend ● Attivarsi per renderla sicura dagli attacchi ● Sviluppare i servizi che si vuole utilizzare
  • 25. Aprire il proprio server www.makeitapp.eu ● Rendersi conto di aver cancellato l’accesso root ed essersi chiusi fuori dalla propria macchina ● Ricominciare tutto dall’inizio ● Preparasi al peggio il giorno del lancio
  • 26. 2011 BaaS www.makeitapp.eu Backend as a Service Un servizio cloud (ed a richiesta) che risolve tipici problemi server-side
  • 27. Vantaggi BaaS www.makeitapp.eu ● Nessun server setup per ogni App che sviluppiamo ● Nessuna replica di codice per ogni App ● API semplici ● Indipendenza dall’OS del dispositivo mobile
  • 28. BaaS Architecture example REST APIs Push Servers Google Apple Microsoft SDK Mobile Code Push Notifications NoSQL Collections Storage File SystemScheduler Backup System Data Connectors Data Modeler & ConfiguratorBackoffice for App CMS App Cloud Data Collections and Offline Sync Users Files / Resources Social Advertising In App Purchase Validators Analytics Events Plugins and Extensions
  • 29. CURL!
  • 30. CURL! (cont.) #simple read curl --header "secret:secret" -H "Accept: application/json" -H "Content-Type: application/json" -X GET https://demo.baas.makeitapp.eu/test #create/update curl --header "secret:secret" -H "Accept: application/json" -H "Content-Type: application/json" -d ‘{"field1": "ciao mondo"}’ -X POST https://demo.baas.makeitapp.eu/test #simple filter curl --header "secret:secret" -H "Accept: application/json" -H "Content-Type: application/json" -X GET -G https://demo.baas.makeitapp.eu/test --data-urlencode '{"field1": "ciao mondo"}'
  • 31. Android – iOS SDK Una dolce copertura sopra le API REST ed anche qualcosa di più
  • 32. Android – iOS SDK ● MKAppInstance: Singleton che si occupa di inizializzare e mantenere le connessioni con il server remoto. ● MKCollection: L’oggetto base, ogni sua istanza rappresenta una riga all’interno delle collezioni su MongoDB ● MKFileCollection: Rappresenta un file caricato sul server ed incapsula le operazioni di upload e download ● MKUser: Un’utente della piattaforma. Espone i metodi per effettuare login/logout e un sistema di SSO per le App pubblicate da MakeItApp ● MKQuery: Come suggerisce il nome è la rappresentazione di una query sul database. È la classe principale utilizzata per ottenere i dati.
  • 33. Android – iOS SDK free goodies ● MKBannerView: È una classe wrapper per il nostro servizio di adv mediation. ● MKAnalytics: È la classe utilizzata per sfuttare il servizio di analytics che mettiamo a disposizione dei progetti creati sulla nostra piattaforma. ● MKLoginViewController/MKLoginActivity: È una classe per visualizzare una schermata di login per gli utenti. ● MKRegisterViewController/MKRegistrationActivity: È una classe per visualizzare una schermata di registrazione per i nuovi utenti.
  • 34. Android – iOS chat example MKAppInstanceMKQuery MKCollection MKFileCollection MKUser MakeItApp Android & iOS SDK MakeItApp BaaS ChatMessage collection File collection User collection Message - Alias - Message - Attachment
  • 35. Sviluppiamo Whatsapp in un’ora con un BaaS
  • 36. Integriamo la comunicazione con il BaaS • Inizializziamo la singleton (MKAppInstance) • Integriamo la login con la piattaforma (MKUser) • Recuperiamo i messaggi già inviati (MKQuery) • Salviamo i messaggi inviati dal nostro utente (MKCollection) • Integriamo i servizi di push notification (senza riscontro per via di certificati e provisioning profiles) (MKAppInstance) • Aggiungiamo la parte di download e upload dei file (MKFileCollection)
  • 37. iOS - Importare ed inizializzare l’SDK
  • 38. Login Utente L’applicazione per riconoscere i vari utenti sfrutterà la login messa a disposizione dal nostro BaaS. Usate la classe MKLoginViewController messa a disposizione dall’SDK ed implementate in modo corretto il suo delegate.
  • 39. MKQuery *query = [MKQuery queryWithcollectionName:@"chatmessage"]; query.limit = 30; // optional query.skip = 0; // optional [query orderDescendingByCreationDate]; [query findAllInBackgroundWithBlock:^(NSArray *results, NSError *error) { MKQuery
  • 41. MKCollection MKCollection *newText = [MKCollection collectionWithName:@"chatmessage"]; [newText setObject:<text> forKey:@"message"]; or [newText setObject:<fileCollId> forKey:@"messageAttachment"]; [newText setObject:<userName> forKey:@"alias"]; [newText saveInBackgroundWithBlock:^(MKCollection *collection, NSError *error) {
  • 42. MKFileCollection Upload: MKCollectionFile *file = [MKCollectionFile fileWithName:fileName data:<JPGData>]; [file saveInBackgroundWithBlock:^(MKCollection *collection, NSError *error) { Download: MKQuery *query = [MKQuery queryWithcollectionName:@"files"]; [query whereKey:@"file" equalTo:<collectionId>]; MKCollectionFile *file = results.firstObject; [file loadDataInBackgroundWithBlock:^(BOOL success, NSData *data, NSError *loadError) {
  • 44. UI L’importante è che abbia almeno le seguenti caratteristiche • Login utente al lancio • Differenza fra miei messaggi e messaggi di altri • UITextField/UITextView per inserire il testo • Bottone per il selezionamento/scatto di uno foto da inviare • Nome dell’utente
  • 45. Android - Importare ed inizializzare l’SDK SDK: https://github.com/MakeItApp/android-example-chat DOC: http://www.makeitapp.eu/documentation/android-sdk/
  • 46. Login Utente L’applicazione per riconoscere i vari utenti sfrutterà la login messa a disposizione dal nostro BaaS. Usate la classe MKUserExtension e MKLoginActivity messe a disposizione dall’SDK ed implementate il flusso di login
  • 51. UI L’importante è che abbia almeno le seguenti caratteristiche • Login utente al lancio • Differenza fra miei messaggi e messaggi di altri • EditText per inserire il testo del messaggio • Bottone per il selezionamento/scatto di uno foto da inviare • Nome dell’utente