CargoBay 2.1.1

CargoBay 2.1.1

TestsTested
LangLanguage Obj-CObjective C
License MIT
ReleasedLast Release May 2015

Maintained by Mattt Thompson.


Downloads

Total220,775
Week0
Month2,522

Installs

Apps1,557
Test Targets121
Watch Apps3
powered by Segment

GitHub

Stars1,771
Watchers87
Forks173
Issues12
Contributors21
Pull Requests2

Code

Files2
LOCLines of Code 940


CargoBay 2.1.1

The Essential StoreKit Companion

StoreKit is the Apple framework for making In-App Purchases. It's pretty good, but it has a few rough edges.

CargoBay smooths out those rough parts by providing:

  • One step receipt & transaction verification, done securely according to Apple's guidelines
  • Block-based interface for requesting product information
  • Ability to request product information for identifiers asynchronously from a remote web service
  • Block-based callbacks for payment queue observation delegate methods
  • Automatic check for transaction uniqueness

This project is part of a series of open source libraries covering the mission-critical aspects of an iOS app's infrastructure. Be sure to check out its sister projects: GroundControl, SkyLab, houston, and Orbiter.

Usage

Product Requests

NSArray *identifiers = @[
  @"com.example.myapp.apple",
  @"com.example.myapp.pear",
  @"com.example.myapp.banana"
];

[[CargoBay sharedManager] productsWithIdentifiers:[NSSet setWithArray:identifiers]
success:^(NSArray *products, NSArray *invalidIdentifiers) {
  NSLog(@"Products: %@", products);
  NSLog(@"Invalid Identifiers: %@", invalidIdentifiers);
} failure:^(NSError *error) {
  NSLog(@"Error: %@", error);
}];

Payment Queue Observation

AppDelegate.m

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

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

  // ...
}

Verifying Receipts

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

Contact

Mattt Thompson

License

CargoBay is available under the MIT license. See the LICENSE file for more info.