デバイス間のデータ転送の実行に関する優れたドキュメントや記事はありますか?
3 に答える
かなり非技術的ですが、彼らのFAQは技術に関するいくつかの情報を提供します:
Q:バンプはどのように機能しますか?
A:バンプには2つの部分があります。デバイスで実行されているアプリと、クラウド内のサーバーで実行されているスマートマッチングアルゴリズムです。携帯電話のアプリは、携帯電話のセンサーを使用して文字通りバンプを「感じ」、その情報をクラウドに送信します。マッチングアルゴリズムは、世界中の電話からのバンプをリッスンし、同じバンプを感じた電話をペアリングします。次に、各ペアの2台の電話間で情報をルーティングします。
Q:まさか。他の誰かが同時にぶつかった場合はどうなりますか?
あちらへ。位置情報やバンプイベントの特性など、さまざまな手法を使用して潜在的な一致のプールを制限します。特に密集したエリア(会議など)でバンプしていて、1回のバンプで一意の一致を解決できない場合は、もう一度バンプするようにお願いします。私たちのCTOは量子力学の博士号を取得しており、その背後にある数学を示すことができますが、Bumpをダウンロードして自分で試してみることをお勧めします。
Q:バンプが私の場所を使用したいのはなぜですか?
A:現在、世界中に何百万人ものユーザーがいます。正しい一致を判断するためにチェックする必要のある他の電話の数を制限する方法の1つとして、位置情報を使用します。基本的に、シカゴにいる場合は、その情報を使用するため、日本、ヨーロッパ、ニューヨークなどからのバンプと比較する必要はありません。このため、位置情報サービスをオンにして、ユーザーは自分の位置情報の使用を許可します。位置情報の使用を許可しない場合、バンプは機能しません。申し訳ありません。
Q:BumpではBluetoothもアクティブにする必要がありますか?
A:いいえ!BumpはBluetoothを使用して動作しません。必要なのは、wifi、3G、またはEdgeを介したインターネット接続だけです。
Bumpがどのように機能するか混乱しているかもしれません。私の理解では、加速度計とジオロケーションのデータは、候補となる「バンプ」またはデバイスのペアを識別するために使用されます。連絡先データ自体は、Bluetoothやwifiを介してローカルに転送されるのではなく、インターネットを介して転送されます。
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;
}
}];
}