Helios y su integración en iOS

Post on 10-May-2015

447 views 2 download

description

Presentación sobre el framework Helios, los módulos que lo componen y las librerías con las que puede integrarse en desarrollos iOS.

Transcript of Helios y su integración en iOS

Heliosy su integración en iOS

¿Es   una persona o una legión?@matttCreated by / Javier Moreno @jmoreno

, an extensible   mobilebackend framework

helios open-source

si, si, pero... ¿qué es?

Aplicación Ruby construida sobre .Compuesto por varias aplicaciones Ruby hechas con Sinatra.Con una pequeña interfaz de administración web.

Rack

¿Para qué sirve?Sincronización de datosNotificaciones PUSHGestión de In-App PurchasesGestión de PassbookGestión de NewstandAnalíticas y loggingConfiguración remota

Sincronización de datosEn el backend

: Automatically generate RESTful CRUD servicesRack::Scaffold

En iOS: Core Data Persistence with AFNetworking,

Done Right... my ass!: A delightful iOS and OS X networking framework.

AFIncrementalStore

AFNetworking

Rack::ScaffoldGET /:resourcesPOST /:resourcesGET /:resources/:idPUT /:resources/:idDELETE /:resources/:idGET /:resources/:id/:association si hay relaciones

AFIncrementalStorePromete mucho pero AFNetworking es más seguro.

Notificaciones PUSHEn el backend

: A Rack-mountable webservice for managingpush notifications

: Apple Push Notifications; No Dirigible Required

Rack::PushNotification

Houston

En iOS: Push Notification Registration for iOSOrbiter

Rack::PushNotificationPUT /push_notification/devices/:tokenDELETE /push_notification/devices/:tokenGET /push_notification/devices/?GET /push_notification/devices/:token/?

HoustonPOST /push_notification/messageCommand-Line Interface

OrbiterIntegración con Helios

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{ NSURL *serverURL = [NSURL URLWithString:@"http://demo.helios.javimoreno.me/devices/"]; Orbiter *orbiter = [[Orbiter alloc] initWithBaseURL:serverURL credential:nil]; [orbiter registerDeviceToken:deviceToken withAlias:nil success:̂(id responseObject) { NSLog(@"Registration Success: %@", responseObject); } failure:̂(NSError *error) { NSLog(@"Registration Error: %@", error); }];}

También con Parse y Urban Airship

Gestión de In-App PurchasesEn el backend

: Ruby Gem for In-App Purchase Receipt VerificationRack::InAppPurchaseVenice

En iOS: The Essential StoreKit CompanionCargo Bay

Rack::InAppPurchasePOST /in_app_purchase/receipts/verifyGET /in_app_purchase/products/identifiersGET /in_app_purchase/receipts/

VeniceCommand-Line Interface

Cargo BayLista de productos disponibles:

NSURL *url = [NSURL URLWithString:@"http://demo.helios.javimoreno.me/in_app_purchase/products/identifiers/"NSURLRequest *request = [NSURLRequest requestWithURL:url];[[CargoBay sharedManager] productsWithRequest:request success:̂(NSArray *products, NSArray *invalidIdentifiers) { NSLog(@"Products: %@", products); NSLog(@"Invalid Identifiers: %@", invalidIdentifiers); _productsArray = [NSMutableArray arrayWithArray:products]; [self.tableView reloadData];} failure:̂(NSError *error) { NSLog(@"Error: %@", [error description]);}];

Cargo BaySeguimiento de los pagos:

- (void)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)options { [[CargoBay sharedManager] setPaymentQueueUpdatedTransactionsBlock:̂(SKPaymentQueue *queue, NSArray *transactions) { NSLog(@"Updated Transactions: %@", transactions); }];

[[SKPaymentQueue defaultQueue] addTransactionObserver:[CargoBay sharedManager]];

// ...}

Cargo BayVerificación de la compra:

[[CargoBay sharedManager] verifyTransaction:transaction password:nil success:̂(NSDictionary *receipt) { NSLog(@"Receipt: %@", receipt);} failure:̂(NSError *error) { NSLog(@"Error %d (%@)", [error code], [error localizedDescription]);}];

Gestión de PassbookEn el backend

: Generate and Preview Passbook PassesRack::PassbookDubai

En iOS: A delightful iOS and OS X networking framework.AFNetworking

Rack::PassbookGET /passbook/passes/:passTypeIdentifier/:serialNumberGET /passbook/devices/:deviceLibraryIdentifier/registrations/:passTypeIdentifier[?passesUpdatedSince=tag]POST/passbook/devices/:deviceLibraryIdentifier/registrations/:passTypeIdentifier/:serialNumberDELETE/passbook/devices/:deviceLibraryIdentifier/registrations/:passTypeIdentifier/:serialNumberGET /passbook/passes/

DubaiCommand-Line Interface

Gestión de NewsstandEn el backend

: Automatically generate webservice endpoints forNewsstandRack::Newsstand

En iOS: A delightful iOS and OS X networking framework.AFNetworking

Rack::NewsstandGET /newsstand/issuesGET /newsstand/issues/:namePOST /newsstand/issues

Analíticas y loggingEn el backend

: Log metrics from HTTP request parametersaccording to l2met conventionsRack::HTTPLogger

En iOS: Extensible Remote LoggingAntenna

Configuración remotaEn el backend

: Serve property list or JSONconfiguration filesRack::RemoteConfiguration

En iOS: Remote Configuration for iOS

: Multivariate & A/B Testing for iOS and MacGround ControlSkyLab

Anexos: world-class command line utilities for iOS development: a hybrid approach to real-time cloud applications

: The easiest way to get started with PostgreSQL on theMac

: A Polyglot Database Client for Mac OS X: a journal of the overlooked bits in Objective-C and Cocoa: Searchable full-text transcripts of WWDC sessions

NomadRocketPostgresApp

InductionNSHipsterASCIIwwdc

THE ENDBY Javier Moreno / javimoreno.me