Installation
Follow these steps to install the KinesteX SDK in your project.
Step 1: Add Dependencies
Add the KinesteX SDK to your project using your platform's package manager.
Install SDK
Swift example:
11. In Xcode: File > Add Package Dependencies...
22. Enter URL: https://github.com/KinesteX/KinesteX-AI-Kit.git
33. Click "Add Package"Step 2: Configure Permissions
Add the required permissions for camera and motion sensors.
Required Permissions
Swift example:
1<!-- Info.plist -->
2<key>NSCameraUsageDescription</key>
3<string>Camera access is required for AI-powered workout tracking</string>
4<key>NSMotionUsageDescription</key>
5<string>Motion sensors help position your device correctly for workouts</string>Step 3: Import the SDK
Import the KinesteX SDK in your code to start using it.
Import Statement
Swift example:
1import KinesteXAIKitReact Native notes:
Step 4: iOS 15+ Device Orientation Fix (Required)
react-native-webview doesn't support iOS 15+ motion permissions by default. Apply this patch to enable device orientation tracking:
4.1: Install patch-package
npm install patch-package postinstall-postinstall --save-dev4.2: Add postinstall script to package.json
{
"scripts": {
"postinstall": "patch-package"
}
}4.3: Patch RNCWebViewImpl.m
// Edit: node_modules/react-native-webview/apple/RNCWebViewImpl.m
// Find requestMediaCapturePermissionForOrigin (line ~1312)
// Add this method after it:
- (void)webView:(WKWebView *)webView
requestDeviceOrientationAndMotionPermissionForOrigin:(WKSecurityOrigin *)origin
initiatedByFrame:(WKFrameInfo *)frame
decisionHandler:(void (^)(WKPermissionDecision))decisionHandler {
(void)webView;
(void)origin;
(void)frame;
decisionHandler(WKPermissionDecisionGrant);
}4.4: Save the patch
npx patch-package react-native-webviewStep 5: Expo Android Camera Fix
For Expo on Android, request app-level camera permission before displaying KinesteX:
5.1: Install expo-camera
npx expo install expo-camera5.2: Configure app.json
{
"expo": {
"android": {
"permissions": ["android.permission.CAMERA"]
},
"ios": {
"infoPlist": {
"NSCameraUsageDescription": "For AI Motion Tracking"
}
}
}
}5.3: Request permission before showing KinesteX
import { Camera } from 'expo-camera';
import { useState, useEffect } from 'react';
const [hasPermission, setHasPermission] = useState(false);
useEffect(() => {
(async () => {
const { status } = await Camera.requestCameraPermissionsAsync();
setHasPermission(status === 'granted');
})();
}, []);
// Only render KinesteX when hasPermission is true