Laat ons weten wat u vindt van deze sessie! Vul de evaluatie
in via www.techdaysapp.nl en maak kans op een van de 20
prijzen*. Prijswinnaars worden bekend gemaakt via Twitter
(#TechDaysNL). Gebruik hiervoor de code op uw badge.
Let us know how you feel about this session! Give your
feedback via www.techdaysapp.nl and possibly win one of
the 20 prizes*. Winners will be announced via Twitter
(#TechDaysNL). Use your personal code on your badge.
* Over de uitslag kan niet worden gecorrespondeerd, prijzen zijn voorbeelden – All results are final, prizes are
examples
Building iOS and
Android Apps with
Mobile Services
Sasha Goldshtein
CTO, Sela Group
Microsoft C# MVP, Azure MRS, Azure Insider
blog.sashag.net
@goldshtn
Who are we?
App developers
What do we hate?
Backends
Azure Mobile Services is a backend
for your mobile apps
… that has a free tier
… and cloud scale
… and support for all mobile
platforms
Platforms and Features
Platforms (client libraries)
• iOS
• Android
• Windows Phone
• Windows 8
• HTML/JavaScript
• PhoneGap
• Xamarin
Features
• Data and queries
• Push notifications
• Authentication
• Server-side scripts
• Custom API
• Offline sync
• Mass push
• Git integration
System Diagram
Microsoft Azure
SQL
Database
Node +
Express
backend
Apple Push
Notification
Service
Facebook
Auth
Provider
Server
scripts
Google
Cloud
Messaging
Twitter Auth
Provider
Custo
m API
Data Query, iOS
MSTable *table = [client tableForName:@‛apartment‛];
NSPredicate *predicate =
[NSPredicate predicateWithFormat:@‛rented == NO‛];
[table readWithPredicate:predicate
completion:^(NSArray *items, NSInteger count,
NSError* error) {
for (NSDictionary *apartment in items) {
NSLog(@‛%@ %d‛, apartment[@‛address‛],
apartment[@‛bedrooms‛];
}
}];
Data Query, Android
MobileServiceTable<Apartment> table =
client.getTable(Apartment.class);
table.where().field(‚rented‛).eq(false)
.execute(new TableQueryCallback<Apartment>() {
public void onCompleted(List<Apartment> items,
int count, Exception e,
ServiceFilterResponse response) {
if (e != null)
for (Apartment apt : items) ...
}
});
Server Script
function delete(item, user, request) {
if (item.userId != user.userId) {
request.respond(
403,
‘You may only delete your own items’);
} else {
request.execute();
}
}
Authentication
[client loginWithProvider:@‛facebook‛
controller:self animated:YES
completion:^(MSUser *user, ...) { ... }
];
client.login(
MobileServiceAuthenticationProvider.Facebook,
new UserAuthenticationCallback() {
public void onCompleted(MobileServiceUser user,
...) { ... }
}
);
Demo
Building the “Rent a Home”
iOS and Android Apps
Questions?
Sasha Goldshtein
blog.sashag.net
@goldshtn
Laat ons weten wat u vindt van deze sessie! Vul de evaluatie
in via www.techdaysapp.nl en maak kans op een van de 20
prijzen*. Prijswinnaars worden bekend gemaakt via Twitter
(#TechDaysNL). Gebruik hiervoor de code op uw badge.
Let us know how you feel about this session! Give your
feedback via www.techdaysapp.nl and possibly win one of
the 20 prizes*. Winners will be announced via Twitter
(#TechDaysNL). Use your personal code on your badge.
* Over de uitslag kan niet worden gecorrespondeerd, prijzen zijn voorbeelden – All results are final, prizes are
examples
Building iOS and Android Apps with Mobile Services

Building iOS and Android Apps with Mobile Services

  • 2.
    Laat ons wetenwat u vindt van deze sessie! Vul de evaluatie in via www.techdaysapp.nl en maak kans op een van de 20 prijzen*. Prijswinnaars worden bekend gemaakt via Twitter (#TechDaysNL). Gebruik hiervoor de code op uw badge. Let us know how you feel about this session! Give your feedback via www.techdaysapp.nl and possibly win one of the 20 prizes*. Winners will be announced via Twitter (#TechDaysNL). Use your personal code on your badge. * Over de uitslag kan niet worden gecorrespondeerd, prijzen zijn voorbeelden – All results are final, prizes are examples
  • 3.
    Building iOS and AndroidApps with Mobile Services Sasha Goldshtein CTO, Sela Group Microsoft C# MVP, Azure MRS, Azure Insider blog.sashag.net @goldshtn
  • 4.
    Who are we? Appdevelopers What do we hate? Backends
  • 5.
    Azure Mobile Servicesis a backend for your mobile apps … that has a free tier … and cloud scale … and support for all mobile platforms
  • 6.
    Platforms and Features Platforms(client libraries) • iOS • Android • Windows Phone • Windows 8 • HTML/JavaScript • PhoneGap • Xamarin Features • Data and queries • Push notifications • Authentication • Server-side scripts • Custom API • Offline sync • Mass push • Git integration
  • 7.
    System Diagram Microsoft Azure SQL Database Node+ Express backend Apple Push Notification Service Facebook Auth Provider Server scripts Google Cloud Messaging Twitter Auth Provider Custo m API
  • 8.
    Data Query, iOS MSTable*table = [client tableForName:@‛apartment‛]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@‛rented == NO‛]; [table readWithPredicate:predicate completion:^(NSArray *items, NSInteger count, NSError* error) { for (NSDictionary *apartment in items) { NSLog(@‛%@ %d‛, apartment[@‛address‛], apartment[@‛bedrooms‛]; } }];
  • 9.
    Data Query, Android MobileServiceTable<Apartment>table = client.getTable(Apartment.class); table.where().field(‚rented‛).eq(false) .execute(new TableQueryCallback<Apartment>() { public void onCompleted(List<Apartment> items, int count, Exception e, ServiceFilterResponse response) { if (e != null) for (Apartment apt : items) ... } });
  • 10.
    Server Script function delete(item,user, request) { if (item.userId != user.userId) { request.respond( 403, ‘You may only delete your own items’); } else { request.execute(); } }
  • 11.
    Authentication [client loginWithProvider:@‛facebook‛ controller:self animated:YES completion:^(MSUser*user, ...) { ... } ]; client.login( MobileServiceAuthenticationProvider.Facebook, new UserAuthenticationCallback() { public void onCompleted(MobileServiceUser user, ...) { ... } } );
  • 12.
    Demo Building the “Renta Home” iOS and Android Apps
  • 13.
  • 14.
    Laat ons wetenwat u vindt van deze sessie! Vul de evaluatie in via www.techdaysapp.nl en maak kans op een van de 20 prijzen*. Prijswinnaars worden bekend gemaakt via Twitter (#TechDaysNL). Gebruik hiervoor de code op uw badge. Let us know how you feel about this session! Give your feedback via www.techdaysapp.nl and possibly win one of the 20 prizes*. Winners will be announced via Twitter (#TechDaysNL). Use your personal code on your badge. * Over de uitslag kan niet worden gecorrespondeerd, prijzen zijn voorbeelden – All results are final, prizes are examples