On Github jmoreno / HeliosTalk
Created by Javier Moreno / @jmoreno
- (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); }]; }
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]); }];La librería Cargo Bay es, el AFNetworking de las In-App Purchases: sencilla, ligera y útil. Por un lado proporciona un método para descargar la lista de productos disponibles de nuestro servidor, cruzarlos con los que tenemos registrados en iTunes Connect y devolver dos arrays, uno con los productos que se pueden consumir y otro con los que no se pueden consumir. Aunque esto pueda parecer un sinsentido, si quisieramos quitar un In-App Purchase que estuviera dando algún problema, la forma más eficaz de hacerlo sería quitandolo de nuestro servidor. Por lo que podemos hacernos una idea de la importancia de este método.
- (void)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)options { [[CargoBay sharedManager] setPaymentQueueUpdatedTransactionsBlock:^(SKPaymentQueue *queue, NSArray *transactions) { NSLog(@"Updated Transactions: %@", transactions); }]; [[SKPaymentQueue defaultQueue] addTransactionObserver:[CargoBay sharedManager]]; // ... }Cuando realizamos compras dentro de nuestra aplicación, hay que poner un "observer" que nos informe de cuando se ha realizado la compra para hacer lo que corresponda: descargar contenido, cambiar los ajustes, etc. Cargo Bay se encarga de estas taréas.
[[CargoBay sharedManager] verifyTransaction:transaction password:nil success:^(NSDictionary *receipt) { NSLog(@"Receipt: %@", receipt); } failure:^(NSError *error) { NSLog(@"Error %d (%@)", [error code], [error localizedDescription]); }];Por último, aunque en iOS 7 ya hay un método nuevo dentro del framework de StoreKit para realizar la verificación de los recibos desde la propia aplicación contra los servidores de Apple, Cargo Bay lo hace tanto para iOS 7 como para versiones anteriores de iOS.