スタンプラリー管理
スタンプラリー管理機能は電子スタンプラリーを実現するために必要となる機能を提供します。
スタンプラリーの基本情報とスタンプ取得場所(スタンプラリースポット)を登録して、スタンプ取得やスタンプコンプリートの履歴を記録することができます。
このページでは、スタンプラリー管理機能を利⽤する実装例を紹介します。
注意
スタンプラリー管理機能は有償オプションです。利用したい場合は、製品サイトよりお問い合わせください。
スタンプラリー情報を登録する
スタンプラリー情報はスタンプラリーの基本情報です。
スタンプラリー台紙1枚につき、1件レコード作成します。
管理画面の「スタンプラリー管理」→「スタンプラリー一覧」を開くと、スタンプラリーの一覧を確認できます。また、同画面の「新規登録」よりスタンプラリーの新規作成をすることができます。
「開催期間」はスタンプラリーを開催している期間です。
スタンプラリースポットを登録する
スタンプラリースポットはスタンプラリーの各スタンプ取得場所です。
別途、スポット情報を作成して、スタンプラリー情報と紐付けます。
管理画面の「ビーコン管理」→「スポット一覧」を開くと、スポットの一覧を確認できます。また、同画面の「新規登録」よりスポットの新規作成をすることができます。
続いて、管理画面の「スタンプラリー管理」→「スタンプラリースポット一覧」を開き、スタンプラリースポット一覧を表示します。同画面の「新規登録」よりスタンプラリースポットの新規作成をすることができます。
紐づけたいスタンプラリーとスポットを選択して、登録してください。
スタンプラリー情報を検索する
開催期間外のスタンプラリー情報も含めてすべてのスタンプラリー情報を検索するにはgetAllStampRallyList
メソッド(JavaScript・FlutterはStampRallyQuery.all
メソッド)を使用します。
検索条件、ソート条件を指定することができます。指定可能な条件については検索条件、ソート条件を参照してください。
RKZService.sharedInstance().getAllStampRallyList(nil, sortConditionArray: nil) { rallies, responseStatus in
if responseStatus.isSuccess {
// 成功時
rallies.forEach { item in
print("code:", item.code ?? "")
print("name:", item.name ?? "")
print("stamp_rally_detail:", item.stamp_rally_detail ?? "") // スタンプラリー詳細
print("stamp_rally_image_url:", item.stamp_rally_image_url ?? "") // スタンプラリー画像
print("stamp_rally_start_date:", item.stamp_rally_start_date ?? "") // スタンプラリー開催開始日
print("stamp_rally_end_date:", item.stamp_rally_end_date ?? "") // スタンプラリー開催終了日
}
} else {
// 失敗
print("statusCode:", responseStatus.statusCode.rawValue)
print("message:", responseStatus.message ?? "")
}
}
[[RKZService sharedInstance] getAllStampRallyList:nil sortConditionArray:nil withBlock:^(NSArray<RKZStampRallyData *> * _Nonnull rallies, RKZResponseStatus * _Nonnull responseStatus) {
if (responseStatus.isSuccess) {
// 成功時
for (RKZStampRallyData *item in rallies) {
NSLog(@"code: %@", item.code);
NSLog(@"name: %@", item.name);
NSLog(@"stamp_rally_detail: %@", item.stamp_rally_detail); // スタンプラリー詳細
NSLog(@"stamp_rally_image_url: %@", item.stamp_rally_image_url); // スタンプラリー画像
NSLog(@"stamp_rally_start_date: %@", item.stamp_rally_start_date); // スタンプラリー開催開始日
NSLog(@"stamp_rally_end_date: %@", item.stamp_rally_end_date); // スタンプラリー開催終了日
}
} else {
// 失敗
NSLog(@"statusCode: %ld", responseStatus.statusCode);
NSLog(@"message: %@", responseStatus.message);
}
}];
RKZClient.getInstance().getAllStampRallyList(null, null) { rallies, rkzResponseStatus ->
if (rkzResponseStatus.isSuccess) {
// 成功時
rallies.forEach {
Log.d(TAG, "code: ${it.code}")
Log.d(TAG, "name: ${it.name}")
Log.d(TAG, "stampRallyDetail: ${it.stampRallyDetail}") // スタンプラリー詳細
Log.d(TAG, "stampRallyImageUrl: ${it.stampRallyImageUrl}") // スタンプラリー画像
Log.d(TAG, "stampRallyStartDate: ${it.stampRallyStartDate}") // スタンプラリー開催開始日
Log.d(TAG, "stampRallyEndDate: ${it.stampRallyEndDate}") // スタンプラリー開催終了日
}
} else {
// 失敗
Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
Log.e(TAG, "message: ${rkzResponseStatus.message}")
}
}
RKZClient.getInstance().getAllStampRallyList(null, null, new OnGetStampRallyListListener() {
@Override
public void onGetStampRallyList(List<StampRally> rallies, RKZResponseStatus rkzResponseStatus) {
if (rkzResponseStatus.isSuccess()) {
// 成功時
for (StampRally item : rallies) {
Log.d(TAG, "code: " + item.getCode());
Log.d(TAG, "name: " + item.getName());
Log.d(TAG, "stampRallyDetail: " + item.getStampRallyDetail()); // スタンプラリー詳細
Log.d(TAG, "stampRallyImageUrl: " + item.getStampRallyImageUrl()); // スタンプラリー画像
Log.d(TAG, "stampRallyStartDate: " + item.getStampRallyStartDate()); // スタンプラリー開催開始日
Log.d(TAG, "stampRallyEndDate: " + item.getStampRallyEndDate()); // スタンプラリー開催終了日
}
} else {
// 失敗
Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
}
}
});
RKZClient.getAllStampRallyList(null, null, function (rallies) {
// 成功時
rallies.forEach(function (item) {
console.debug('code:', item.code)
console.debug('name:', item.name)
console.debug('stamp_rally_detail:', item.stamp_rally_detail) // スタンプラリー詳細
console.debug('stamp_rally_image_url:', item.stamp_rally_image_url) // スタンプラリー画像
console.debug('stamp_rally_start_date:', item.stamp_rally_start_date) // スタンプラリー開催開始日
console.debug('stamp_rally_end_date:', item.stamp_rally_end_date) // スタンプラリー開催終了日
})
}, function (error) {
// 失敗時
console.error('status_code:', error.status_code)
console.error('message:', error.message)
})
const rallies = await RKZ.Stamp.rallyQuery().all()
rallies.forEach(item => {
console.debug('code:', item.code)
console.debug('name:', item.name)
console.debug('stamp_rally_detail:', item.stamp_rally_detail) // スタンプラリー詳細
console.debug('stamp_rally_image_url:', item.stamp_rally_image_url) // スタンプラリー画像
console.debug('stamp_rally_start_date:', item.stamp_rally_start_date) // スタンプラリー開催開始日
console.debug('stamp_rally_end_date:', item.stamp_rally_end_date) // スタンプラリー開催終了日
})
final rallies = await RKZClient.instance.stampRallyQuery().all();
rallies.forEach((item) {
print('code: ${item.code}');
print('name: ${item.name}');
print('stampRallyDetail: ${item.stampRallyDetail}');
print('stampRallyImageUrl: ${item.stampRallyImageUrl}');
print('stampRallyStartDate: ${item.stampRallyStartDate}');
print('stampRallyEndDate: ${item.stampRallyEndDate}');
});
開催中のスタンプラリー情報のみ検索するにはgetStampRallyList
メソッド(JavaScript・FlutterはStampRallyQuery.current
メソッド)を使用します。
RKZService.sharedInstance().getStampRallyList(nil, sortConditionArray: nil) { rallies, responseStatus in
if responseStatus.isSuccess {
// 成功時
rallies.forEach { item in
print("code:", item.code ?? "")
print("name:", item.name ?? "")
}
} else {
// 失敗
print("statusCode:", responseStatus.statusCode.rawValue)
print("message:", responseStatus.message ?? "")
}
}
[[RKZService sharedInstance] getStampRallyList:nil sortConditionArray:nil withBlock:^(NSArray<RKZStampRallyData *> * _Nonnull rallies, RKZResponseStatus * _Nonnull responseStatus) {
if (responseStatus.isSuccess) {
// 成功時
for (RKZStampRallyData *item in rallies) {
NSLog(@"code: %@", item.code);
NSLog(@"name: %@", item.name);
}
} else {
// 失敗
NSLog(@"statusCode: %ld", responseStatus.statusCode);
NSLog(@"message: %@", responseStatus.message);
}
}];
RKZClient.getInstance().getStampRallyList(null, null) { rallies, rkzResponseStatus ->
if (rkzResponseStatus.isSuccess) {
// 成功時
rallies.forEach {
Log.d(TAG, "code: ${it.code}")
Log.d(TAG, "name: ${it.name}")
}
} else {
// 失敗
Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
Log.e(TAG, "message: ${rkzResponseStatus.message}")
}
}
RKZClient.getInstance().getStampRallyList(null, null, new OnGetStampRallyListListener() {
@Override
public void onGetStampRallyList(List<StampRally> rallies, RKZResponseStatus rkzResponseStatus) {
if (rkzResponseStatus.isSuccess()) {
// 成功時
for (StampRally item : rallies) {
Log.d(TAG, "code: " + item.getCode());
Log.d(TAG, "name: " + item.getName());
}
} else {
// 失敗
Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
}
}
});
RKZClient.getStampRallyList(null, null, function (rallies) {
// 成功時
rallies.forEach(function (item) {
console.debug('code:', item.code)
console.debug('name:', item.name)
})
}, function (error) {
// 失敗時
console.error('status_code:', error.status_code)
console.error('message:', error.message)
})
const rallies = await RKZ.Stamp.rallyQuery().current()
rallies.forEach(item => {
console.debug('code:', item.code)
console.debug('name:', item.name)
})
final rallies = await RKZClient.instance.stampRallyQuery().current();
rallies.forEach((item) {
print('code: ${item.code}');
print('name: ${item.name}');
});
スタンプラリースポットを検索する
すべてのスタンプラリースポットの検索はgetStampRallySpotList
メソッド(JavaScript・FlutterはStampRallySpotQuery.find
メソッド)で⾏います。
検索条件、ソート条件を指定することができます。指定可能な条件については検索条件、ソート条件を参照してください。
RKZService.sharedInstance().getStampRallySpotList(nil, sortConditionArray: nil) { stampRallySpots, responseStatus in
if responseStatus.isSuccess {
// 成功時
stampRallySpots.forEach { item in
print("code:", item.code ?? "")
print("name:", item.name ?? "")
print("stamp_rally_cd:", item.stamp_rally_cd ?? "") // スタンプラリーコード
print("stamp_rally_name:", item.stamp_rally_name ?? "") // スタンプラリー名称
print("spot.code:", item.spot?.code ?? "") // スポット情報
}
} else {
// 失敗
print("statusCode:", responseStatus.statusCode.rawValue)
print("message:", responseStatus.message ?? "")
}
}
[[RKZService sharedInstance] getStampRallySpotList:nil sortConditionArray:nil withBlock:^(NSArray<RKZStampRallySpotData *> * _Nonnull stampRallySpots, RKZResponseStatus * _Nonnull responseStatus) {
if (responseStatus.isSuccess) {
// 成功時
for (RKZStampRallySpotData *item in stampRallySpots) {
NSLog(@"code: %@", item.code);
NSLog(@"name: %@", item.name);
NSLog(@"stamp_rally_cd: %@", item.stamp_rally_cd); // スタンプラリーコード
NSLog(@"stamp_rally_name: %@", item.stamp_rally_name); // スタンプラリー名称
NSLog(@"spot.code: %@", item.spot.code); // スポット情報
}
} else {
// 失敗
NSLog(@"statusCode: %ld", responseStatus.statusCode);
NSLog(@"message: %@", responseStatus.message);
}
}];
RKZClient.getInstance().getStampRallySpotList(null, null) { stampRallySpots, rkzResponseStatus ->
if (rkzResponseStatus.isSuccess) {
// 成功時
stampRallySpots.forEach {
Log.d(TAG, "code: ${it.code}")
Log.d(TAG, "name: ${it.name}")
Log.d(TAG, "stampRallyCd: ${it.stampRallyCd}") // スタンプラリーコード
Log.d(TAG, "stampRallyName: ${it.stampRallyName}") // スタンプラリー名称
Log.d(TAG, "spot.code: ${it.spot.code}") // スポット情報
}
} else {
// 失敗
Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
Log.e(TAG, "message: ${rkzResponseStatus.message}")
}
}
RKZClient.getInstance().getStampRallySpotList(null, null, new OnGetStampRallySpotListListener() {
@Override
public void onGetStampRallySpotList(List<StampRallySpot> stampRallySpots, RKZResponseStatus rkzResponseStatus) {
if (rkzResponseStatus.isSuccess()) {
// 成功時
for (StampRallySpot item : stampRallySpots) {
Log.d(TAG, "code: " + item.getCode());
Log.d(TAG, "name: " + item.getName());
Log.d(TAG, "stampRallyCd: " + item.getStampRallyCd()); // スタンプラリーコード
Log.d(TAG, "stampRallyName: " + item.getStampRallyName()); // スタンプラリー名称
Log.d(TAG, "spot.code: " + item.getSpot().getCode()); // スポット情報
}
} else {
// 失敗
Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
}
}
});
RKZClient.getStampRallySpotList(null, null, function (stampRallySpots) {
// 成功時
stampRallySpots.forEach(function (item) {
console.debug('code:', item.code)
console.debug('name:', item.name)
console.debug('stamp_rally_cd:', item.stamp_rally_cd) // スタンプラリーコード
console.debug('stamp_rally_name:', item.stamp_rally_name) // スタンプラリー名称
console.debug('spot.code:', item.spot.code) // スポット情報
})
}, function (error) {
// 失敗時
console.error('status_code:', error.status_code)
console.error('message:', error.message)
})
const rallySpots = await RKZ.Stamp.rallySpotQuery().find()
rallySpots.forEach(item => {
console.debug('code:', item.code)
console.debug('name:', item.name)
console.debug('stamp_rally_cd:', item.stamp_rally_cd) // スタンプラリーコード
console.debug('stamp_rally_name:', item.stamp_rally_name) // スタンプラリー名称
console.debug('spot.code:', item.spot.code) // スポット情報
})
final rallySpots = await RKZClient.instance.stampRallySpotQuery().find();
rallySpots.forEach((item) {
print('code: ${item.code}');
print('name: ${item.name}');
print('stampRallyCd: ${item.stampRallyCd}'); // スタンプラリーコード
print('stampRallyName: ${item.stampRallyName}'); // スタンプラリー名称
print('spot.code: ${item.spot?.code}'); // スポット情報
});
スタンプラリーコード、スポットコード、スポットに紐づくビーコン端末のコードで検索することもできます。
スタンプラリーコードでの検索はgetStampRallySpotListByStampRallyId
メソッド(JavaScript・FlutterはStampRallySpotQuery.findByStampRallyId
メソッド)で⾏います。
let stampRallyId = "0001" // スタンプラリーコード
RKZService.sharedInstance().getStampRallySpotList(byStampRallyId: stampRallyId, searchConditionArray: nil, sortConditionArray: nil) { stampRallySpots, responseStatus in
if responseStatus.isSuccess {
// 成功時
stampRallySpots.forEach { item in
print("code:", item.code ?? "")
print("name:", item.name ?? "")
}
} else {
// 失敗
print("statusCode:", responseStatus.statusCode.rawValue)
print("message:", responseStatus.message ?? "")
}
}
NSString *stampRallyId = @"0001"; // スタンプラリーコード
[[RKZService sharedInstance] getStampRallySpotListByStampRallyId:stampRallyId searchConditionArray:nil sortConditionArray:nil withBlock:^(NSArray<RKZStampRallySpotData *> * _Nonnull stampRallySpots, RKZResponseStatus * _Nonnull responseStatus) {
if (responseStatus.isSuccess) {
// 成功時
for (RKZStampRallySpotData *item in stampRallySpots) {
NSLog(@"code: %@", item.code);
NSLog(@"name: %@", item.name);
}
} else {
// 失敗
NSLog(@"statusCode: %ld", responseStatus.statusCode);
NSLog(@"message: %@", responseStatus.message);
}
}];
val stampRallyId = "0001" // スタンプラリーコード
RKZClient.getInstance().getStampRallySpotListByStampRallyId(stampRallyId, null, null) { stampRallySpots, rkzResponseStatus ->
if (rkzResponseStatus.isSuccess) {
// 成功時
stampRallySpots.forEach {
Log.d(TAG, "code: ${it.code}")
Log.d(TAG, "name: ${it.name}")
}
} else {
// 失敗
Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
Log.e(TAG, "message: ${rkzResponseStatus.message}")
}
}
String stampRallyId = "0001"; // スタンプラリーコード
RKZClient.getInstance().getStampRallySpotListByStampRallyId(stampRallyId, null, null, new OnGetStampRallySpotListListener() {
@Override
public void onGetStampRallySpotList(List<StampRallySpot> stampRallySpots, RKZResponseStatus rkzResponseStatus) {
if (rkzResponseStatus.isSuccess()) {
// 成功時
for (StampRallySpot item : stampRallySpots) {
Log.d(TAG, "code: " + item.getCode());
Log.d(TAG, "name: " + item.getName());
}
} else {
// 失敗
Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
}
}
});
var stampRallyId = '0001' // スタンプラリーコード
RKZClient.getStampRallySpotListByStampRallyId(stampRallyId, null, null, function (stampRallySpots) {
// 成功時
stampRallySpots.forEach(function (item) {
console.debug('code:', item.code)
console.debug('name:', item.name)
})
}, function (error) {
// 失敗時
console.error('status_code:', error.status_code)
console.error('message:', error.message)
})
const stampRallyId = '0001' // スタンプラリーコード
const rallySpots = await RKZ.Stamp.rallySpotQuery().findByStampRallyId(stampRallyId)
rallySpots.forEach(item => {
console.debug('code:', item.code)
console.debug('name:', item.name)
})
final stampRallyId = '0001'; // スタンプラリーコード
final rallySpots = await RKZClient.instance.stampRallySpotQuery()
.findByStampRallyId(stampRallyId);
rallySpots.forEach((item) {
print('code: ${item.code}');
print('name: ${item.name}');
});
スポットコードでの検索はgetStampRallySpotListBySpotId
メソッド(JavaScript・FlutterはStampRallySpotQuery.findBySpotId
メソッド)で⾏います。
let spotId = "0001" // スポットコード
RKZService.sharedInstance().getStampRallySpotList(bySpotId: spotId, searchConditionArray: nil, sortConditionArray: nil) { stampRallySpots, responseStatus in
if responseStatus.isSuccess {
// 成功時
stampRallySpots.forEach { item in
print("code:", item.code ?? "")
print("name:", item.name ?? "")
}
} else {
// 失敗
print("statusCode:", responseStatus.statusCode.rawValue)
print("message:", responseStatus.message ?? "")
}
}
NSString *spotId = @"0001"; // スポットコード
[[RKZService sharedInstance] getStampRallySpotListBySpotId:spotId searchConditionArray:nil sortConditionArray:nil withBlock:^(NSArray<RKZStampRallySpotData *> * _Nonnull stampRallySpots, RKZResponseStatus * _Nonnull responseStatus) {
if (responseStatus.isSuccess) {
// 成功時
for (RKZStampRallySpotData *item in stampRallySpots) {
NSLog(@"code: %@", item.code);
NSLog(@"name: %@", item.name);
}
} else {
// 失敗
NSLog(@"statusCode: %ld", responseStatus.statusCode);
NSLog(@"message: %@", responseStatus.message);
}
}];
val spotId = "0001" // スポットコード
RKZClient.getInstance().getStampRallySpotListBySpotId(spotId, null, null) { stampRallySpots, rkzResponseStatus ->
if (rkzResponseStatus.isSuccess) {
// 成功時
stampRallySpots.forEach {
Log.d(TAG, "code: ${it.code}")
Log.d(TAG, "name: ${it.name}")
}
} else {
// 失敗
Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
Log.e(TAG, "message: ${rkzResponseStatus.message}")
}
}
String spotId = "0001"; // スポットコード
RKZClient.getInstance().getStampRallySpotListBySpotId(spotId, null, null, new OnGetStampRallySpotListListener() {
@Override
public void onGetStampRallySpotList(List<StampRallySpot> stampRallySpots, RKZResponseStatus rkzResponseStatus) {
if (rkzResponseStatus.isSuccess()) {
// 成功時
for (StampRallySpot item : stampRallySpots) {
Log.d(TAG, "code: " + item.getCode());
Log.d(TAG, "name: " + item.getName());
}
} else {
// 失敗
Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
}
}
});
var spotId = '0001' // スポットコード
RKZClient.getStampRallySpotListBySpotId(spotId, null, null, function (stampRallySpots) {
// 成功時
stampRallySpots.forEach(function (item) {
console.debug('code:', item.code)
console.debug('name:', item.name)
})
}, function (error) {
// 失敗時
console.error('status_code:', error.status_code)
console.error('message:', error.message)
})
const spotId = '0001' // スポットコード
const rallySpots = await RKZ.Stamp.rallySpotQuery().findBySpotId(spotId)
rallySpots.forEach(item => {
console.debug('code:', item.code)
console.debug('name:', item.name)
})
final spotId = '0001'; // スポットコード
final rallySpots = await RKZClient.instance.stampRallySpotQuery()
.findBySpotId(spotId);
rallySpots.forEach((item) {
print('code: ${item.code}');
print('name: ${item.name}');
});
スポットに紐づくビーコン端末のコードでの検索はgetStampRallySpotListByBeaconId
メソッド(JavaScript・FlutterはStampRallySpotQuery.findByBeaconId
メソッド)で⾏います。
let beaconId = "DB000001" // スポットに紐づくビーコン端末のコード
RKZService.sharedInstance().getStampRallySpotList(byBeaconId: beaconId, searchConditionArray: nil, sortConditionArray: nil) { stampRallySpots, responseStatus in
if responseStatus.isSuccess {
// 成功時
stampRallySpots.forEach { item in
print("code:", item.code ?? "")
print("name:", item.name ?? "")
}
} else {
// 失敗
print("statusCode:", responseStatus.statusCode.rawValue)
print("message:", responseStatus.message ?? "")
}
}
NSString *beaconId = @"DB000001"; // スポットに紐づくビーコン端末のコード
[[RKZService sharedInstance] getStampRallySpotListByBeaconId:beaconId searchConditionArray:nil sortConditionArray:nil withBlock:^(NSArray<RKZStampRallySpotData *> * _Nonnull stampRallySpots, RKZResponseStatus * _Nonnull responseStatus) {
if (responseStatus.isSuccess) {
// 成功時
for (RKZStampRallySpotData *item in stampRallySpots) {
NSLog(@"code: %@", item.code);
NSLog(@"name: %@", item.name);
}
} else {
// 失敗
NSLog(@"statusCode: %ld", responseStatus.statusCode);
NSLog(@"message: %@", responseStatus.message);
}
}];
val beaconId = "DB000001" // スポットに紐づくビーコン端末のコード
RKZClient.getInstance().getStampRallySpotListByBeaconId(beaconId, null, null) { stampRallySpots, rkzResponseStatus ->
if (rkzResponseStatus.isSuccess) {
// 成功時
stampRallySpots.forEach {
Log.d(TAG, "code: ${it.code}")
Log.d(TAG, "name: ${it.name}")
}
} else {
// 失敗
Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
Log.e(TAG, "message: ${rkzResponseStatus.message}")
}
}
String beaconId = "DB000001"; // スポットに紐づくビーコン端末のコード
RKZClient.getInstance().getStampRallySpotListByBeaconId(beaconId, null, null, new OnGetStampRallySpotListListener() {
@Override
public void onGetStampRallySpotList(List<StampRallySpot> stampRallySpots, RKZResponseStatus rkzResponseStatus) {
if (rkzResponseStatus.isSuccess()) {
// 成功時
for (StampRallySpot item : stampRallySpots) {
Log.d(TAG, "code: " + item.getCode());
Log.d(TAG, "name: " + item.getName());
}
} else {
// 失敗
Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
}
}
});
var beaconId = 'DB000001' // スポットに紐づくビーコン端末のコード
RKZClient.getStampRallySpotListByBeaconId(beaconId, null, null, function (stampRallySpots) {
// 成功時
stampRallySpots.forEach(function (item) {
console.debug('code:', item.code)
console.debug('name:', item.name)
})
}, function (error) {
// 失敗時
console.error('status_code:', error.status_code)
console.error('message:', error.message)
})
const beaconId = 'DB000001' // スポットに紐づくビーコン端末のコード
const rallySpots = await RKZ.Stamp.rallySpotQuery().findByBeaconId(beaconId)
rallySpots.forEach(item => {
console.debug('code:', item.code)
console.debug('name:', item.name)
})
final beaconId = 'DB000001'; // スポットに紐づくビーコン端末のコード
final rallySpots = await RKZClient.instance.stampRallySpotQuery()
.findByBeaconId(beaconId);
rallySpots.forEach((item) {
print('code: ${item.code}');
print('name: ${item.name}');
});
スタンプ取得履歴を登録する
ユーザーがスタンプを取得したスポットをもとに、スタンプ取得履歴を登録することができます。
ユーザーがスタンプを取得したことを検知する方法としては、ビーコン検知やQRコード読み取りなどがあります。
スタンプ取得履歴の登録はaddMyStamp
メソッドで行います。
let userAccessToken = "xxx"
let stampRallyId = "0001" // スタンプラリーコード
let stampRallySpotId = "0001" // スタンプを取得したスタンプラリースポットコード
RKZService.sharedInstance().addMyStamp(userAccessToken, stampRallyId: stampRallyId, spotId: stampRallySpotId) { statusCode, responseStatus in
if responseStatus.isSuccess {
// 成功時
print("登録完了")
} else {
// 失敗
print("statusCode:", responseStatus.statusCode.rawValue)
print("message:", responseStatus.message ?? "")
}
}
NSString *userAccessToken = @"xxx";
NSString *stampRallyId = @"0001"; // スタンプラリーコード
NSString *stampRallySpotId = @"0001"; // スタンプを取得したスタンプラリースポットコード
[[RKZService sharedInstance] addMyStamp:userAccessToken stampRallyId:stampRallyId spotId:stampRallySpotId withBlock:^(RKZApiStatusCode statusCode, RKZResponseStatus * _Nonnull responseStatus) {
if (responseStatus.isSuccess) {
// 成功時
NSLog(@"登録完了");
} else {
// 失敗
NSLog(@"statusCode: %ld", responseStatus.statusCode);
NSLog(@"message: %@", responseStatus.message);
}
}];
val userAccessToken = "xxx"
val stampRallyId = "0001" // スタンプラリーコード
val stampRallySpotId = "0001" // スタンプを取得したスタンプラリースポットコード
RKZClient.getInstance().addMyStamp(userAccessToken, stampRallyId, stampRallySpotId) { rkzResponseStatus ->
if (rkzResponseStatus.isSuccess) {
// 成功時
Log.d(TAG, "登録完了")
} else {
// 失敗
Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
Log.e(TAG, "message: ${rkzResponseStatus.message}")
}
}
String userAccessToken = "xxx";
String stampRallyId = "0001"; // スタンプラリーコード
String stampRallySpotId = "0001"; // スタンプを取得したスタンプラリースポットコード
RKZClient.getInstance().addMyStamp(userAccessToken, stampRallyId, stampRallySpotId, new OnAddMyStampListener() {
@Override
public void onAddMyStamp(RKZResponseStatus rkzResponseStatus) {
if (rkzResponseStatus.isSuccess()) {
// 成功時
Log.d(TAG, "登録完了");
} else {
// 失敗
Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
}
}
});
var userAccessToken = 'xxx'
var stampRallyId = '0001' // スタンプラリーコード
var stampRallySpotId = '0001' // スタンプを取得したスタンプラリースポットコード
RKZClient.addMyStamp(userAccessToken, stampRallyId, stampRallySpotId, function (statusCode) {
// 成功時
console.debug('登録完了')
}, function (error) {
// 失敗時
console.error('status_code:', error.status_code)
console.error('message:', error.message)
})
const userAccessToken = 'xxx'
const stampRallyId = '0001' // スタンプラリーコード
const stampRallySpotId = '0001' // スタンプを取得したスタンプラリースポットコード
await RKZ.Stamp.add(userAccessToken, stampRallyId, stampRallySpotId)
final userAccessToken = 'xxx';
final stampRallyId = '0001'; // スタンプラリーコード
final stampRallySpotId = '0001'; // スタンプを取得したスタンプラリースポットコード
await RKZClient.instance.addStampHistory(userAccessToken, stampRallyId, stampRallySpotId);
管理画面の「コンタクト管理」→「コンタクト履歴検索」を開き、「コンタクト」を「スタンプGET」で検索すると、登録したスタンプ取得履歴を確認することができます。
注意
同じスタンプラリーコードとスポットコードで複数回登録を行うことができます。そのため、すでに同じスタンプラリーコードとスポットコードで登録済みかどうかをアプリ側で判定する必要があります。
スタンプコンプリート履歴を登録する
スタンプをすべて取得(コンプリート)した時に、スタンプコンプリート履歴を登録することができます。
スタンプコンプリート履歴の登録はstampComplete
メソッドで行います。
let userAccessToken = "xxx"
let stampRallyId = "0001" // スタンプラリーコード
RKZService.sharedInstance().stampComplete(userAccessToken, stampRallyId: stampRallyId) { statusCode, responseStatus in
if responseStatus.isSuccess {
// 成功時
print("完了")
} else {
// 失敗
print("statusCode:", responseStatus.statusCode.rawValue)
print("message:", responseStatus.message ?? "")
}
}
NSString *userAccessToken = @"xxx";
NSString *stampRallyId = @"0001"; // スタンプラリーコード
[[RKZService sharedInstance] stampComplete:userAccessToken stampRallyId:stampRallyId withBlock:^(RKZApiStatusCode statusCode, RKZResponseStatus * _Nonnull responseStatus) {
if (responseStatus.isSuccess) {
// 成功時
NSLog(@"完了");
} else {
// 失敗
NSLog(@"statusCode: %ld", responseStatus.statusCode);
NSLog(@"message: %@", responseStatus.message);
}
}];
val userAccessToken = "xxx"
val stampRallyId = "0001" // スタンプラリーコード
RKZClient.getInstance().stampComplete(userAccessToken, stampRallyId) { rkzResponseStatus ->
if (rkzResponseStatus.isSuccess) {
// 成功時
Log.d(TAG, "完了")
} else {
// 失敗
Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
Log.e(TAG, "message: ${rkzResponseStatus.message}")
}
}
String userAccessToken = "xxx";
String stampRallyId = "0001"; // スタンプラリーコード
RKZClient.getInstance().stampComplete(userAccessToken, stampRallyId, new OnStampCompleteListener() {
@Override
public void onStampComplete(RKZResponseStatus rkzResponseStatus) {
if (rkzResponseStatus.isSuccess()) {
// 成功時
Log.d(TAG, "完了");
} else {
// 失敗
Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
}
}
});
var userAccessToken = 'xxx'
var stampRallyId = '0001' // スタンプラリーコード
RKZClient.stampComplete(userAccessToken, stampRallyId, function (statusCode) {
// 成功時
console.debug('完了')
}, function (error) {
// 失敗時
console.error('status_code:', error.status_code)
console.error('message:', error.message)
})
const userAccessToken = 'xxx'
const stampRallyId = '0001' // スタンプラリーコード
await RKZ.Stamp.complete(userAccessToken, stampRallyId)
final userAccessToken = 'xxx';
final stampRallyId = '0001'; // スタンプラリーコード
await RKZClient.instance.completeStampRally(userAccessToken, stampRallyId);
管理画面の「コンタクト管理」→「コンタクト履歴検索」を開き、「コンタクト」を「スタンプコンプリート」で検索すると、登録したスタンプコンプリート履歴を確認することができます。
注意
コンプリートしたかどうかの判定はアプリ側で行う必要があります。
注意
同じスタンプラリーコードで複数回登録を行うことができます。そのため、すでに同じスタンプラリーコードで登録済みかどうかをアプリ側で判定する必要があります。
スタンプ取得履歴を検索する
スタンプ取得履歴の検索はgetMyStampHistoryList
メソッド(JavaScript・FlutterはStampHistoryQuery.find
メソッド)で⾏います。
検索条件、ソート条件を指定することができます。指定可能な条件については検索条件、ソート条件を参照してください。
let userAccessToken = "xxx"
RKZService.sharedInstance().getMyStampHistoryList(userAccessToken, searchConditionArray: nil, sortConditionArray: nil) { stampHistories, responseStatus in
if responseStatus.isSuccess {
// 成功時
stampHistories.forEach { item in
print("stamp_rally_cd:", item.stamp_rally_cd ?? "") // スタンプラリーコード
print("stamp_rally_name:", item.stamp_rally_name ?? "") // スタンプラリー名称
print("stamp_rally_spot_cd:", item.stamp_rally_spot_cd ?? "") // スタンプラリースポットコード
print("stamp_rally_spot_name:", item.stamp_rally_spot_name ?? "") // スタンプラリースポット名称
print("contact_date:", item.contact_date ?? "") // スタンプを取得した日時
}
} else {
// 失敗
print("statusCode:", responseStatus.statusCode.rawValue)
print("message:", responseStatus.message ?? "")
}
}
NSString *userAccessToken = @"xxx";
[[RKZService sharedInstance] getMyStampHistoryList:userAccessToken searchConditionArray:nil sortConditionArray:nil withBlock:^(NSArray<RKZMyStampHistoryData *> * _Nonnull stampHistories, RKZResponseStatus * _Nonnull responseStatus) {
if (responseStatus.isSuccess) {
// 成功時
for (RKZMyStampHistoryData *item in stampHistories) {
NSLog(@"stamp_rally_cd: %@", item.stamp_rally_cd); // スタンプラリーコード
NSLog(@"stamp_rally_name: %@", item.stamp_rally_name); // スタンプラリー名称
NSLog(@"stamp_rally_spot_cd: %@", item.stamp_rally_spot_cd); // スタンプラリースポットコード
NSLog(@"stamp_rally_spot_name: %@", item.stamp_rally_spot_name); // スタンプラリースポット名称
NSLog(@"contact_date: %@", item.contact_date); // スタンプを取得した日時
}
} else {
// 失敗
NSLog(@"statusCode: %ld", responseStatus.statusCode);
NSLog(@"message: %@", responseStatus.message);
}
}];
val userAccessToken = "xxx"
RKZClient.getInstance().getMyStampHistoryList(userAccessToken, null, null) { stampHistories, rkzResponseStatus ->
if (rkzResponseStatus.isSuccess) {
// 成功時
stampHistories.forEach {
Log.d(TAG, "stampRallyCd: ${it.stampRallyCd}") // スタンプラリーコード
Log.d(TAG, "stampRallyName: ${it.stampRallyName}") // スタンプラリー名称
Log.d(TAG, "stampRallySpotCd: ${it.stampRallySpotCd}") // スタンプラリースポットコード
Log.d(TAG, "stampRallySpotName: ${it.stampRallySpotName}") // スタンプラリースポット名称
Log.d(TAG, "contactDate: ${it.contactDate}") // スタンプを取得した日時
}
} else {
// 失敗
Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
Log.e(TAG, "message: ${rkzResponseStatus.message}")
}
}
String userAccessToken = "xxx";
RKZClient.getInstance().getMyStampHistoryList(userAccessToken, null, null, new OnGetAcquisitionStateOfStampListener() {
@Override
public void onGetAcquisitionStateOfStamp(List<MyStampHistory> stampHistories, RKZResponseStatus rkzResponseStatus) {
if (rkzResponseStatus.isSuccess()) {
// 成功時
for (MyStampHistory item : stampHistories) {
Log.d(TAG, "stampRallyCd: " + item.getStampRallyCd()); // スタンプラリーコード
Log.d(TAG, "stampRallyName: " + item.getStampRallyName()); // スタンプラリー名称
Log.d(TAG, "stampRallySpotCd: " + item.getStampRallySpotCd()); // スタンプラリースポットコード
Log.d(TAG, "stampRallySpotName: " + item.getStampRallySpotName()); // スタンプラリースポット名称
Log.d(TAG, "contactDate: " + item.getContactDate()); // スタンプを取得した日時
}
} else {
// 失敗
Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
}
}
});
var userAccessToken = 'xxx'
RKZClient.getMyStampHistoryList(userAccessToken, null, null, function (stampHistories) {
// 成功時
stampHistories.forEach(function (item) {
console.debug('stamp_rally_cd:', item.stamp_rally_cd) // スタンプラリーコード
console.debug('stamp_rally_name:', item.stamp_rally_name) // スタンプラリー名称
console.debug('stamp_rally_spot_cd:', item.stamp_rally_spot_cd) // スタンプラリースポットコード
console.debug('stamp_rally_spot_name:', item.stamp_rally_spot_name) // スタンプラリースポット名称
console.debug('contact_date:', item.contact_date) // スタンプを取得した日時
})
}, function (error) {
// 失敗時
console.error('status_code:', error.status_code)
console.error('message:', error.message)
})
const userAccessToken = 'xxx'
const stampHistories = await RKZ.Stamp.historyQuery(userAccessToken).find()
stampHistories.forEach(item => {
console.debug('stamp_rally_cd:', item.stamp_rally_cd) // スタンプラリーコード
console.debug('stamp_rally_name:', item.stamp_rally_name) // スタンプラリー名称
console.debug('stamp_rally_spot_cd:', item.stamp_rally_spot_cd) // スタンプラリースポットコード
console.debug('stamp_rally_spot_name:', item.stamp_rally_spot_name) // スタンプラリースポット名称
console.debug('contact_date:', item.contact_date) // スタンプを取得した日時
})
final userAccessToken = 'xxx';
final stampHistories = await RKZClient.instance.stampHistoryQuery(userAccessToken).find();
stampHistories.forEach((item) {
print('stampRallyCd: ${item.stampRallyCd}'); // スタンプラリーコード
print('stampRallyName: ${item.stampRallyName}'); // スタンプラリー名称
print('stampRallySpotCd: ${item.stampRallySpotCd}'); // スタンプラリースポットコード
print('stampRallySpotName: ${item.stampRallySpotName}'); // スタンプラリースポット名称
print('contactDate: ${item.contactDate}'); // スタンプを取得した日時
});