Skip to content


Subversion checkout URL

You can clone with
Download ZIP
make your app bumpable in seconds
Latest commit ad41f6c Thomas Greany 3.1
Failed to load latest commit information.
BumpTestApp 3.1
libBump 3.1
.gitignore 3.1
LICENSE 3.1 3.1

Bump API 3.0

This is an all-new version of the Bump iOS API.


  • faster, smaller. ~400kB is added to an ARM binary after linking.
  • block/GCD based callbacks.
  • multiple concurrent sessions: once two users have matched, they can continue to send data to each other and other users
  • at the moment breaks compatibility with earlier versions of the API

Getting Started

  1. Agree to the API license agreement and get your API key:
  2. Add libBump.a and BumpClient.h to your Xcode project.
  3. Ensure that your target is linked against libBump.a, CFNetwork.framework, CoreLocation.framework, and AudioToolbox.framework.
  4. Configure your client: [BumpClient configureWithAPIKey:@"your_api_key" andUserID:[[UIDevice currentDevice] name]];

Congrats, that's it. Your app is now bumpable!


  1. Use of this library is subject to both our SDK License agreement,, and Trademark Guidelines:
  2. Android builds coming soon.
  3. Please submit comments and questions to

Release Notes


  • fixes leak when no internet connection is present
  • fixes 'Somebody' userID bug
  • removes a compiler warning when linking against the library


  • fixes userId configuration bug
  • adds optional disconnect/connect calls (first call to sharedClient auto-connects)


  • setBumpable turns location updates on/off
  • userIDForChannel returns empty string when other user's name is unset


  • removes use of [[UIDevice currentDevice] uniqueIdentifier]
  • includes armv6 binary

Beta 3

  • Additional power saving measures when bumping disabled
  • Fixes two internal bugs, one of which means that it will not match with earlier betas

Beta 2

  • callback structure changed: BumpClient calls its matchBlock when a match occurs. In order to create a channel (and send data), both users most call [[BumpClient sharedClient] confirmMatch:YES onChannel:channel];. When both users confirm a channel, then BumpClient will callback its channelConfirmedBlock.
  • See updated examples for this new structure
  • API key status notification on stderr.

Complete Example

- (void) configureBump {
    // userID is a string that you could use as the user's name, or an ID that is semantic within your environment
    [BumpClient configureWithAPIKey:@"your_api_key" andUserID:[[UIDevice currentDevice] name]];

    [[BumpClient sharedClient] setMatchBlock:^(BumpChannelID channel) { 
        NSLog(@"Matched with user: %@", [[BumpClient sharedClient] userIDForChannel:channel]); 
        [[BumpClient sharedClient] confirmMatch:YES onChannel:channel];

    [[BumpClient sharedClient] setChannelConfirmedBlock:^(BumpChannelID channel) {
        NSLog(@"Channel with %@ confirmed.", [[BumpClient sharedClient] userIDForChannel:channel]);
        [[BumpClient sharedClient] sendData:[[NSString stringWithFormat:@"Hello, world!"] dataUsingEncoding:NSUTF8StringEncoding]

    [[BumpClient sharedClient] setDataReceivedBlock:^(BumpChannelID channel, NSData *data) {
        NSLog(@"Data received from %@: %@", 
        [[BumpClient sharedClient] userIDForChannel:channel], 
        [NSString stringWithCString:[data bytes] encoding:NSUTF8StringEncoding]);

    // optional callback
    [[BumpClient sharedClient] setConnectionStateChangedBlock:^(BOOL connected) {
        if (connected) {
            NSLog(@"Bump connected...");
        } else {
            NSLog(@"Bump disconnected...");

    // optional callback
    [[BumpClient sharedClient] setBumpEventBlock:^(bump_event event) {
        switch(event) {
            case BUMP_EVENT_BUMP:
                NSLog(@"Bump detected.");
            case BUMP_EVENT_NO_MATCH:
                NSLog(@"No match.");
Something went wrong with that request. Please try again.