├── .gitignore ├── README.md ├── UXCamReactExample ├── .buckconfig ├── .eslintrc.js ├── .flowconfig ├── .gitattributes ├── .gitignore ├── .prettierrc.js ├── .watchmanconfig ├── App.js ├── __tests__ │ └── App-test.js ├── android │ ├── app │ │ ├── BUCK │ │ ├── build.gradle │ │ ├── build_defs.bzl │ │ ├── debug.keystore │ │ ├── proguard-rules.pro │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── com │ │ │ │ └── uxcamreactexample │ │ │ │ ├── MainActivity.java │ │ │ │ └── MainApplication.java │ │ │ └── res │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── strings.xml │ │ │ └── styles.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── settings.gradle ├── app.json ├── babel.config.js ├── index.js ├── ios │ ├── Podfile │ ├── Podfile.lock │ ├── UXCamReactExample-tvOS │ │ └── Info.plist │ ├── UXCamReactExample-tvOSTests │ │ └── Info.plist │ ├── UXCamReactExample.xcodeproj │ │ ├── project.pbxproj │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ ├── UXCamReactExample-tvOS.xcscheme │ │ │ └── UXCamReactExample.xcscheme │ ├── UXCamReactExample │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── Base.lproj │ │ │ └── LaunchScreen.xib │ │ ├── Images.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── Info.plist │ │ └── main.m │ └── UXCamReactExampleTests │ │ ├── Info.plist │ │ └── UXCamReactExampleTests.m ├── metro.config.js ├── package.json └── yarn.lock └── uxcam-react-wrapper ├── README.md ├── RNUxcam.podspec ├── UXCam.js ├── android ├── .classpath ├── .project ├── .settings │ └── org.eclipse.buildship.core.prefs ├── build.gradle ├── libs │ └── uxcam.jar └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── com │ └── uxcam │ ├── RNUxcamModule.java │ └── RNUxcamPackage.java ├── index.js ├── ios ├── AFNetworking-LICENSE.txt ├── BSBacktraceLogger-LICENSE.md ├── BSBacktraceLogger-README.md ├── CHANGELOG.md ├── FileMD5Hash-LICENSE ├── FileMD5Hash-NOTICE ├── GZIP-LICENCE.md ├── Info.plist ├── LICENSE-minizip ├── RNUxcam.h ├── RNUxcam.m ├── RNUxcam.xcodeproj │ └── project.pbxproj ├── SSZipArchive-LICENSE.txt ├── UXCam.a ├── UXCam.h └── iOSViewHierarchy-LICENSE.txt └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | # macOS 2 | .DS_Store 3 | 4 | # Android 5 | .idea 6 | .gradle 7 | local.properties 8 | *.iml 9 | *.iws 10 | *.ipr 11 | 12 | # VSCode 13 | .vscode/ 14 | 15 | # Xcode 16 | build/ 17 | *.pbxuser 18 | !default.pbxuser 19 | *.mode1v3 20 | !default.mode1v3 21 | *.mode2v3 22 | !default.mode2v3 23 | *.perspectivev3 24 | !default.perspectivev3 25 | xcuserdata 26 | *.xccheckout 27 | *.moved-aside 28 | DerivedData 29 | *.hmap 30 | *.ipa 31 | *.xcuserstate 32 | *.xcworkspace 33 | 34 | # Cocoapods 35 | Pods/ 36 | 37 | # General 38 | *.log 39 | 40 | # JS 41 | node_modules/ 42 | npm-debug.log 43 | build 44 | package-lock.json 45 | 46 | # Fastlane 47 | **/fastlane/report.xml 48 | **/fastlane/test_output 49 | 50 | # VS Code 51 | .vscode 52 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # react-native-ux-cam 2 | 3 | Deprecation of this repo 4 | 5 | As of version 5.1.15, published 5 March 2020, we are moving to https://github.com/uxcam/react-native-ux-cam for all future updates. 6 | 7 | If you have issues, feature requests, pull requests etc. please put them in there. 8 | 9 | Thanks! 10 | Richard @ UXCam 11 | 12 | 13 | ## Installation 14 | `$yarn add file:/path-to-the-uxcam-react-wrapper` 15 | 16 | `$react-native link react-native-ux-cam` 17 | 18 | 19 | For react-native version 0.60 if using iOS you then need to: 20 | 21 | `cd ios` 22 | 23 | Edit the `Podfile` first line to be `platform :ios, '10.0'` rather than `platform :ios, '9.0'` then run the following to install the CocoaPods: 24 | 25 | `pod update && cd ..` 26 | 27 | ## Usage 28 | ```javascript 29 | import RNUxcam from 'react-native-ux-cam'; 30 | RNUxcam.optIntoSchematicRecordings(); // Add this line to enable iOS screen recordings 31 | RNUxcam.startWithKey('YOUR API KEY'); 32 | ``` 33 | 34 | # For testing example app 35 | ## Setup 36 | `yarn install` 37 | 38 | `yarn add react-native-ux-cam` 39 | ### or if adding locally 40 | `yarn add file:/path-to-uxcam-plugin` 41 | 42 | ## Add the key from UXCam to App.js file 43 | `RNUxcam.startWithKey('YOUR UXCAM API KEY GOES HERE');` 44 | 45 | ## Running 46 | 47 | ### Android 48 | `react-native run-android` 49 | 50 | ### iOS 51 | `cd iOS` 52 | Edit the `Podfile` first line to be `platform :ios, '10.0'` rather than `platform :ios, '9.0'` then run the following to install the CocoaPods: 53 | 54 | `pod update && cd ..` 55 | 56 | `react-native run-ios` 57 | 58 | # Manual Installation 59 | ## Setup 60 | 61 | ```bash 62 | # Yarn 63 | yarn add react-native-ux-cam 64 | 65 | # NPM 66 | npm install --save react-native-ux-cam 67 | ``` 68 | 69 | ### iOS with react-native and Cocoapods 70 | 71 | Add the following to your Podfile: 72 | 73 | ```ruby 74 | pod 'RNUxcam', :path => '../node_modules/react-native-ux-cam' 75 | ``` 76 | and edit the minimum version of iOS to be >=10.0 77 | 78 | Then run: 79 | 80 | ```bash 81 | pod install 82 | ``` 83 | 84 | ### Android 85 | 86 | 1. Go to `android/settings.gradle` 87 | add `include ':react-native-ux-cam'` 88 | and on the following line add `project(':react-native-ux-cam').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-ux-cam/android')` 89 | 90 | 2. Go to `android/app/build.gradle` 91 | add `compile project(':react-native-ux-cam')` under dependencies 92 | 93 | 3. Go to `android/app/src/main/java/com/terravion/dbug/MainApplication.java` 94 | add `import com.rnuxcam.rnuxcam.UXCamPackage;` 95 | 96 | 4. Add the following to your file `android/app/build.gradle` (or add the maven url to your existing repositories section): 97 | 98 | ```gradle 99 | allprojects { 100 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm 101 | maven { url "$rootDir/../node_modules/react-native/android" } 102 | maven { url "http://sdk.uxcam.com/android/" } 103 | } 104 | ``` 105 | 106 | 5. And add this to your file `android/app/src/main/AndroidManifest.xml`, inside your `` tag: 107 | 108 | ```xml 109 | 110 | ``` 111 | ## Usage 112 | 113 | ```js 114 | // Import UXCam. 115 | import UXCam from 'react-native-ux-cam'; 116 | 117 | // Add this line to enable iOS screen recordings 118 | UXCam.optIntoSchematicRecordings(); 119 | 120 | // Initialize using your app key. 121 | UXCam.startWithKey(key); 122 | ``` 123 | 124 | ## History 125 | This is an updated way of integrating the UXCam SDK react-native following on from the original work by Mark Miyashita (https://github.com/negativetwelve) without whom this would have all been much harder! 126 | -------------------------------------------------------------------------------- /UXCamReactExample/.buckconfig: -------------------------------------------------------------------------------- 1 | 2 | [android] 3 | target = Google Inc.:Google APIs:23 4 | 5 | [maven_repositories] 6 | central = https://repo1.maven.org/maven2 7 | -------------------------------------------------------------------------------- /UXCamReactExample/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: '@react-native-community', 4 | }; 5 | -------------------------------------------------------------------------------- /UXCamReactExample/.flowconfig: -------------------------------------------------------------------------------- 1 | [ignore] 2 | ; We fork some components by platform 3 | .*/*[.]android.js 4 | 5 | ; Ignore "BUCK" generated dirs 6 | /\.buckd/ 7 | 8 | ; Ignore polyfills 9 | node_modules/react-native/Libraries/polyfills/.* 10 | 11 | ; These should not be required directly 12 | ; require from fbjs/lib instead: require('fbjs/lib/warning') 13 | node_modules/warning/.* 14 | 15 | ; Flow doesn't support platforms 16 | .*/Libraries/Utilities/LoadingView.js 17 | 18 | [untyped] 19 | .*/node_modules/@react-native-community/cli/.*/.* 20 | 21 | [include] 22 | 23 | [libs] 24 | node_modules/react-native/Libraries/react-native/react-native-interface.js 25 | node_modules/react-native/flow/ 26 | 27 | [options] 28 | emoji=true 29 | 30 | esproposal.optional_chaining=enable 31 | esproposal.nullish_coalescing=enable 32 | 33 | module.file_ext=.js 34 | module.file_ext=.json 35 | module.file_ext=.ios.js 36 | 37 | munge_underscores=true 38 | 39 | module.name_mapper='^react-native$' -> '/node_modules/react-native/Libraries/react-native/react-native-implementation' 40 | module.name_mapper='^react-native/\(.*\)$' -> '/node_modules/react-native/\1' 41 | module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '/node_modules/react-native/Libraries/Image/RelativeImageStub' 42 | 43 | suppress_type=$FlowIssue 44 | suppress_type=$FlowFixMe 45 | suppress_type=$FlowFixMeProps 46 | suppress_type=$FlowFixMeState 47 | 48 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\) 49 | suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+ 50 | suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError 51 | 52 | [lints] 53 | sketchy-null-number=warn 54 | sketchy-null-mixed=warn 55 | sketchy-number=warn 56 | untyped-type-import=warn 57 | nonstrict-import=warn 58 | deprecated-type=warn 59 | unsafe-getters-setters=warn 60 | inexact-spread=warn 61 | unnecessary-invariant=warn 62 | signature-verification-failure=warn 63 | deprecated-utility=error 64 | 65 | [strict] 66 | deprecated-type 67 | nonstrict-import 68 | sketchy-null 69 | unclear-type 70 | unsafe-getters-setters 71 | untyped-import 72 | untyped-type-import 73 | 74 | [version] 75 | ^0.105.0 76 | -------------------------------------------------------------------------------- /UXCamReactExample/.gitattributes: -------------------------------------------------------------------------------- 1 | *.pbxproj -text 2 | -------------------------------------------------------------------------------- /UXCamReactExample/.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | 24 | # Android/IntelliJ 25 | # 26 | build/ 27 | .idea 28 | .gradle 29 | local.properties 30 | *.iml 31 | 32 | # node.js 33 | # 34 | node_modules/ 35 | npm-debug.log 36 | yarn-error.log 37 | 38 | # BUCK 39 | buck-out/ 40 | \.buckd/ 41 | *.keystore 42 | !debug.keystore 43 | 44 | # fastlane 45 | # 46 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 47 | # screenshots whenever they are needed. 48 | # For more information about the recommended setup visit: 49 | # https://docs.fastlane.tools/best-practices/source-control/ 50 | 51 | */fastlane/report.xml 52 | */fastlane/Preview.html 53 | */fastlane/screenshots 54 | 55 | # Bundle artifact 56 | *.jsbundle 57 | 58 | # CocoaPods 59 | /ios/Pods/ 60 | -------------------------------------------------------------------------------- /UXCamReactExample/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | bracketSpacing: false, 3 | jsxBracketSameLine: true, 4 | singleQuote: true, 5 | trailingComma: 'all', 6 | }; 7 | -------------------------------------------------------------------------------- /UXCamReactExample/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /UXCamReactExample/App.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Sample React Native App 3 | * https://github.com/facebook/react-native 4 | * 5 | * @format 6 | * @flow 7 | */ 8 | 9 | import React, {Component} from 'react'; 10 | import {Platform, StyleSheet, Text, View,Button} from 'react-native'; 11 | import RNUxcam from 'react-native-ux-cam'; 12 | 13 | const instructions = Platform.select({ 14 | ios: 'Press Cmd+R to reload,\n' + 'Cmd+D or shake for dev menu', 15 | android: 16 | 'Double tap R on your keyboard to reload,\n' + 17 | 'Shake or press menu button for dev menu', 18 | }); 19 | 20 | // Used to toggle the screen hiding 21 | var hideScreen = true 22 | 23 | type Props = {}; 24 | export default class App extends Component { 25 | 26 | componentDidMount(){ 27 | RNUxcam.startWithKey('YOUR UXCAM API KEY GOES HERE'); 28 | RNUxcam.optIntoSchematicRecordings(); 29 | } 30 | 31 | render() { 32 | 33 | // Basic instructions and then some examples of occluding views from the UXCam recording 34 | return ( 35 | 36 | Welcome to React Native! 37 | To get started, edit App.js 38 | {instructions} 39 | 40 |