AppleWatch is selling like crazy and anyone want his favorite apps on the wrist of his users. How can you build a counterpart app for Apple Watch? Apple has already released watchOS 2 with big news for developer and the third version of watchOS is arriving with a new Apple Watch! How can you take advantages of this new things? This talk will explain how an iOS developer can migrate his app to Apple Watch.
Francesco Novelli presented information on developing apps for Apple TV. He discussed how tvOS allows for the creation of apps specifically for Apple TV using frameworks like UIKit, Metal/OpenGL and AVKit. TVMLKit allows for the creation of apps using HTML and CSS templates. Effective Apple TV app design follows principles of being connected to keep the user engaged, clear with simple and intuitive interfaces, and immersive by utilizing the full screen for content.
Bluetooth 4.0 and iBeacons in your iOS [Codemotion Milan 2014]Francesco Novelli
How an iOS developer can integrate BLE and iBeacons in his app? This talk explain the various API that Apple allow to be used and the iBeacon standard for proximity apps.
The document discusses Bluetooth Low Energy (BLE) and iBeacons. It provides an overview of BLE, how it differs from classic Bluetooth, and how it can be implemented in iOS apps using CoreBluetooth. It then explains what iBeacons are, how they work by broadcasting UUID, major and minor values, and how they can be used for proximity-based notifications and interactions in apps. It also discusses how a Raspberry Pi can be turned into an iBeacon transmitter using BLE hardware and open source software.
This document discusses exploring the qualities of good and bad friendships and different types of peer pressure. It provides discussion questions about the qualities students look for in friends, whether good friends can have both good and bad qualities, and ways friends may pressure each other to do things against their beliefs or values. Examples of peer pressure situations are given, such as a friend pressuring someone to exclude another person or pressure to smoke cigarettes or carry an illegal phone.
The Six Highest Performing B2B Blog Post FormatsBarry Feldman
If your B2B blogging goals include earning social media shares and backlinks to boost your search rankings, this infographic lists the size best approaches.
1) The document discusses the opportunity for technology to improve organizational efficiency and transition economies into a "smart and clean world."
2) It argues that aggregate efficiency has stalled at around 22% for 30 years due to limitations of the Second Industrial Revolution, but that digitizing transport, energy, and communication through technologies like blockchain can help manage resources and increase efficiency.
3) Technologies like precision agriculture, cloud computing, robotics, and autonomous vehicles may allow for "dematerialization" and do more with fewer physical resources through effects like reduced waste and need for transportation/logistics infrastructure.
2012 has been the year of cloud. In this tech talk we will talk about the integration of cloud solution with mobile application, focusing on iOS Application. Not only iCloud, but also other cloud solution available for all mobile platform like Amazon S3.
AppleWatch is selling like crazy and anyone want his favorite apps on the wrist of his users. How can you build a counterpart app for Apple Watch? Apple has already released watchOS 2 with big news for developer and the third version of watchOS is arriving with a new Apple Watch! How can you take advantages of this new things? This talk will explain how an iOS developer can migrate his app to Apple Watch.
Francesco Novelli presented information on developing apps for Apple TV. He discussed how tvOS allows for the creation of apps specifically for Apple TV using frameworks like UIKit, Metal/OpenGL and AVKit. TVMLKit allows for the creation of apps using HTML and CSS templates. Effective Apple TV app design follows principles of being connected to keep the user engaged, clear with simple and intuitive interfaces, and immersive by utilizing the full screen for content.
Bluetooth 4.0 and iBeacons in your iOS [Codemotion Milan 2014]Francesco Novelli
How an iOS developer can integrate BLE and iBeacons in his app? This talk explain the various API that Apple allow to be used and the iBeacon standard for proximity apps.
The document discusses Bluetooth Low Energy (BLE) and iBeacons. It provides an overview of BLE, how it differs from classic Bluetooth, and how it can be implemented in iOS apps using CoreBluetooth. It then explains what iBeacons are, how they work by broadcasting UUID, major and minor values, and how they can be used for proximity-based notifications and interactions in apps. It also discusses how a Raspberry Pi can be turned into an iBeacon transmitter using BLE hardware and open source software.
This document discusses exploring the qualities of good and bad friendships and different types of peer pressure. It provides discussion questions about the qualities students look for in friends, whether good friends can have both good and bad qualities, and ways friends may pressure each other to do things against their beliefs or values. Examples of peer pressure situations are given, such as a friend pressuring someone to exclude another person or pressure to smoke cigarettes or carry an illegal phone.
The Six Highest Performing B2B Blog Post FormatsBarry Feldman
If your B2B blogging goals include earning social media shares and backlinks to boost your search rankings, this infographic lists the size best approaches.
1) The document discusses the opportunity for technology to improve organizational efficiency and transition economies into a "smart and clean world."
2) It argues that aggregate efficiency has stalled at around 22% for 30 years due to limitations of the Second Industrial Revolution, but that digitizing transport, energy, and communication through technologies like blockchain can help manage resources and increase efficiency.
3) Technologies like precision agriculture, cloud computing, robotics, and autonomous vehicles may allow for "dematerialization" and do more with fewer physical resources through effects like reduced waste and need for transportation/logistics infrastructure.
2012 has been the year of cloud. In this tech talk we will talk about the integration of cloud solution with mobile application, focusing on iOS Application. Not only iCloud, but also other cloud solution available for all mobile platform like Amazon S3.
Wearable Lab: Progettazione per Apple WatchPaolo Musolino
Le applicazioni mobile hanno trovato diffusione su larga scala attraverso gli smartphone. Oggi queste app hanno un nuovo modo di essere portate in mobilità grazie ad Apple Watch, un dispositivo wearable capace di sfoggiare una interfaccia familiare come quella di iOS. Ma progettare app per l’Apple Watch pone gli sviluppatori e i designer di fronte ad una nuova sfida ancora più audace: con un piccolo schermo c’è molto meno spazio per l’interazione dell’utente. In questo lab tenuto a Todi Appy Days 2015, assieme all'amico Erik Peruzzi ho spiegato quali sono le possibilità offerta da Apple Watch, come farlo comunicare con iPhone, e cosa possiamo aspettarci nel breve periodo grazie all’introduzione di Watch OS 2.
Slide utilizzate durante l'intervento sulle Progressive Web App e le Trusted Web Activities applicate a Wordpress e Woocommerce.
Trovate informazioni più precise sull'argomento su https://2019.catania.wordcamp.org/session/progressive-web-app-e-twa/
e sugli articoli https://www.francescogiammanco.it/progressive-web-app-lighthouse/
e https://www.francescogiammanco.it/trasformare-un-sito-in-twa/
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Antonio Gallo
Ionic è da anni uno dei framework basati su angular più famosi e più usati.
La versione 4 è una completa riscrittura della precedente versione usando tutta una serie di nuovi standard web con cui avremo a che fare sempre più spesso nei prossimi anni: Custom Element, Variabili CSS, Shadow DOM e non solo.
In questo talk, sia per esperti che principianti, vedremo come, grazie a Ionic, si può usare Angular per sviluppare un applicazione funzionante sia sul Web che sul Mobile.
Antonio Russo, Federico Oldrini e Jacopo Giola di Makeitapp hanno presentato il workshop di CommitUniversity, dedicato al Backend as a Service, mostrandoci come costruire con esso un applicazione.
Sviluppare software a colpi di test – II appuntamento: “mani in pasta col BDD.Open Campus Tiscali
Startupper, product/project manager, sviluppatori, tester, se siete rimasti impressionati dal workshop animato e irriverente sul Behavior Driven Development, non potete perdere il secondo appuntamento con Enrico Marongiu, Andrea Salidu e Alessandro Mattiello, giovedì 18 giugno dalle 18.00 alle 20.00.
La creazione di un software non è un processo semplice, vi sarà capitato di dover affrontare almeno uno di questi problemi: difficoltà di comunicazione tra il team tecnico e il cliente, definizione superficiale dei requisiti e/o delle specifiche del software, scarsa attenzione ai test, fondamentali per verificare la qualità del prodotto.
La pratica BDD (Behavior Driven Development) risolve queste difficoltà, creando un linguaggio comune comprensibile a tutti gli attori coinvolti, definendo contemporaneamente le specifiche dei requisiti e i test di accettazione/collaudo (sono gratis!!! ), e fornendo uno strumento intuitivo per monitorare l’avanzamento del progetto.
Enrico, Alessandro e Andrea vi presenteranno, attraverso 3 talk, le best practice per adottare il BDD in maniera indolore, produttiva e veloce.
Mettiamo mano al codice e realizziamo una semplice applicazione RESTful utizzando BEHAT. Sarà fornito un ambiente pronto all’uso per l’esecuzione dei test funzionali.
Portate un PC con ambiente di sviluppo e interprete php configurato e pronto all’uso (o trovate qualcuno con cui lavorare).
Chi sono Enrico, Alessandro e Andrea?
Enrico Marongiu
Enrico ha 15 anni di esperienza professionale nel mondo ICT in varie vesti e ricoprendo vari ruoli, continua a divertirsi nel creare bug di una certa entità. Al momento li crea in Tiscali divisione Media. A tempo perso insiste pervicacemente nel voler imparare a suonare il Sax.
Alessandro Mattiello
Alessandro lavora da 15 anni in Tiscali nel settore Media. Si occupa di progettazione web e negli ultimi anni ha lavorato sulla realizzazione di istella social. Si occupa di diversi progetti relativi al portale Tiscali di cui coordina le attività di sviluppo. Se avesse del tempo gli piacerebbe uscire in moto o fare fotografie, ma attualmente si diverte a fare il papà a tempo pieno.
Andrea Salidu
Andrea ha 14 anni di esperienza nello sviluppo e progettazione web application. Attualmente, lavora per Tiscali nella sezione Media e si occupa di diversi progetti web/social tra i quali istella. È molto attento alla qualità del codice e ai processi che possono essere usati per migliorarlo. A tempo perso lavora come game designer con suoi amici Fabbricastorie.
Livin' with Docker - dallo sviluppo alla produzionegiacomos
Presentiamo un caso di studio di un progetto web nato e cresciuto con Docker al centro della scena. Vedremo le soluzioni scelte durante tutto il percorso, partendo da docker-compose in locale, per arrivare a CoreOS e systemd in produzione, passando per la fase di continuous integration/build e il deploy.
Talk DockerOps 13-02-2016, Ferrara
Questo piccolo documento nasce dall’esigenza di esportare i contatti presenti in un iPhone 2G con iOS 3.1.3 verso la rubrica Contatti locale e verso la rubric contatti di iCloud, sincronizzata localmente con la versione desktop.
Codice iPhone lavato a caldo: come "restringere" la tua app per Apple WatchCodemotion
"Codice iPhone lavato a caldo: come "restringere" la tua app per Apple Watch" by Francesco Ingrassia, Marco Passariello, Salvatore Ferranti
Il supporto ad Apple Watch rappresenta per lo sviluppatore iPhone un crocevia fondamentale per emergere dalla massa, nonché una sfida per i designer di tutto il mondo che devono rivoluzionare il modo con cui l'utente interagisce. Partendo da un'app iPhone di esempio avremo modo di toccare con mano quali sono gli approcci comuni ad iOS, le novità e le principali problematiche che il programmatore deve affrontare nello sviluppo di app per Apple Watch.
Wearable Lab: Progettazione per Apple WatchPaolo Musolino
Le applicazioni mobile hanno trovato diffusione su larga scala attraverso gli smartphone. Oggi queste app hanno un nuovo modo di essere portate in mobilità grazie ad Apple Watch, un dispositivo wearable capace di sfoggiare una interfaccia familiare come quella di iOS. Ma progettare app per l’Apple Watch pone gli sviluppatori e i designer di fronte ad una nuova sfida ancora più audace: con un piccolo schermo c’è molto meno spazio per l’interazione dell’utente. In questo lab tenuto a Todi Appy Days 2015, assieme all'amico Erik Peruzzi ho spiegato quali sono le possibilità offerta da Apple Watch, come farlo comunicare con iPhone, e cosa possiamo aspettarci nel breve periodo grazie all’introduzione di Watch OS 2.
Slide utilizzate durante l'intervento sulle Progressive Web App e le Trusted Web Activities applicate a Wordpress e Woocommerce.
Trovate informazioni più precise sull'argomento su https://2019.catania.wordcamp.org/session/progressive-web-app-e-twa/
e sugli articoli https://www.francescogiammanco.it/progressive-web-app-lighthouse/
e https://www.francescogiammanco.it/trasformare-un-sito-in-twa/
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Antonio Gallo
Ionic è da anni uno dei framework basati su angular più famosi e più usati.
La versione 4 è una completa riscrittura della precedente versione usando tutta una serie di nuovi standard web con cui avremo a che fare sempre più spesso nei prossimi anni: Custom Element, Variabili CSS, Shadow DOM e non solo.
In questo talk, sia per esperti che principianti, vedremo come, grazie a Ionic, si può usare Angular per sviluppare un applicazione funzionante sia sul Web che sul Mobile.
Antonio Russo, Federico Oldrini e Jacopo Giola di Makeitapp hanno presentato il workshop di CommitUniversity, dedicato al Backend as a Service, mostrandoci come costruire con esso un applicazione.
Sviluppare software a colpi di test – II appuntamento: “mani in pasta col BDD.Open Campus Tiscali
Startupper, product/project manager, sviluppatori, tester, se siete rimasti impressionati dal workshop animato e irriverente sul Behavior Driven Development, non potete perdere il secondo appuntamento con Enrico Marongiu, Andrea Salidu e Alessandro Mattiello, giovedì 18 giugno dalle 18.00 alle 20.00.
La creazione di un software non è un processo semplice, vi sarà capitato di dover affrontare almeno uno di questi problemi: difficoltà di comunicazione tra il team tecnico e il cliente, definizione superficiale dei requisiti e/o delle specifiche del software, scarsa attenzione ai test, fondamentali per verificare la qualità del prodotto.
La pratica BDD (Behavior Driven Development) risolve queste difficoltà, creando un linguaggio comune comprensibile a tutti gli attori coinvolti, definendo contemporaneamente le specifiche dei requisiti e i test di accettazione/collaudo (sono gratis!!! ), e fornendo uno strumento intuitivo per monitorare l’avanzamento del progetto.
Enrico, Alessandro e Andrea vi presenteranno, attraverso 3 talk, le best practice per adottare il BDD in maniera indolore, produttiva e veloce.
Mettiamo mano al codice e realizziamo una semplice applicazione RESTful utizzando BEHAT. Sarà fornito un ambiente pronto all’uso per l’esecuzione dei test funzionali.
Portate un PC con ambiente di sviluppo e interprete php configurato e pronto all’uso (o trovate qualcuno con cui lavorare).
Chi sono Enrico, Alessandro e Andrea?
Enrico Marongiu
Enrico ha 15 anni di esperienza professionale nel mondo ICT in varie vesti e ricoprendo vari ruoli, continua a divertirsi nel creare bug di una certa entità. Al momento li crea in Tiscali divisione Media. A tempo perso insiste pervicacemente nel voler imparare a suonare il Sax.
Alessandro Mattiello
Alessandro lavora da 15 anni in Tiscali nel settore Media. Si occupa di progettazione web e negli ultimi anni ha lavorato sulla realizzazione di istella social. Si occupa di diversi progetti relativi al portale Tiscali di cui coordina le attività di sviluppo. Se avesse del tempo gli piacerebbe uscire in moto o fare fotografie, ma attualmente si diverte a fare il papà a tempo pieno.
Andrea Salidu
Andrea ha 14 anni di esperienza nello sviluppo e progettazione web application. Attualmente, lavora per Tiscali nella sezione Media e si occupa di diversi progetti web/social tra i quali istella. È molto attento alla qualità del codice e ai processi che possono essere usati per migliorarlo. A tempo perso lavora come game designer con suoi amici Fabbricastorie.
Livin' with Docker - dallo sviluppo alla produzionegiacomos
Presentiamo un caso di studio di un progetto web nato e cresciuto con Docker al centro della scena. Vedremo le soluzioni scelte durante tutto il percorso, partendo da docker-compose in locale, per arrivare a CoreOS e systemd in produzione, passando per la fase di continuous integration/build e il deploy.
Talk DockerOps 13-02-2016, Ferrara
Questo piccolo documento nasce dall’esigenza di esportare i contatti presenti in un iPhone 2G con iOS 3.1.3 verso la rubrica Contatti locale e verso la rubric contatti di iCloud, sincronizzata localmente con la versione desktop.
Codice iPhone lavato a caldo: come "restringere" la tua app per Apple WatchCodemotion
"Codice iPhone lavato a caldo: come "restringere" la tua app per Apple Watch" by Francesco Ingrassia, Marco Passariello, Salvatore Ferranti
Il supporto ad Apple Watch rappresenta per lo sviluppatore iPhone un crocevia fondamentale per emergere dalla massa, nonché una sfida per i designer di tutto il mondo che devono rivoluzionare il modo con cui l'utente interagisce. Partendo da un'app iPhone di esempio avremo modo di toccare con mano quali sono gli approcci comuni ad iOS, le novità e le principali problematiche che il programmatore deve affrontare nello sviluppo di app per Apple Watch.
2. Chi Sono?
Francesco Novelli francesco.nove@gmail.com - Run Code
- iOS Developer
- Web Developer
- Autore di Programmare applicazioni per
iPhone ed iPad
-Autore di Programamre applicazioni per
Mac OS X
4. Di cosa parliamo oggi?
Francesco Novelli francesco.nove@gmail.com - Run Code
CLOUD!
5. Di cosa parliamo oggi?
Francesco Novelli francesco.nove@gmail.com - Run Code
e iOS...
6. Di cosa parliamo oggi?
Francesco Novelli francesco.nove@gmail.com - Run Code
- iCloud
- DropBox
- Google Drive
- Amazon S3
7. iCloud
Francesco Novelli francesco.nove@gmail.com - Run Code
- Caratteristiche principali
- Come implementarlo in un App
- Pro
- Contro
8. iCloud – Caratteristiche principali
Francesco Novelli francesco.nove@gmail.com - Run Code
I numeri
- 250 milioni di utenti
- 500 milioni di iOS Device attivi
- 50% degli utenti usa iCloud
9. iCloud – Caratteristiche principali
Francesco Novelli francesco.nove@gmail.com - Run Code
- Sincronizzazione automatica
- Implementazione nativa nell’OS
- Risoluzione conflitti automatica
- 5 GB di spazio gratuito
- Disponibile per Mac OS X
10. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
- Non necessita di framework
- Certificati necessari
- iCloud Storage
- iCloud Key-Value Data Storage
11. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
Certificati:
Entitlement attivo nell’app
12. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
Certificati:
AppID in iOS Dev Portal
13. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
Certificati:
Provisioning Profile dedicato
14. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
iCloud Data Storage:
Archiviazione file
Salvataggio Database
Salvataggio CoreData
Condivisione file tra devices
15. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
iCloud Data Storage:
// Controllare che iCloud sia attivo
id currentToken =
[[NSFileManager defaultManager]
ubiquityIdentityToken];
if (!currentToken) {
// Alert user
}
16. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
self.query = [[NSMetadataQuery alloc] init];
[self.query setSearchScopes:
[NSArray arrayWithObject:
NSMetadataQueryUbiquitousDocumentsScope]];
NSPredicate *pred = [NSPredicate
predicateWithFormat:@"%K like 'Note_*'",
NSMetadataItemFSNameKey];
[self.query setPredicate:pred];
17. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
for (NSMetadataItem *item in [query results]) {
NSURL *url = [item valueForAttribute:NSMetadataItemURLKey];
Note *nota = [[Note alloc] initWithFileURL:url];
[nota openWithCompletionHandler:^(BOOL success) {
if (success) {
[self.notes addObject:nota];
}
}];
}
18. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
// CREARE UN FILE
NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
NSURL *ubiquitousPackage = [[ubiq URLByAppendingPathComponent:@"Documents"]
URLByAppendingPathComponent:fileName];
Note *nota = [[Note alloc] initWithFileURL:ubiquitousPackage];
[nota saveToURL:[nota fileURL]
forSaveOperation:UIDocumentSaveForCreating
completionHandler:^(BOOL success) {
if (success) {
[self.notes addObject:nota];
[self.tableView reloadData];
}
}];
];
19. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
DA RICORDARE
- NSFileManager per le operazioni di I/O
- NSMetadataQuery per la ricerca dei file
- I file vengono scaricati solo in caso di
necessità
- Caricare solo le differenze!
20. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
iCloud Key-Value Storage
Salvataggio impostazioni
Salvataggio stato dell’applicazione
Salvataggio piccoli dati
21. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
Classi ammesse:
• NSData
• NSString
• NSNumber
• NSDate
• NSArray
• NSDictionary
22. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
Scrivere un dato
[[NSUbiquitousKeyValueStore defaultStore]
setObject:@"testo"
forKey:@"key"];
23. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
Sincronizzare i dati
[[NSUbiquitousKeyValueStore defaultStore]
synchronize];
24. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
Leggere i dati
NSLog(@"%@",[[NSUbiquitousKeyValueSto
re defaultStore] objectForKey:@"key"]);
25. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
NSUbiquitousKeyValueStore
==
NSUserDefaults
26. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
PRO
Profondamente integrato con l’OS
Poco codice e nessuna dipendenza
Compatibilità da iOS 5
Compatibilità perfetta con OS X
27. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
CONTRO
Disponibile SOLO con device Apple
Sandbox impedisce spazio condiviso
L’utente non può accedere direttamente ai
file
28. Dropbox
Francesco Novelli francesco.nove@gmail.com - Run Code
- Caratteristiche principali
- Come implementarlo in un App
- Pro
- Contro
29. Dropbox– Caratteristiche principali
Francesco Novelli francesco.nove@gmail.com - Run Code
- 100 milioni di utenti
- Gratis fino a 16 Gb di spazio
- LAN Sync
- Condivisione cartelle tra utenti
30. Dropbox– Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
Registrazione nell’App Console:
https://www.dropbox.com/developers/apps
- APP Type: API
- APP Name Univoco
- Access: App Folder
32. Dropbox– Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
App key
App secret
33. Dropbox– Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
Download Dropbox iOS SDK
https://www.dropbox.com/developers/sync/
tutorial/ios
Dropbox.framework in Xcode
34. Dropbox– Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
Altri framework necessari:
• CFNetwork.framework
• Security.framework
• SystemConfiguration.framework
• QuartzCore.framework
35. Dropbox– Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
#import <Dropbox/Dropbox.h>
- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)opts {
...
// The account manager stores all the account info. Create this when your app launches
DBAccountManager* accountMgr =
[[DBAccountManager alloc] initWithAppKey:@"APP_KEY" secret:@"APP_SECRET"];
[DBAccountManager setSharedManager:accountMgr];
DBAccount *account = accountMgr.linkedAccount;
if (account) {
DBFilesystem *filesystem = [[DBFilesystem alloc] initWithAccount:account];
[DBFilesystem setSharedFilesystem:filesystem];
}
...
}
36. Dropbox– Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
Info.plist
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>db-APP_KEY</string>
</array>
</dict>
</array>
37. Dropbox– Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
sourceApplication:(NSString *)source annotation:(id)annotation {
DBAccount *account = [[DBAccountManager sharedManager] handleOpenURL:url];
if (account) {
DBFilesystem *filesystem = [[DBFilesystem alloc] initWithAccount:account];
[DBFilesystem setSharedFilesystem:filesystem];
NSLog(@"App linked successfully!");
return YES;
}
...
}
38. Dropbox– Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
// ELENCARE FILE
NSArray *contents =
[[DBFilesystem sharedFilesystem] listFolder:[DBPath root]
error:nil];
for (DBFileInfo *info in contents) {
NSLog(@"%@", info.path);
}
39. Dropbox– Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
// SCRIVERE UN FILE
DBPath *newPath = [[DBPath root] childPath:@"hello.txt"];
DBFile *file = [[DBFilesystem sharedFilesystem] createFile:newPath error:nil];
[file writeString:@"Hello World!" error:nil];
// LEGGERE UN FILE
DBPath *newPath = [[DBPath root] childPath:@"hello.txt"];
DBFile *file = [[DBFilesystem sharedFilesystem] createFile:newPath error:nil];
NSString *fileContent [file readString:@"Hello World!" error:nil];
40. Dropbox– Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
// CONTROLLARE LE MODIFICHE
DBPath *path = [[DBPath root] childPath:@"change-me.txt"];
self.file = [[DBFilesystem sharedFilesystem] createFile:path error:nil];
// Next, register for changes on that file
[self.file addObserver:self block:^() {
// This block will be called every time your file changes
// if newerStatus is not nil, it means a newer version is available
DBFileStatus *newerStatus = file.newerStatus;
if (newerStatus) {
if (!newerStatus.cached) {
NSLog(@"newerStatus.cached == NO; this means the file downloading");
} else {
// Update to the newly available version and print it out
[file update:nil];
NSLog(@"The file is done downloading: %@", [file readString:nil]);
}
}
}];
41. Dropbox - PRO
Francesco Novelli francesco.nove@gmail.com - Run Code
PRO
Disponibile su tutte le piattaforme
File accessibili da qualsiasi app
Possibilità di ampliare lo spazio
gratuitamente
42. Dropbox - CONTRO
Francesco Novelli francesco.nove@gmail.com - Run Code
CONTRO
Necessità di diverse dipendenze
Codice più complesso di iCloud
43. Google Drive
Francesco Novelli francesco.nove@gmail.com - Run Code
- Caratteristiche principali
- Come implementarlo in un App
- Pro
- Contro
44. Google Drive
Francesco Novelli francesco.nove@gmail.com - Run Code
- TUTTI hanno un account Google
- Integrato benissimo con Android..
- …ed ha le API per iOS
45. Google Drive
Francesco Novelli francesco.nove@gmail.com - Run Code
- Registrare l’app nel Google API Console:
https://code.google.com/apis/console/
- Importare svariati framework
- Importare i framework di Google Drive
OPPURE
46. Google Drive
Francesco Novelli francesco.nove@gmail.com - Run Code
Seguire alla lettera le istruzioni di questa
pagina:
https://developers.google.com/drive/quickst
art-ios
(non il video, l’app non compila!)
47. Google Drive
Francesco Novelli francesco.nove@gmail.com - Run Code
GTLDriveFile *file = [GTLDriveFile object];
file.title = [dateFormat stringFromDate:[NSDate date]];
file.descriptionProperty = @”Desc";
file.mimeType = @"image/png";
NSData *data = …; // DATA TO UPLOAD
GTLUploadParameters *uploadParameters = [GTLUploadParameters
uploadParametersWithData:data MIMEType:file.mimeType];
GTLQueryDrive *query = [GTLQueryDrive queryForFilesInsertWithObject:file
uploadParameters:uploadParameters];
48. Google Drive
Francesco Novelli francesco.nove@gmail.com - Run Code
[self.driveService executeQuery:query
completionHandler:^(GTLServiceTicket *ticket,
GTLDriveFile *insertedFile,
NSError *error) {
if (error == nil)
{
NSLog(@"File ID: %@", insertedFile.identifier);
}
}];
49. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
PRO
Tutti hanno un account Google
Disponibile in tutte le piattaforme
€/Gb più basso della concorrenza
50. iCloud – Come implementarlo in un App
Francesco Novelli francesco.nove@gmail.com - Run Code
CONTRO
TANTE dipendenze
Codice complesso
Live Sync non disponibile
51. Amazon S3
Francesco Novelli francesco.nove@gmail.com - Run Code
- Caratteristiche principali
- Come implementarlo in un App
- Pro
- Contro
52. Amazon S3
Francesco Novelli francesco.nove@gmail.com - Run Code
- Spazio dello sviluppatore
- L’utente non ha bisogno di un account
- Servizio totalmente differente dagli altri
- Supporto a CoreData
53. Amazon S3
Francesco Novelli francesco.nove@gmail.com - Run Code
- Scaricare l’SDK dal sito AWS:
http://aws.amazon.com/sdkforios/
- Importare AWSiOSSDK.framework nel
progetto
54. Amazon S3
Francesco Novelli francesco.nove@gmail.com - Run Code
AWSPersistence.framework
CoreData tramite S3, ma ancora in beta
57. Amazon S3
Francesco Novelli francesco.nove@gmail.com - Run Code
S3ResponseHeaderOverrides *override = [[[S3ResponseHeaderOverrides alloc] init] autorelease];
override.contentType = @"image/jpeg";
// Request a pre-signed URL to picture that has been uplaoded.
S3GetPreSignedURLRequest *gpsur =
[[[S3GetPreSignedURLRequest alloc] init] autorelease];
gpsur.key = PICTURE_NAME;
gpsur.bucket = [Constants pictureBucket];
gpsur.expires =
[NSDate dateWithTimeIntervalSinceNow:(NSTimeInterval) 3600];
gpsur.responseHeaderOverrides = override;
// Get the URL
NSError *error;
NSURL *url = [self.s3 getPreSignedURL:gpsur error:&error];
58. Amazon S3 – PRO
Francesco Novelli francesco.nove@gmail.com - Run Code
PRO
Spazio praticamente illimitato
Semplice implementazione
File condivisi con tutti
L’utente non ha bisogno di un account
59. Amazon S3 – CONTRO
Francesco Novelli francesco.nove@gmail.com - Run Code
CONTRO
Lo spazio non è personale
Per grandi progetti da valutare il €/Gb
Costi per il trasferimento dei file
61. In conclusione
Francesco Novelli francesco.nove@gmail.com - Run Code
- iCloud per progetti iOS-Only (o Mac)
- Dropbox per applicazioni su più OS
- Google Drive come alternativa a Dropbox
- Amazon S3 per far caricare file all’utente
62. In conclusione
Francesco Novelli francesco.nove@gmail.com - Run Code
Q&A Time…
francesco.nove@gmail.com
@iF9
www.9lli.it/francesco
www.facebook.com/fnove