Как работает "ударная" технология?

Есть ли хорошая документация или статьи о передаче данных с устройства на устройство?

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;
    }
}];

}

Другие вопросы по тегам