ビーコン管理
ビーコン管理機能はBluetooth Low Energy(BLE)を利用したビーコン端末と端末設置場所を管理する基本的な仕組みを提供します。
アプリで受信したビーコン端末の識別情報をBaaS@rakuza SDKに問い合わせすることで、ユーザーが端末設置場所に来場したことを検知することができます。
このページでは、ビーコン管理機能を利⽤する実装例を紹介します。
ヒント
BaaS@rakuza SDKではビーコン検知を行う処理はサポートしていません。ビーコン検知を行うには、iOSの場合Core Location、Androidの場合Android Beacon Libraryなどのライブラリを使用してください。
注意
ビーコン管理機能はライトプラン、ベーシックプランではご利用いただけません。利用したい場合は、製品サイトよりお問い合わせください。
ビーコン端末情報を登録する
ビーコン端末情報はビーコン端末の識別情報です。
管理画面の「ビーコン管理」→「ビーコン端末一覧」を開くと、ビーコン端末の一覧を確認できます。また、同画面の「新規登録」よりビーコン端末の新規作成をすることができます。
「ビーコンタイプ」はビーコンの規格です。例えば、iBeaconを選択した場合、ビーコンID(UUID)、major、minorを識別情報として入力してください。
スポット情報を登録する
スポット情報はビーコン端末の端末設置場所の情報です。
管理画面の「ビーコン管理」→「スポット一覧」を開くと、スポットの一覧を確認できます。また、同画面の「新規登録」よりスポットの新規作成をすることができます。
「設置ビーコン端末」は設置したビーコン端末を選択してください。
また、「ビーコン検知範囲」で検知するビーコンの範囲を制御することができます。ビーコン検知範囲は検知対象としたいRSSI(受信信号強度)の閾値を入力してください。
ビーコン端末情報を検索する
一般的にアプリからビーコン検知する際は、検知するビーコンの識別情報を指定します。例えば、iBeaconの場合はビーコンID(UUID)、major、minorを指定します。
ビーコン識別情報の検索はgetBeaconList
メソッド(JavaScript・FlutterはBeaconQuery.find
メソッド)で⾏います。
検索条件、ソート条件を指定することができます。指定可能な条件については検索条件、ソート条件を参照してください。
// 検索条件
let searchConditions = [
// beacon_type_cdが"0001"(iBeacon)のレコードに絞り込む
RKZSearchCondition(RKZSearchConditionEqual, searchColumn: "beacon_type_cd", searchValueArray: ["0001"])
]
// ソート条件
let sortConditions = [
// sort_noの昇順にソート
RKZSortCondition(RKZSortTypeAsc, sortColumn: "sort_no")
]
RKZService.sharedInstance().getBeaconList(searchConditions, sortConditionArray: sortConditions) { beacons, responseStatus in
if responseStatus.isSuccess {
// 成功時
// 取得したビーコンID、major、minorのビーコン検知を行う
beacons.forEach { item in
print("code:", item.code ?? "")
print("name:", item.name ?? "")
print("beacon_type_cd:", item.beacon_type_cd ?? "") // ビーコンタイプ
print("beacon_id:", item.beacon_id ?? "") // ビーコンID
print("major:", item.major ?? "") // major
print("minor:", item.minor ?? "") // minor
}
} else {
// 失敗
print("statusCode:", responseStatus.statusCode.rawValue)
print("message:", responseStatus.message ?? "")
}
}
// 検索条件
NSArray<RKZSearchCondition *> *searchConditions = @[
// beacon_type_cdが"0001"(iBeacon)のレコードに絞り込む
[[RKZSearchCondition alloc] initWithSearchConditionType:RKZSearchConditionEqual searchColumn:@"beacon_type_cd" searchValueArray:@[@"0001"]]
];
// ソート条件
NSArray<RKZSortCondition *> *sortConditions = @[
// sort_noの昇順にソート
[[RKZSortCondition alloc] initWithSortType:RKZSortTypeAsc sortColumn:@"sort_no"]
];
[[RKZService sharedInstance] getBeaconList:searchConditions sortConditionArray:sortConditions withBlock:^(NSArray<RKZBeaconData *> * _Nonnull beacons, RKZResponseStatus * _Nonnull responseStatus) {
if (responseStatus.isSuccess) {
// 成功時
// 取得したビーコンID、major、minorのビーコン検知を行う
for (RKZBeaconData *item in beacons) {
NSLog(@"code: %@", item.code);
NSLog(@"name: %@", item.name);
NSLog(@"beacon_type_cd: %@", item.beacon_type_cd); // ビーコンタイプ
NSLog(@"beacon_id: %@", item.beacon_id); // ビーコンID
NSLog(@"major: %@", item.major); // major
NSLog(@"minor: %@", item.minor); // minor
}
} else {
// 失敗
NSLog(@"statusCode: %ld", responseStatus.statusCode);
NSLog(@"message: %@", responseStatus.message);
}
}];
// 検索条件
val searchConditions = listOf(
// beacon_type_cdが"0001"(iBeacon)のレコードに絞り込む
RKZSearchCondition(RKZSearchCondition.EQUAL, "beacon_type_cd", listOf("0001"))
)
// ソート条件
val sortConditions = listOf(
// sort_noの昇順にソート
RKZSortCondition(RKZSortCondition.ASC, "sort_no")
)
RKZClient.getInstance().getBeaconList(searchConditions, sortConditions) { beacons, rkzResponseStatus ->
if (rkzResponseStatus.isSuccess) {
// 成功時
// 取得したビーコンID、major、minorのビーコン検知を行う
beacons.forEach {
Log.d(TAG, "code: ${it.code}")
Log.d(TAG, "name: ${it.name}")
Log.d(TAG, "beaconTypeCd: ${it.beaconTypeCd}") // ビーコンタイプ
Log.d(TAG, "beaconId: ${it.beaconId}") // ビーコンID
Log.d(TAG, "major: ${it.major}") // major
Log.d(TAG, "minor: ${it.minor}") // minor
}
} else {
// 失敗
Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
Log.e(TAG, "message: ${rkzResponseStatus.message}")
}
}
// 検索条件
List<RKZSearchCondition> searchConditions = Arrays.asList(
// beacon_type_cdが"0001"(iBeacon)のレコードに絞り込む
new RKZSearchCondition(RKZSearchCondition.EQUAL, "beacon_type_cd", Arrays.asList("0001"))
);
// ソート条件
List<RKZSortCondition> sortConditions = Arrays.asList(
// sort_noの昇順にソート
new RKZSortCondition(RKZSortCondition.ASC, "sort_no")
);
RKZClient.getInstance().getBeaconList(searchConditions, sortConditions, new OnGetBeaconListListener() {
@Override
public void onGetBeaconList(List<Beacon> beacons, RKZResponseStatus rkzResponseStatus) {
if (rkzResponseStatus.isSuccess()) {
// 成功時
// 取得したビーコンID、major、minorのビーコン検知を行う
for (Beacon item : beacons) {
Log.d(TAG, "code: " + item.getCode());
Log.d(TAG, "name: " + item.getName());
Log.d(TAG, "beaconTypeCd: " + item.getBeaconTypeCd()); // ビーコンタイプ
Log.d(TAG, "beaconId: " + item.getBeaconId()); // ビーコンID
Log.d(TAG, "major: " + item.getMajor()); // major
Log.d(TAG, "minor: " + item.getMinor()); // minor
}
} else {
// 失敗
Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
}
}
});
// 検索条件
var searchConditions = [
// beacon_type_cdが"0001"(iBeacon)のレコードに絞り込む
RKZSearchCondition.equal('beacon_type_cd', '0001')
]
// ソート条件
var sortConditions = [
// sort_noの昇順にソート
RKZSortCondition.asc('sort_no')
]
RKZClient.getBeaconList(searchConditions, sortConditions, function (beacons) {
// 成功時
// 取得したビーコンID、major、minorのビーコン検知を行う
beacons.forEach(function (item) {
console.debug('code:', item.code)
console.debug('name:', item.name)
console.debug('beacon_type_cd:', item.beacon_type_cd) // ビーコンタイプ
console.debug('beacon_id:', item.beacon_id) // ビーコンID
console.debug('major:', item.major) // major
console.debug('minor:', item.minor) // minor
})
}, function (error) {
// 失敗時
console.error('status_code:', error.status_code)
console.error('message:', error.message)
})
const result = await RKZ.Beacon.query()
.equalTo('beacon_type_cd', '0001') // beacon_type_cdが"0001"(iBeacon)のレコードに絞り込む
.asc('sort_no') // sort_noの昇順にソート
.find()
// 取得したビーコンID、major、minorのビーコン検知を行う
result.forEach(item => {
console.debug('code:', item.code)
console.debug('name:', item.name)
console.debug('beacon_type_cd:', item.beacon_type_cd) // ビーコンタイプ
console.debug('beacon_id:', item.beacon_id) // ビーコンID
console.debug('major:', item.major) // major
console.debug('minor:', item.minor) // minor
})
final query = RKZClient.instance.beaconQuery()
..equalTo('beacon_type_cd', '0001') // beacon_type_cdが"0001"(iBeacon)のレコードに絞り込む
..asc('sort_no'); // sort_noの昇順にソート
final beacons = await query.find();
// 取得したビーコンID、major、minorのビーコン検知を行う
beacons.forEach((item) {
print('code: ${item.code}');
print('name: ${item.name}');
print('beaconTypeCd: ${item.beaconTypeCd}'); // ビーコンタイプ
print('beaconId: ${item.beaconId}'); // ビーコンID
print('major: ${item.major}'); // major
print('minor: ${item.minor}'); // minor
});
スポット情報を検索する
検知したビーコン情報でスポット情報を検索することで、端末設置場所を特定することができます。
スポット情報の検索はgetSpotList
メソッド(JavaScript・FlutterはSpotQuery.find
メソッド)で⾏います。
検索条件、ソート条件を指定することができます。指定可能な条件については検索条件、ソート条件を参照してください。
// 検索条件
let searchConditions = [
// 設置ビーコン端末が"DB000001"のレコードに絞り込む
RKZSearchCondition(RKZSearchConditionLikeOr, searchColumn: "beacon", searchValueArray: ["DB000001"])
]
// ソート条件
let sortConditions = [
// sort_noの昇順にソート
RKZSortCondition(RKZSortTypeAsc, sortColumn: "sort_no")
]
RKZService.sharedInstance().getSpotList(searchConditions, sortConditionArray: sortConditions) { spots, responseStatus in
if responseStatus.isSuccess {
// 成功時
spots.forEach { item in
print("code:", item.code ?? "")
print("name:", item.name ?? "")
print("beacon:", item.beacon ?? "") // 設置ビーコン端末
print("beacon_range_for_iphone:", item.beacon_range_for_iphone ?? "") // ビーコン検知範囲(iOS用)
print("beacon_range_for_android:", item.beacon_range_for_android ?? "") // ビーコン検知範囲(Android用)
}
} else {
// 失敗
print("statusCode:", responseStatus.statusCode.rawValue)
print("message:", responseStatus.message ?? "")
}
}
// 検索条件
NSArray<RKZSearchCondition *> *searchConditions = @[
// 設置ビーコン端末が"DB000001"のレコードに絞り込む
[[RKZSearchCondition alloc] initWithSearchConditionType:RKZSearchConditionLikeOr searchColumn:@"beacon" searchValueArray:@[@"DB000001"]]
];
// ソート条件
NSArray<RKZSortCondition *> *sortConditions = @[
// sort_noの昇順にソート
[[RKZSortCondition alloc] initWithSortType:RKZSortTypeAsc sortColumn:@"sort_no"]
];
[[RKZService sharedInstance] getSpotList:searchConditions sortConditionArray:sortConditions withBlock:^(NSArray<RKZSpotData *> * _Nonnull spots, RKZResponseStatus * _Nonnull responseStatus) {
if (responseStatus.isSuccess) {
// 成功時
for (RKZSpotData *item in spots) {
NSLog(@"code: %@", item.code);
NSLog(@"name: %@", item.name);
NSLog(@"beacon: %@", item.beacon); // 設置ビーコン端末
NSLog(@"beacon_range_for_iphone: %@", item.beacon_range_for_iphone); // ビーコン検知範囲(iOS用)
NSLog(@"beacon_range_for_android: %@", item.beacon_range_for_android); // ビーコン検知範囲(Android用)
}
} else {
// 失敗
NSLog(@"statusCode: %ld", responseStatus.statusCode);
NSLog(@"message: %@", responseStatus.message);
}
}];
// 検索条件
val searchConditions = listOf(
// 設置ビーコン端末が"DB000001"のレコードに絞り込む
RKZSearchCondition(RKZSearchCondition.LIKE_OR, "beacon", listOf("DB000001"))
)
// ソート条件
val sortConditions = listOf(
// sort_noの昇順にソート
RKZSortCondition(RKZSortCondition.ASC, "sort_no")
)
RKZClient.getInstance().getSpotList(searchConditions, sortConditions) { spots, rkzResponseStatus ->
if (rkzResponseStatus.isSuccess) {
// 成功時
spots.forEach {
Log.d(TAG, "code: ${it.code}")
Log.d(TAG, "name: ${it.name}")
Log.d(TAG, "beacon: ${it.beacon}") // 設置ビーコン端末
Log.d(TAG, "beaconRangeForIphone: ${it.beaconRangeForIphone}") // ビーコン検知範囲(iOS用)
Log.d(TAG, "beaconRangeForAndroid: ${it.beaconRangeForAndroid}") // ビーコン検知範囲(Android用)
}
} else {
// 失敗
Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
Log.e(TAG, "message: ${rkzResponseStatus.message}")
}
}
// 検索条件
List<RKZSearchCondition> searchConditions = Arrays.asList(
// 設置ビーコン端末が"DB000001"のレコードに絞り込む
new RKZSearchCondition(RKZSearchCondition.LIKE_OR, "beacon", Arrays.asList("DB000001"))
);
// ソート条件
List<RKZSortCondition> sortConditions = Arrays.asList(
// sort_noの昇順にソート
new RKZSortCondition(RKZSortCondition.ASC, "sort_no")
);
RKZClient.getInstance().getSpotList(searchConditions, sortConditions, new OnGetSpotListListener() {
@Override
public void onGetSpotList(List<Spot> spots, RKZResponseStatus rkzResponseStatus) {
if (rkzResponseStatus.isSuccess()) {
// 成功時
for (Spot item : spots) {
Log.d(TAG, "code: " + item.getCode());
Log.d(TAG, "name: " + item.getName());
Log.d(TAG, "beacon: " + item.getBeacon()); // 設置ビーコン端末
Log.d(TAG, "beaconRangeForIphone: " + item.getBeaconRangeForIphone()); // ビーコン検知範囲(iOS用)
Log.d(TAG, "beaconRangeForAndroid: " + item.getBeaconRangeForAndroid()); // ビーコン検知範囲(Android用)
}
} else {
// 失敗
Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
}
}
});
// 検索条件
var searchConditions = [
// 設置ビーコン端末が"DB000001"のレコードに絞り込む
RKZSearchCondition.likeOr('beacon', ['DB000001'])
]
// ソート条件
var sortConditions = [
// sort_noの昇順にソート
RKZSortCondition.asc('sort_no')
]
RKZClient.getSpotList(searchConditions, sortConditions, function (beacons) {
// 成功時
// 取得したビーコンID、major、minorのビーコン検知を行う
beacons.forEach(function (item) {
console.debug('code:', item.code)
console.debug('name:', item.name)
console.debug('beacon:', item.beacon) // 設置ビーコン端末
console.debug('beacon_range_for_iphone:', item.beacon_range_for_iphone) // ビーコン検知範囲(iOS用)
console.debug('beacon_range_for_android:', item.beacon_range_for_android) // ビーコン検知範囲(Android用)
})
}, function (error) {
// 失敗時
console.error('status_code:', error.status_code)
console.error('message:', error.message)
})
const result = await RKZ.Beacon.spotQuery()
.containsInArray('beacon', ['DB000001']) // 設置ビーコン端末が"DB000001"のレコードに絞り込む
.asc('sort_no') // sort_noの昇順にソート
.find()
result.forEach(item => {
console.debug('code:', item.code)
console.debug('name:', item.name)
console.debug('beacon:', item.beacon) // 設置ビーコン端末
console.debug('beacon_range_for_iphone:', item.beacon_range_for_iphone) // ビーコン検知範囲(iOS用)
console.debug('beacon_range_for_android:', item.beacon_range_for_android) // ビーコン検知範囲(Android用)
})
final query = RKZClient.instance.spotQuery()
..containsInArray('beacon', ['DB000001']) // 設置ビーコン端末が"DB000001"のレコードに絞り込む
..asc('sort_no'); // sort_noの昇順にソート
final spots = await query.find();
spots.forEach((item) {
print('code: ${item.code}');
print('name: ${item.name}');
print('beacon: ${item.beacon}'); // 設置ビーコン端末
print('beacon_range_for_iphone: ${item.beaconRangeForIphone}'); // ビーコン検知範囲(iOS用)
print('beacon_range_for_android: ${item.beaconRangeForAndroid}'); // ビーコン検知範囲(Android用)
});
返却されたビーコン検知範囲と実際に受信したビーコンのRSSI(受信信号強度)を比較することで、検知するビーコンの範囲を制御することができます。
ビーコン検知コンタクトを追加する
ビーコンを検知した時に、コンタクト履歴(ビーコン検知コンタクト)を残すことができます。
ビーコン検知コンタクトの追加はaddDetectBeaconContact
メソッドで行います。
メソッドの引数に検知したビーコンの情報を設定して呼び出してください。
RKZService.sharedInstance().getSystemDate { now, responseStatus in
guard responseStatus.isSuccess, let now = now else { return }
let userAccessToken = "xxx"
let beaconId = "c6e210e1-85da-4871-af2c-2ecdeaad205e" // 検知したビーコンのビーコンID
let beaconSpotCd = "0001" // 検知したビーコンのスポットコード
let rssi = "-50" // 検知したビーコンのRSSI
let remarks = "備考" // 備考
RKZService.sharedInstance().addDetectBeaconContact(userAccessToken, beaconId: beaconId, contactDate: now, beaconSpotCd: beaconSpotCd, rssi: rssi, remarks: remarks) { statusCode, responseStatus in
if responseStatus.isSuccess {
// 成功時
print("登録完了")
} else {
// 失敗
print("statusCode:", responseStatus.statusCode.rawValue)
print("message:", responseStatus.message ?? "")
}
}
}
[[RKZService sharedInstance] getSystemDateWithBlock:^(NSDate * _Nullable now, RKZResponseStatus * _Nonnull responseStatus) {
if (!responseStatus.isSuccess) return;
NSString *userAccessToken = @"xxx";
NSString *beaconId = @"c6e210e1-85da-4871-af2c-2ecdeaad205e"; // 検知したビーコンのビーコンID
NSString *beaconSpotCd = @"0001"; // 検知したビーコンのスポットコード
NSString *rssi = @"-50"; // 検知したビーコンのRSSI
NSString *remarks = @"備考"; // 備考
[[RKZService sharedInstance] addDetectBeaconContact:userAccessToken beaconId:beaconId contactDate:now beaconSpotCd:beaconSpotCd rssi:rssi remarks:remarks withBlock:^(RKZApiStatusCode statusCode, RKZResponseStatus * _Nonnull responseStatus) {
if (responseStatus.isSuccess) {
// 成功時
NSLog(@"登録完了");
} else {
// 失敗
NSLog(@"statusCode: %ld", responseStatus.statusCode);
NSLog(@"message: %@", responseStatus.message);
}
}];
}];
RKZClient.getInstance().getSystemDate { now, rkzResponseStatus ->
if (!rkzResponseStatus.isSuccess) return@getSystemDate
val userAccessToken = "xxx"
val beaconId = "c6e210e1-85da-4871-af2c-2ecdeaad205e" // 検知したビーコンのビーコンID
val beaconSpotCd = "0001" // 検知したビーコンのスポットコード
val rssi = -50 // 検知したビーコンのRSSI
val remarks = "備考" // 備考
RKZClient.getInstance().addDetectBeaconContact(userAccessToken, beaconId, beaconSpotCd, rssi, now, remarks) { statusCode, rkzResponseStatus ->
if (rkzResponseStatus.isSuccess) {
// 成功時
Log.d(TAG, "登録完了")
} else {
// 失敗
Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
Log.e(TAG, "message: ${rkzResponseStatus.message}")
}
}
}
RKZClient.getInstance().getSystemDate(new OnGetSystemDateListener() {
@Override
public void onGetSystemDateListener(Calendar now, RKZResponseStatus rkzResponseStatus) {
if (!rkzResponseStatus.isSuccess()) return;
String userAccessToken = "xxx";
String beaconId = "c6e210e1-85da-4871-af2c-2ecdeaad205e"; // 検知したビーコンのビーコンID
String beaconSpotCd = "0001"; // 検知したビーコンのスポットコード
Integer rssi = -50; // 検知したビーコンのRSSI
String remarks = "備考"; // 備考
RKZClient.getInstance().addDetectBeaconContact(userAccessToken, beaconId, beaconSpotCd, rssi, now, remarks, new OnAddDetectBeaconContactListener() {
@Override
public void onAddDetectBeaconContact(String statusCode, RKZResponseStatus rkzResponseStatus) {
if (rkzResponseStatus.isSuccess()) {
// 成功時
Log.d(TAG, "登録完了");
} else {
// 失敗
Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
}
}
});
}
});
RKZClient.getSystemDate(function (now) {
var userAccessToken = 'xxx'
var beaconId = 'c6e210e1-85da-4871-af2c-2ecdeaad205e' // 検知したビーコンのビーコンID
var beaconSpotCd = '0001' // 検知したビーコンのスポットコード
var rssi = -50 // 検知したビーコンのRSSI
var remarks = '備考' // 備考
RKZClient.addDetectBeaconContact(userAccessToken, beaconId, beaconSpotCd, rssi, new Date(now), remarks, function (statusCode) {
// 成功時
console.debug('登録完了')
}, function (error) {
// 失敗時
console.error('status_code:', error.status_code)
console.error('message:', error.message)
})
}, function (error) {
// 失敗時
console.error('status_code:', error.status_code)
console.error('message:', error.message)
})
const userAccessToken = 'xxx'
await RKZ.Beacon.addContact(userAccessToken, {
beacon_id: 'c6e210e1-85da-4871-af2c-2ecdeaad205e', // 検知したビーコンのビーコンID
beacon_spot_cd: '0001', // 検知したビーコンのスポットコード
rssi: -50, // 検知したビーコンのRSSI
remarks: '備考' // 備考
})
final userAccessToken = 'xxx';
final now = await RKZClient.instance.now();
await RKZClient.instance.addBeaconContact(
userAccessToken,
contactDate: now,
beaconId: 'c6e210e1-85da-4871-af2c-2ecdeaad205e', // 検知したビーコンのビーコンID
beaconSpotCd: '0001', // 検知したビーコンのスポットコード
rssi: -50, // 検知したビーコンのRSSI
remarks: '備考' // 備考
);
管理画面の「コンタクト管理」→「コンタクト履歴検索」を開き、「コンタクト」を「ビーコン検知」で検索すると、登録したビーコン検知コンタクトを確認することができます。
ヒント
ビーコン検知コンタクトはコンタクト種別が「ビーコン検知」(0012
)のコンタクト履歴として追加されます。
ビーコン検知コンタクトを検索する
ビーコン検知コンタクトの検索はgetDetectBeaconContact
メソッド(JavaScript・FlutterはBeaconContactQuery.find
メソッド)で⾏います。
検索条件、ソート条件を指定することができます。指定可能な条件については検索条件、ソート条件を参照してください。
let userAccessToken = "xxx"
// 検索条件
let searchConditions = [
// beacon_spot_cdが"0001"のレコードに絞り込む
RKZSearchCondition(RKZSearchConditionEqual, searchColumn: "beacon_spot_cd", searchValueArray: ["0001"])
]
// ソート条件
let sortConditions = [
// contact_dateの降順にソート
RKZSortCondition(RKZSortTypeDesc, sortColumn: "contact_date")
]
RKZService.sharedInstance().getDetectBeaconContact(userAccessToken, searchConditionArray: searchConditions, sortConditionArray: sortConditions) { contacts, responseStatus in
if responseStatus.isSuccess {
// 成功時
contacts.forEach { item in
print("contact_no:", item.contact_no ?? "")
print("contact_date:", item.contact_date ?? "")
print("beacon_id:", item.beacon_id ?? "")
print("beacon_spot_cd:", item.beacon_spot_cd ?? "")
print("rssi:", item.rssi ?? "")
print("remarks:", item.remarks ?? "")
}
} else {
// 失敗
print("statusCode:", responseStatus.statusCode.rawValue)
print("message:", responseStatus.message ?? "")
}
}
NSString *userAccessToken = @"xxx";
// 検索条件
NSArray<RKZSearchCondition *> *searchConditions = @[
// beacon_spot_cdが"0001"のレコードに絞り込む
[[RKZSearchCondition alloc] initWithSearchConditionType:RKZSearchConditionEqual searchColumn:@"beacon_spot_cd" searchValueArray:@[@"0001"]]
];
// ソート条件
NSArray<RKZSortCondition *> *sortConditions = @[
// contact_dateの降順にソート
[[RKZSortCondition alloc] initWithSortType:RKZSortTypeDesc sortColumn:@"contact_date"]
];
[[RKZService sharedInstance] getDetectBeaconContact:userAccessToken searchConditionArray:searchConditions sortConditionArray:sortConditions withBlock:^(NSArray<RKZBeaconDetectContactData *> * _Nonnull contacts, RKZResponseStatus * _Nonnull responseStatus) {
if (responseStatus.isSuccess) {
// 成功時
for (RKZBeaconDetectContactData *item in contacts) {
NSLog(@"contact_no: %@", item.contact_no);
NSLog(@"contact_date: %@", item.contact_date);
NSLog(@"beacon_id: %@", item.beacon_id);
NSLog(@"beacon_spot_cd: %@", item.beacon_spot_cd);
NSLog(@"rssi: %@", item.rssi);
NSLog(@"remarks: %@", item.remarks);
}
} else {
// 失敗
NSLog(@"statusCode: %ld", responseStatus.statusCode);
NSLog(@"message: %@", responseStatus.message);
}
}];
val userAccessToken = "xxx"
// 検索条件
val searchConditions = listOf(
// beacon_spot_cdが"0001"のレコードに絞り込む
RKZSearchCondition(RKZSearchCondition.EQUAL, "beacon_spot_cd", listOf("0001"))
)
// ソート条件
val sortConditions = listOf(
// contact_dateの降順にソート
RKZSortCondition(RKZSortCondition.DESC, "contact_date")
)
RKZClient.getInstance().getDetectBeaconContact(userAccessToken, searchConditions, sortConditions) { contacts, rkzResponseStatus ->
if (rkzResponseStatus.isSuccess) {
// 成功時
contacts.forEach {
Log.d(TAG, "contactNo: ${it.contactNo}")
Log.d(TAG, "contactDate: ${it.contactDate}")
Log.d(TAG, "beaconId: ${it.beaconId}")
Log.d(TAG, "beaconSpotCd: ${it.beaconSpotCd}")
Log.d(TAG, "rssi: ${it.rssi}")
Log.d(TAG, "remarks: ${it.remarks}")
}
} else {
// 失敗
Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
Log.e(TAG, "message: ${rkzResponseStatus.message}")
}
}
String userAccessToken = "xxx";
// 検索条件
List<RKZSearchCondition> searchConditions = Arrays.asList(
// beacon_spot_cdが"0001"のレコードに絞り込む
new RKZSearchCondition(RKZSearchCondition.EQUAL, "beacon_spot_cd", Arrays.asList("0001"))
);
// ソート条件
List<RKZSortCondition> sortConditions = Arrays.asList(
// contact_dateの降順にソート
new RKZSortCondition(RKZSortCondition.DESC, "contact_date")
);
RKZClient.getInstance().getDetectBeaconContact(userAccessToken, searchConditions, sortConditions, new OnGetDetectBeaconContactListener() {
@Override
public void onGetDetectBeaconContact(List<BeaconDetectContact> contacts, RKZResponseStatus rkzResponseStatus) {
if (rkzResponseStatus.isSuccess()) {
// 成功時
for (BeaconDetectContact item : contacts) {
Log.d(TAG, "contactNo: " + item.getContactNo());
Log.d(TAG, "contactDate: " + item.getContactDate());
Log.d(TAG, "beaconId: " + item.getBeaconId());
Log.d(TAG, "beaconSpotCd: " + item.getBeaconSpotCd());
Log.d(TAG, "rssi: " + item.getRssi());
Log.d(TAG, "remarks: " + item.getRemarks());
}
} else {
// 失敗
Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
}
}
});
var userAccessToken = 'xxx'
// 検索条件
var searchConditions = [
// beacon_spot_cdが"0001"のレコードに絞り込む
RKZSearchCondition.equal('beacon_spot_cd', '0001')
]
// ソート条件
var sortConditions = [
// contact_dateの降順にソート
RKZSortCondition.desc('contact_date')
]
RKZClient.getDetectBeaconContact(userAccessToken, searchConditions, sortConditions, function (contacts) {
// 成功時
contacts.forEach(function (item) {
console.debug('contact_no:', item.contact_no)
console.debug('contact_date:', item.contact_date)
console.debug('beacon_id:', item.beacon_id)
console.debug('beacon_spot_cd:', item.beacon_spot_cd)
console.debug('rssi:', item.rssi)
console.debug('remarks:', item.remarks)
})
}, function (error) {
// 失敗時
console.error('status_code:', error.status_code)
console.error('message:', error.message)
})
const userAccessToken = 'xxx'
const contacts = await RKZ.Beacon.contactQuery(userAccessToken)
.equalTo('beacon_spot_cd', '0001') // beacon_spot_cdが"0001"のレコードに絞り込む
.desc('contact_date') // contact_dateの降順にソート
.find()
contacts.forEach(item => {
console.debug('contact_no:', item.contact_no)
console.debug('contact_date:', item.contact_date)
console.debug('beacon_id:', item.beacon_id)
console.debug('beacon_spot_cd:', item.beacon_spot_cd)
console.debug('rssi:', item.rssi)
console.debug('remarks:', item.remarks)
})
final query = RKZClient.instance.beaconContactQuery(userAccessToken)
..equalTo('beacon_spot_cd', '0001') // beacon_spot_cdが"0001"のレコードに絞り込む
..desc('contact_date'); // contact_dateの降順にソート
final contacts = await query.find();
contacts.forEach((item) {
print('contactNo: ${item.contactNo}');
print('contactDate: ${item.contactDate}');
print('beaconId: ${item.beaconId}');
print('beaconSpotCd: ${item.beaconSpotCd}');
print('rssi: ${item.rssi}');
print('remarks: ${item.remarks}');
});