QIUI Cellmate 2 Cag-Ink Chastity Cock Cage
QIUI Cellmate 2 Cag-Ink Chastity Cock Cage
QIUI Cellmate 2 Cag-Ink Chastity Cock Cage
QIUI Cellmate 2 Cag-Ink Chastity Cock Cage
QIUI Cellmate 2 Cag-Ink Chastity Cock Cage
QIUI Cellmate 2 Cag-Ink Chastity Cock Cage
QIUI Cellmate 2 Cag-Ink Chastity Cock Cage
QIUI Cellmate 2 Cag-Ink Chastity Cock Cage
QIUI Cellmate 2 Cag-Ink Chastity Cock Cage
QIUI Cellmate 2 Cag-Ink Chastity Cock Cage
QIUI Cellmate 2 Cag-Ink Chastity Cock Cage

QIUI Cellmate 2 Cag-Ink Chastity Cock Cage

Experience cutting-edge control with the QIUI Cellmate 2 Chastity Cock Cage. With electrifying features, app-controlled functionalities, and IPX6 waterproof rating,Cellmate2 will elevate your pleasure and enhance your experience.
$255.00
$300.00
-$45.00
Item-Short 2.6 Inch
Please select a item
Quantity
Free Worldwide Shipping
Fast Shipping
Discreet Packaging
Secure payments
/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1539149753700').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);

QIUI CAGINK Cellmate 2 Chastity Cock Cage For Man

For the slaves that can’t help but give in to temptation, male chastity is always challenging. Without Mistress present it’s just too easy to use a spare key and enjoy your freedom. That’s not going to happen any more, thanks to Cellmate 2.

The new and improved Cellmate 2 is an app control e-stim chastity cage packed with features. Mistress can lock you up wherever she is, or you can use timer mode for solo play, all with the QIUI app. For the more adventurous slave, the cage can give you shocks whenever Mistress wants, or on a schedule. Full waterproofing and wireless charging means you can wear it, and charge it, literally anywhere.

The chastity device comes in two sizes, made with hard, long-lasting polycarbonate. Pick up the best app control chastity device available now.

New Functions Compare to 1.0

  • Worldwide Controlled by App & Real-time location and status

Worldwide control via the app with a keyless locking system, Including an electro shocks function within the device, activated via the app.

  • 3 Electro Shock Modes

You can choose Vibrate, Tremble, or Sting 3 mode in the QIUI App. Shock intensity can be adjusted in each shock mode.

  • QIUI "Hardcore" Play Mode: 

A new function that logs you out of the app with no control over your device. Let you still have full daily control of your sub, even when he logged out of the app.

  • Timed E-stim Punishment

Set a Clock in QIUI App, When it is on time, the cock cage will e-stim him automatically.  1 Mistress controls single or multiple chastity cages

  • Adjusting Ring Gap & Ergonomic & Breathable & IPX6

Design for a universal fit. 55mm alloy ring diameter with locking gaps. with an opening for urethral access which aids in extended wear.  IP65 waterproof for bath play.

  • Fast Wireless Charging Mode 

Fast charging while wearing the device; wireless charging so that you do not have to remove the cage from your body to charge.


Noted: "Hardcore" Play Mode can ONLY be activated when you and your Mistress be friends for more than 1 month.

Materials:

-Cage body: Polycarbonate with neoprene surface finishing
-Secure rings: Steel metal

 

SIZE:

• Two size fit for different people
Small one: Internal Length--120mm
Large one: Internal Length--100mm


How to measure your size:

Customer Reviews
Write a Review
Customer Reviews
Wow you reached the bottom
Newest
Most liked
Highest ratings
Lowest ratings
×
class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); filePreviewModal.style.display = 'block'; previewLoading.style.display = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { previewLoading.style.display = 'none'; }); fullScreenImage.src = ''; fullScreenImage.style.display = 'none'; fullScreenVideo.style.display = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { previewLoading.style.display = 'none'; }; fullScreenVideo.src = ''; fullScreenVideo.style.display = 'none'; fullScreenImage.style.display = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { filePreviewModal.style.display = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
The review would not show in product details on storefront since it does not support to.