Platforms:
- iOS
- Android
yarn add react-native-survey-monkeynpm install react-native-survey-monkey --save- Add this package to your Podfile
pod 'react-native-survey-monkey', path: '../node_modules/react-native-survey-monkey'Note that this will automatically pull in the appropriate version of the underlying Survey Monkey pod.
- Install Pods with
pod install- Add the SurveyMonkey dependency to your Podfile
pod 'surveymonkey-ios-sdk', '~> 2.0'- Install Pods with
pod install- Add the XCode project to your own XCode project's
Librariesdirectory from
node_modules/react-native-survey-monkey/ios/RNSurveyMonkey.xcodeproj
-
Add
libRNSurveyMonkey.ato your XCode project target'sLinked Binary With Libraries -
Update
Build Settings
Find Search Paths and add $(SRCROOT)/../node_modules/react-native-survey-monkey/ios with recursive to Framework Search Paths and Library Search Paths
The SDK requires a custom maven url in the root android/build.gradle:
allprojects {
repositories {
mavenLocal()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url("$rootDir/../node_modules/react-native/android")
}
maven {
// Android JSC is installed from npm
url("$rootDir/../node_modules/jsc-android/dist")
}
+ maven {
+ // react-native-survey-monkey
+ url("${project(':react-native-survey-monkey').projectDir}/libs")
+ }
}
}import SurveyMonkey from 'react-native-survey-monkey';Example:
import React, { PureComponent, createRef } from 'react';
import SurveyMonkey from 'react-native-survey-monkey';
import {
View,
Text,
TouchableOpacity
} from 'react-native';
export default class Example extends PureComponent {
constructor(props) {
super(props);
this.onTouch = this.onTouch.bind(this);
this.surveyMonkeyRef = createRef();
}
onTouch() {
this.surveyMonkeyRef.current.showSurveyMonkey('some hash');
}
render() {
return (
<View style={styles.container}>
<SurveyMonkey ref={ this.surveyMonkeyRef } />
<TouchableOpacity
style={ styles.button }
onPress={ this.onTouch }
>
<Text styles={ styles.buttonText }>
Show survey
</Text>
</TouchableOpacity>
</View>
);
}
}
AppRegistry.registerComponent('Example', () => Example);Getting respondent data:
<SurveyMonkey
ref={ this.ref }
onRespondentDidEndSurvey={ (data) => {
console.log('Respondent', data.respondent);
console.log('Error', data.error);
} }
/>'Cancel' button tint color (iOS only):
<SurveyMonkey
ref={ this.ref }
cancelButtonTintColor="#000000"
/>You can add custom variables:
onTouch() {
this.surveyRef.current.showSurveyMonkey('some hash', { var1: 'var1', var2: 'var2', ... });
}Schedule Intercept (ios: scheduleInterceptFromViewControllerWithTitle):
onTouch() {
this.surveyRef.current.showSurveyMonkey('some hash', null, 'Title');
}Schedule Intercept with Params (ios: scheduleInterceptFromViewControllerWithParams):
onTouch() {
this.surveyRef.current.showSurveyMonkey('some hash', null, null, {
title: 'Title',
body: 'Body',
positiveActionTitle: 'positive',
cancelTitle: 'cancel',
afterInstallInterval: 10,
afterAcceptInterval: 10,
afterDeclineInterval: 10
});
}- Yaroslav Fuchko (iOS) yarikpwnzer@gmail.com
- Richard Mozes (Android) rmozes2@gmail.com