Как работает "ударная" технология?
Есть ли хорошая документация или статьи о передаче данных с устройства на устройство?
3 ответа
Довольно нетехнический, но их FAQ дает некоторую информацию о технологии:
Q: Как работает Bump?
О: Bump состоит из двух частей: приложение, работающее на вашем устройстве, и алгоритм интеллектуального сопоставления, работающий на наших серверах в облаке. Приложение на вашем телефоне использует сенсоры телефона, чтобы буквально "почувствовать" удар, и отправляет эту информацию в облако. Алгоритм сопоставления прослушивает удары с телефонов по всему миру и объединяет телефоны, которые чувствовали то же самое. Затем мы просто направляем информацию между двумя телефонами в каждой паре.
Q: нет. Что, если кто-то еще столкнется одновременно?
Далеко. Мы используем различные методы для ограничения пула потенциальных совпадений, в том числе информацию о местоположении и характеристиках столкновения. Если вы столкнулись с особенно плотной областью (например, на конференции), и мы не можем разрешить уникальное совпадение после одного удара, мы просто попросим вас поднять его снова. Наш технический директор имеет докторскую степень по квантовой механике и может показать математику за этим, но мы предлагаем скачать Bump и попробовать его самостоятельно!
Q: Почему Bump хочет использовать мое местоположение?
A: Сейчас у нас миллионы пользователей по всему миру. Мы используем информацию о местоположении в качестве одного из способов ограничения количества других телефонов, которые мы должны проверить, чтобы определить правильное соответствие. В основном, если вы находитесь в Чикаго, мы используем эту информацию, поэтому нам не нужно сравнивать ваши неровности с неровностями, приходящими из Японии, Европы, Нью-Йорка и т. Д. По этой причине мы требуем, чтобы службы определения местоположения были включены и чтобы пользователи разрешают использование информации о своем местоположении. Если вы не разрешаете использовать информацию о местоположении, Bump не будет работать, извините.
Q: Требует ли Bump, что мой Bluetooth также активирован?
A: Нет! Bump не использует Bluetooth для работы вообще; все, что вам нужно, это подключение к Интернету через Wi-Fi, 3G или Edge.
Вы можете сбить с толку, как работает Bump. Насколько я понимаю, данные акселерометра и геолокации используются для определения возможных "неровностей" или пар устройств. Контактные данные сами передаются через Интернет, а не локально через Bluetooth или Wi-Fi.
Полный пример с 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;
}
}];
}