2010-08-01 10 views
43

¿Alguna buena documentación o artículos sobre la transferencia de datos de dispositivo a dispositivo?¿Cómo funciona la tecnología "bump"?

+5

Cuando dos personas se gustan ... – Oded

+2

tecnología de "rutina" es la realmente importante. – Skilldrick

+16

¡Vaya, debe haber publicado en ComedianOverflow por accidente! – Dave

Respuesta

55

Bastante no técnica, pero their FAQ da alguna información sobre la tecnología:

Q: ¿Cómo funciona el Bump?

A: Bump tiene dos partes: la aplicación que se ejecuta en su dispositivo y un algoritmo de coincidencia inteligente que se ejecuta en nuestros servidores en la nube. La aplicación en su teléfono usa los sensores del teléfono para literalmente "sentir" el bache, y envía esa información a la nube. El algoritmo de coincidencia escucha los golpes de los teléfonos de todo el mundo y empareja los teléfonos que sienten el mismo bache. Luego solo enrutamos la información entre los dos teléfonos en cada par.

P: De ninguna manera. ¿Qué pasa si alguien más choca al mismo tiempo?

A: Camino. Utilizamos varias técnicas para limitar el conjunto de posibles coincidencias, incluida la información de ubicación y las características del evento de impacto. Si te encuentras en un área particularmente densa (por ejemplo, en una conferencia) y no podemos resolver una coincidencia única después de un solo bache, solo te pediremos que topes nuevamente. Nuestro CTO tiene un doctorado en Mecánica Cuántica y puede mostrar las matemáticas detrás de eso, pero sugerimos descargar Bump e intentarlo usted mismo.

P: ¿Por qué Bump quiere usar mi ubicación?

R: Ahora tenemos millones de usuarios en todo el mundo. Usamos la información de ubicación como una de las maneras en que limitamos el número de otros teléfonos que tenemos que verificar para determinar la coincidencia correcta. Básicamente, si se encuentra en Chicago, usamos esa información para no tener que comparar su bache con los baches provenientes de Japón, Europa, Nueva York, etc. Por esta razón, requerimos que los servicios de localización estén activados y que los usuarios autorizan el uso de su información de ubicación. Si no autorizas el uso de la información de ubicación, Bump no funcionará, lo siento.

P: ¿Bump requiere que mi Bluetooth esté activado también?

A: ¡No! Bump no usa Bluetooth para funcionar en absoluto; todo lo que necesita es una conexión a Internet a través de wifi, 3G o Edge.

+0

gracias por la información! – Dave

+4

¿Puede arrojar algo de luz sobre por qué Bump usa un enfoque basado en la nube sobre Bluetooth para iniciar una transferencia? –

+2

Causa en el iphone bluetooth framework está abierto solo en jailbreak iphones rotos. – Robin

9

Puede ser confuso cómo funciona Bump. Según entiendo, los datos del acelerómetro y la geolocalización se utilizan para identificar los "baches" o pares de dispositivos candidatos. Los datos de contacto, en sí, se transfieren a través de Internet, no localmente a través de Bluetooth o wifi.

+0

gracias por la información! – Dave

5

ejemplo completo de https://github.com/bumptech/bump-api-ios

- (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] 
           toChannel:channel]; 
}]; 

[[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."); 
      break; 
     case BUMP_EVENT_NO_MATCH: 
      NSLog(@"No match."); 
      break; 
    } 
}]; 

}

+0

gracias, ¡es útil! –

Cuestiones relacionadas