スタンプラリー管理

スタンプラリー管理機能は電子スタンプラリーを実現するために必要となる機能を提供します。

スタンプラリーの基本情報とスタンプ取得場所(スタンプラリースポット)を登録して、スタンプ取得やスタンプコンプリートの履歴を記録することができます。

このページでは、スタンプラリー管理機能を利⽤する実装例を紹介します。

注意

スタンプラリー管理機能は有償オプションです。利用したい場合は、製品サイトopen in new windowよりお問い合わせください。

スタンプラリー情報を登録する

スタンプラリー情報はスタンプラリーの基本情報です。

スタンプラリー台紙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}'); // スタンプを取得した日時
});