Merge branch 'master' into refactoring

This commit is contained in:
salmatarzi 2018-02-04 12:05:56 +02:00 committed by GitHub
commit b2ec43f277
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
82 changed files with 1067 additions and 769 deletions

View File

@ -1,3 +1,3 @@
{
"presets": ["react-native"]
}
"presets": ["react-native"]
}

View File

@ -12,33 +12,45 @@
; For RN Apps installed via npm, "Libraries" folder is inside
; "node_modules/react-native" but in the source repo it is in the root
.*/Libraries/react-native/React.js
.*/Libraries/react-native/ReactNative.js
; Ignore polyfills
.*/Libraries/polyfills/.*
; Ignore metro
.*/node_modules/metro/.*
[include]
[libs]
node_modules/react-native/Libraries/react-native/react-native-interface.js
node_modules/react-native/flow
flow/
node_modules/react-native/flow/
node_modules/react-native/flow-github/
[options]
module.system=haste
emoji=true
experimental.strict_type_args=true
module.system=haste
munge_underscores=true
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\)$' -> 'RelativeImageStub'
module.file_ext=.js
module.file_ext=.jsx
module.file_ext=.json
module.file_ext=.native.js
suppress_type=$FlowIssue
suppress_type=$FlowFixMe
suppress_type=$FixMe
suppress_type=$FlowFixMeProps
suppress_type=$FlowFixMeState
suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(3[0-7]\\|[1-2][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(3[0-7]\\|1[0-9]\\|[1-2][0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+
suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+
suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError
unsafe.enable_getters_and_setters=true
[version]
^0.37.0
^0.61.0

View File

@ -39,7 +39,6 @@ yarn-error.log
# BUCK
buck-out/
\.buckd/
android/app/libs
*.keystore
# fastlane
@ -47,8 +46,8 @@ android/app/libs
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md
# https://docs.fastlane.tools/best-practices/source-control/
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
*/fastlane/report.xml
*/fastlane/Preview.html
*/fastlane/screenshots

232
InstabugSample/App.js Normal file
View File

@ -0,0 +1,232 @@
/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/
import React, { Component } from 'react';
import {
Platform,
StyleSheet,
Text,
View,
TouchableOpacity,
processColor,
Switch,
ScrollView
} from 'react-native';
import Instabug from'instabug-reactnative';
const instructions = Platform.select({
ios: 'Press Cmd+R to reload,\n' +
'Cmd+D or shake for dev menu',
android: 'Double tap R on your keyboard to reload,\n' +
'Shake or press menu button for dev menu',
});
export default class App extends Component<{}> {
constructor(props) {
super(props);
this.state = {
switchValue: false,
colorTheme: 'Dark'
};
Instabug.startWithToken("8020a1fab5139a4be54038a9728c4dc8", Instabug.invocationEvent.shake);
Instabug.setReportCategories("Performance","UI","Flow","Other");
Instabug.setPromptOptionsEnabled(true, true, true);
Instabug.setLocale(Instabug.locale.english);
}
render() {
return (
<View style={styles.container}>
<ScrollView contentContainerStyle={styles.contentContainer} >
<Text style={styles.details}>
Hello {"Instabug's"} awesome user! The purpose of this application is to show you the different
options for customizing the SDK and how easy it is to integrate it to your existing app
</Text>
<TouchableOpacity style={styles.button} onPress={()=>this.showIntroMessage()}>
<Text style={styles.text}> SHOW INTRO MESSAGE </Text>
</TouchableOpacity>
<TouchableOpacity style={styles.button} onPress={()=>this.invoke()}>
<Text style={styles.text}> INVOKE </Text>
</TouchableOpacity>
<TouchableOpacity style={styles.button} onPress={()=>this.sendBugReport()}>
<Text style={styles.text}> SEND BUG REPORT </Text>
</TouchableOpacity>
<TouchableOpacity style={styles.button} onPress={()=>this.sendFeedback()}>
<Text style={styles.text}> SEND FEEDBACK </Text>
</TouchableOpacity>
<TouchableOpacity style={styles.button} onPress={()=>this.startNewConversation()}>
<Text style={styles.text}> START A NEW CONVERSATION </Text>
</TouchableOpacity>
<TouchableOpacity style={styles.button} onPress={()=>this.showUnreadMessagesCount()}>
<Text style={styles.text}> GET UNREAD MESSAGES COUNT </Text>
</TouchableOpacity>
{this.invocationEvent()}
<Text style={styles.textColor}> Set primary color </Text>
<View style={styles.rowView}>
<TouchableOpacity style={styles.buttonColor} onPress={()=>this.setPrimaryColor('#FF0000')}>
<Text style={styles.text}> RED </Text>
</TouchableOpacity>
<TouchableOpacity style={styles.buttonColor} onPress={()=>this.setPrimaryColor('#00FF00')}>
<Text style={styles.text}> GREEN </Text>
</TouchableOpacity>
<TouchableOpacity style={styles.buttonColor} onPress={()=>this.setPrimaryColor('#0000FF')}>
<Text style={styles.text}> BLUE </Text>
</TouchableOpacity>
<TouchableOpacity style={styles.buttonColor} onPress={()=>this.setPrimaryColor('#FFFF00')}>
<Text style={styles.text}> YELLOW </Text>
</TouchableOpacity>
</View>
<View style={styles.switchView}>
<Text style={styles.textSwitchStyle}>Color Theme: {this.state.colorTheme}</Text>
<Switch
onValueChange = {this.toggleSwitch}
value = {this.state.switchValue}/>
</View>
</ScrollView>
</View>
);
}
invocationEvent() {
if(Platform.OS === 'ios') {
return(
<View>
<Text style={styles.textColor}> Change Invocation Event </Text>
<View style={styles.rowView}>
<TouchableOpacity style={styles.buttonColor} onPress={()=>this.changeInvocationEvent('Shake')}>
<Text style={styles.textInvoke}> SHAKE </Text>
</TouchableOpacity>
<TouchableOpacity style={styles.buttonColor} onPress={()=>this.changeInvocationEvent('Button')}>
<Text style={styles.textInvoke}> FLOATING BUTTON </Text>
</TouchableOpacity>
<TouchableOpacity style={styles.buttonColor} onPress={()=>this.changeInvocationEvent('Screenshot')}>
<Text style={styles.textInvoke}> SCREENSHOT </Text>
</TouchableOpacity>
<TouchableOpacity style={styles.buttonColor} onPress={()=>this.changeInvocationEvent('None')}>
<Text style={styles.textInvoke}> NONE </Text>
</TouchableOpacity>
</View>
</View>
);
}
return;
}
toggleSwitch = (value) => {
this.setState({switchValue: value})
if(value) {
this.setState({colorTheme: 'Light'});
Instabug.setColorTheme(Instabug.colorTheme.light);
} else {
this.setState({colorTheme: 'Dark'});
Instabug.setColorTheme(Instabug.colorTheme.dark);
}
}
setPrimaryColor(color) {
Instabug.setPrimaryColor(processColor(color));
}
showIntroMessage() {
Instabug.showIntroMessage();
}
invoke() {
Instabug.invoke();
}
sendBugReport() {
Instabug.invokeWithInvocationMode(Instabug.invocationMode.newBug);
}
sendFeedback() {
Instabug.invokeWithInvocationMode(Instabug.invocationMode.newFeedback);
}
changeInvocationEvent(invocationEvent) {
if(invocationEvent === 'Shake')
Instabug.setInvocationEvent(Instabug.invocationEvent.shake);
if(invocationEvent === 'Button')
Instabug.setInvocationEvent(Instabug.invocationEvent.floatingButton);
if(invocationEvent === 'Screenshot')
Instabug.setInvocationEvent(Instabug.invocationEvent.screenshot);
if(invocationEvent === 'None')
Instabug.setInvocationEvent(Instabug.invocationEvent.none);
}
startNewConversation() {
Instabug.invokeWithInvocationMode(Instabug.invocationMode.newChat);
}
showUnreadMessagesCount() {
Instabug.getUnreadMessagesCount((count) => {
alert("Messages: " + count);
});
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
details: {
textAlign: 'center',
color: '#333333',
margin: 20,
marginTop: Platform.OS === 'ios' ? 40 : 20
},
text: {
color: '#FFFFFF',
fontSize: 12,
fontWeight: 'bold'
},
button: {
marginTop: 10,
backgroundColor: "#1D82DC",
padding: 10,
alignItems: 'center',
borderRadius: 5
},
rowView: {
flexDirection: 'row',
marginTop: 10
},
textColor: {
fontSize: 14,
fontWeight: 'bold',
marginTop: 10,
},
buttonColor: {
marginTop: 10,
backgroundColor: "#1D82DC",
padding: 10,
alignItems: 'center',
borderRadius: 5,
marginRight: 5
},
textSwitchStyle: {
marginTop: 10,
marginRight: 5,
fontWeight: 'bold'
},
switchView: {
flexDirection: 'row',
marginTop: 20,
},
textInvoke: {
color: '#FFFFFF',
fontSize: 10,
fontWeight: 'bold'
},
contentContainer: {
padding: 10
}
});

View File

@ -1,5 +1,3 @@
import re
# To learn about Buck see [Docs](https://buckbuild.com/).
# To run your application with Buck:
# - install Buck
@ -11,8 +9,9 @@ import re
#
lib_deps = []
for jarfile in glob(['libs/*.jar']):
name = 'jars__' + re.sub(r'^.*/([^/]+)\.jar$', r'\1', jarfile)
name = 'jars__' + jarfile[jarfile.rindex('/') + 1: jarfile.rindex('.jar')]
lib_deps.append(':' + name)
prebuilt_jar(
name = name,
@ -20,7 +19,7 @@ for jarfile in glob(['libs/*.jar']):
)
for aarfile in glob(['libs/*.aar']):
name = 'aars__' + re.sub(r'^.*/([^/]+)\.aar$', r'\1', aarfile)
name = 'aars__' + aarfile[aarfile.rindex('/') + 1: aarfile.rindex('.aar')]
lib_deps.append(':' + name)
android_prebuilt_aar(
name = name,
@ -28,39 +27,39 @@ for aarfile in glob(['libs/*.aar']):
)
android_library(
name = 'all-libs',
exported_deps = lib_deps
name = "all-libs",
exported_deps = lib_deps,
)
android_library(
name = 'app-code',
srcs = glob([
'src/main/java/**/*.java',
]),
deps = [
':all-libs',
':build_config',
':res',
],
name = "app-code",
srcs = glob([
"src/main/java/**/*.java",
]),
deps = [
":all-libs",
":build_config",
":res",
],
)
android_build_config(
name = 'build_config',
package = 'com.instabugsample',
name = "build_config",
package = "com.instabugsample",
)
android_resource(
name = 'res',
res = 'src/main/res',
package = 'com.instabugsample',
name = "res",
package = "com.instabugsample",
res = "src/main/res",
)
android_binary(
name = 'app',
package_type = 'debug',
manifest = 'src/main/AndroidManifest.xml',
keystore = '//android/keystores:debug',
deps = [
':app-code',
],
name = "app",
keystore = "//android/keystores:debug",
manifest = "src/main/AndroidManifest.xml",
package_type = "debug",
deps = [
":app-code",
],
)

View File

@ -33,6 +33,13 @@ import com.android.build.OutputFile
* // bundleInPaidRelease: true,
* // bundleInBeta: true,
*
* // whether to disable dev mode in custom build variants (by default only disabled in release)
* // for example: to disable dev mode in the staging build type (if configured)
* devDisabledInStaging: true,
* // The configuration property can be in the following formats
* // 'devDisabledIn${productFlavor}${buildType}'
* // 'devDisabledIn${buildType}'
*
* // the root of your project, i.e. where "package.json" lives
* root: "../../",
*
@ -58,13 +65,17 @@ import com.android.build.OutputFile
* inputExcludes: ["android/**", "ios/**"],
*
* // override which node gets called and with what additional arguments
* nodeExecutableAndArgs: ["node"]
* nodeExecutableAndArgs: ["node"],
*
* // supply additional arguments to the packager
* extraPackagerArgs: []
* ]
*/
project.ext.react = [
entryFile: "index.js"
]
apply from: "../../node_modules/react-native/react.gradle"
/**
@ -123,9 +134,6 @@ android {
}
}
}
repositories {
maven { url "https://jitpack.io" }
}
}
dependencies {

View File

@ -50,6 +50,10 @@
-dontwarn com.facebook.react.**
# TextLayoutBuilder uses a non-public Android constructor within StaticLayout.
# See libs/proxy/src/main/java/com/facebook/fbui/textlayoutbuilder/proxy for details.
-dontwarn android.text.StaticLayout
# okhttp
-keepattributes Signature

View File

@ -19,7 +19,8 @@
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />

View File

@ -1,11 +1,9 @@
package com.instabugsample;
import android.app.Application;
import android.util.Log;
import com.facebook.react.ReactApplication;
import com.instabug.reactlibrary.RNInstabugReactnativePackage;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
@ -26,9 +24,19 @@ public class MainApplication extends Application implements ReactApplication {
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new RNInstabugReactnativePackage("YOUR_ANDROID_APPLICATION_TOKEN",MainApplication.this,"shake","#1D82DC")
new RNInstabugReactnativePackage.Builder("YOUR_ANDROID_APPLICATION_TOKEN",MainApplication.this)
.setInvocationEvent("shake")
.setPrimaryColor("#1D82DC")
.setFloatingEdge("left")
.setFloatingButtonOffsetFromTop(250)
.build()
);
}
@Override
protected String getJSMainModuleName() {
return "index";
}
};
@Override

View File

@ -3,9 +3,13 @@
buildscript {
repositories {
jcenter()
maven {
url 'https://maven.google.com/'
name 'Google'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.1'
classpath 'com.android.tools.build:gradle:2.2.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
@ -20,5 +24,9 @@ allprojects {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
maven {
url 'https://maven.google.com/'
name 'Google'
}
}
}

View File

@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

View File

@ -1,8 +1,8 @@
keystore(
name = 'debug',
store = 'debug.keystore',
properties = 'debug.keystore.properties',
visibility = [
'PUBLIC',
],
name = "debug",
properties = "debug.keystore.properties",
store = "debug.keystore",
visibility = [
"PUBLIC",
],
)

View File

@ -1,80 +0,0 @@
/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/
import React, {Component} from "react";
import {
AppRegistry,
StyleSheet,
Text,
Button,
Alert,
View,
processColor,
Aerlt,
Image,
TouchableHighlight,
RecyclerViewBackedScrollView
} from "react-native";
import Instabug from "instabug-reactnative";
export default class InstabugSample extends Component {
constructor(props) {
super(props);
Instabug.setColorTheme(Instabug.colorTheme.light);
Instabug.setPrimaryColor(processColor('#aaff00'));
Instabug.setEmailFieldRequired(false);
}
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.android.js
</Text>
<Text style={styles.instructions}>
Double tap R on your keyboard to reload,{'\n'}
Shake or press menu button for dev menu
</Text>
<Button
onPress={() => {
console.log("invoke Button has been clicked");
Instabug.invoke()}}
title="Invoke Instabug"
color="#841584"
disabled={false}
accessibilityLabel="Learn more about this purple button"
/>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
AppRegistry.registerComponent('InstabugSample', () => InstabugSample);

View File

@ -1,297 +0,0 @@
/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
Button,
Alert,
View,
processColor,
Aerlt,
Image,
ListView,
TouchableHighlight,
RecyclerViewBackedScrollView,
ActionSheetIOS,
TextInput
} from 'react-native';
import Instabug from'instabug-reactnative';
export default class InstabugSample extends Component {
constructor(props) {
super(props);
Instabug.isRunningLive(function (isLive) {
if (isLive) {
Instabug.startWithToken('LIVE_TOKEN', Instabug.invocationEvent.shake);
} else {
Instabug.startWithToken('BETA_TOKEN', Instabug.invocationEvent.shake);
}
});
const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
this.state = {
dataSource: ds.cloneWithRows(this._genRows({})),
};
}
_renderRow(rowData: string, sectionID: number, rowID: number, highlightRow: (sectionID: number, rowID: number) => void) {
const that = this;
return (
<TouchableHighlight onPress={() => {
that._pressRow(rowID);
highlightRow(sectionID, rowID);
}}>
<View>
<View style={styles.row}>
<Text style={styles.text}>
{rowData}
</Text>
</View>
</View>
</TouchableHighlight>
);
}
_genRows() {
var dataBlob = [
"Invoke",
"Invoke with invocation mode",
"Select invocation event",
"Show intro message",
"Unread messages count",
"Set locale",
"Set color theme",
"Set primary color",
"Show surveys"
];
return dataBlob;
}
_pressRow(rowID: number) {
if (rowID == 0) {
Instabug.invoke();
} else if (rowID == 1) {
this._showInvocationModeActionSheet();
} else if (rowID == 2) {
this._showInvocationEventActionSheet();
} else if (rowID == 3) {
Instabug.showIntroMessage();
} else if (rowID == 4) {
Instabug.getUnreadMessagesCount(function (number) {
Alert.alert(number.toString());
});
} else if (rowID == 5) {
this._showLocaleActionSheet();
} else if (rowID == 6) {
this._showColorThemeActionSheet();
} else if (rowID == 7) {
this._showPrimaryColorActionSheet();
} else if (rowID == 8) {
this._showSurveys();
}
}
_showInvocationModeActionSheet() {
ActionSheetIOS.showActionSheetWithOptions({
options: [
"New bug",
"New Feedback",
"New Chat",
"None"
],
},
(buttonIndex) => {
if (buttonIndex == 0) {
Instabug.invokeWithInvocationMode(Instabug.invocationMode.newBug);
} else if (buttonIndex == 1) {
Instabug.invokeWithInvocationMode(Instabug.invocationMode.newFeedback);
} else if (buttonIndex == 2) {
Instabug.invokeWithInvocationMode(Instabug.invocationMode.newChat);
} else if (buttonIndex == 3) {
Instabug.invokeWithInvocationMode(Instabug.invocationMode.NA);
}
});
}
_showColorThemeActionSheet() {
ActionSheetIOS.showActionSheetWithOptions({
options: [
"Light",
"Dark",
],
},
(buttonIndex) => {
if (buttonIndex == 0) {
Instabug.setColorTheme(Instabug.colorTheme.light);
} else if (buttonIndex == 1) {
Instabug.setColorTheme(Instabug.colorTheme.dark);
}
});
}
_showPrimaryColorActionSheet() {
ActionSheetIOS.showActionSheetWithOptions({
options: [
"Red",
"Green",
"Blue"
],
},
(buttonIndex) => {
if (buttonIndex == 0) {
Instabug.setPrimaryColor(processColor('#ff0000'));
} else if (buttonIndex == 1) {
Instabug.setPrimaryColor(processColor('#00ff00'));
} else if (buttonIndex == 2) {
Instabug.setPrimaryColor(processColor('#0000ff'));
}
});
}
_showLocaleActionSheet() {
ActionSheetIOS.showActionSheetWithOptions({
options: [
"Arabic",
"Chinese Simplified",
"Chinese Traditional",
"Czech",
"Danish",
"English",
"French",
"German",
"Italian",
"Japanese",
"Polish",
"Portuguese Brazil",
"Russian",
"Spanish",
"Swedish",
"Turkish"
],
},
(buttonIndex) => {
if (buttonIndex == 0) {
Instabug.setLocale(Instabug.locale.arabic);
} else if (buttonIndex == 1) {
Instabug.setLocale(Instabug.locale.chineseSimplified);
} else if (buttonIndex == 2) {
Instabug.setLocale(Instabug.locale.chineseTraditional);
} else if (buttonIndex == 3) {
Instabug.setLocale(Instabug.locale.czech);
} else if (buttonIndex == 4) {
Instabug.setLocale(Instabug.locale.danish);
} else if (buttonIndex == 5) {
Instabug.setLocale(Instabug.locale.english);
} else if (buttonIndex == 6) {
Instabug.setLocale(Instabug.locale.french);
} else if (buttonIndex == 7) {
Instabug.setLocale(Instabug.locale.german);
} else if (buttonIndex == 8) {
Instabug.setLocale(Instabug.locale.italian);
} else if (buttonIndex == 9) {
Instabug.setLocale(Instabug.locale.japanese);
} else if (buttonIndex == 10) {
Instabug.setLocale(Instabug.locale.polish);
} else if (buttonIndex == 11) {
Instabug.setLocale(Instabug.locale.portugueseBrazil);
} else if (buttonIndex == 12) {
Instabug.setLocale(Instabug.locale.russian);
} else if (buttonIndex == 13) {
Instabug.setLocale(Instabug.locale.spanish);
} else if (buttonIndex == 14) {
Instabug.setLocale(Instabug.locale.swedish);
} else if (buttonIndex == 15) {
Instabug.setLocale(Instabug.locale.turkish);
}
});
}
_showInvocationEventActionSheet() {
ActionSheetIOS.showActionSheetWithOptions({
options: [
"Shake",
"Screenshot",
"Two fingers swipe",
"Floating button"
],
},
(buttonIndex) => {
if (buttonIndex == 0) {
Instabug.setInvocationEvent(Instabug.invocationEvent.shake);
} else if (buttonIndex == 1) {
Instabug.setInvocationEvent(Instabug.invocationEvent.screenshot);
} else if (buttonIndex == 2) {
Instabug.setInvocationEvent(Instabug.invocationEvent.twoFingersSwipe);
} else if (buttonIndex) {
Instabug.setInvocationEvent(Instabug.invocationEvent.floatingButton);
}
});
}
_showSurveys() {
console.log("show surveys")
Instabug.showSurveysIfAvailable()
}
_renderSeparator(sectionID: number, rowID: number, adjacentRowHighlighted: bool) {
return (
<View
key={`${sectionID}-${rowID}`}
style={{
height: adjacentRowHighlighted ? 4 : 1,
backgroundColor: adjacentRowHighlighted ? '#3B5998' : '#CCCCCC',
}}
/>
);
}
render() {
console.log(JSON.stringify(this.state));
return (
<View>
<ListView
dataSource={this.state.dataSource}
renderRow={this._renderRow.bind(this)}
renderScrollComponent={props => <RecyclerViewBackedScrollView {...props} />}
style={styles.listView}
/>
<TextInput
style={{height: 40}}
placeholder="Type here to translate!"
/>
</View>
);
}
}
const styles = StyleSheet.create({
row: {
flexDirection: 'row',
justifyContent: 'center',
padding: 10,
backgroundColor: '#F6F6F6',
},
thumb: {
width: 64,
height: 64,
},
text: {
flex: 1,
},
listView: {
paddingTop: 20
},
});
AppRegistry.registerComponent('InstabugSample', () => InstabugSample);

4
InstabugSample/index.js Normal file
View File

@ -0,0 +1,4 @@
import { AppRegistry } from 'react-native';
import App from './App';
AppRegistry.registerComponent('InstabugSample', () => App);

View File

@ -5,6 +5,7 @@
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };
00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };
@ -21,22 +22,26 @@
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
22603EE469BF290EFD6C95A0 /* Instabug.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75289D1E3DA40C1D5273D5AC /* Instabug.framework */; };
2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
2D02E4C21E0B4AEC006451C7 /* libRCTAnimation-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation-tvOS.a */; };
2D02E4C21E0B4AEC006451C7 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */; };
2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */; };
2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */; };
2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */; };
2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */; };
2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */; };
2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */; };
2D02E4C91E0B4AEC006451C7 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3EA31DF850E9000B6D8A /* libReact.a */; };
2D16E6881FA4F8E400B85C8A /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D16E6891FA4F8E400B85C8A /* libReact.a */; };
2DCD954D1E0B4F2C00145EB5 /* InstabugSampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* InstabugSampleTests.m */; };
5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; };
5FDB987A0E78E71473672AD0 /* InstabugCore.framework in Embed Instabug Framework */ = {isa = PBXBuildFile; fileRef = A449A983A79E024260E2FE0D /* InstabugCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
6810167CB10F13406D13854C /* Instabug.framework in Embed Instabug Framework */ = {isa = PBXBuildFile; fileRef = 75289D1E3DA40C1D5273D5AC /* Instabug.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
FB6237B8BC81FC0C990E8BE6 /* libPods-InstabugSample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E9562565B465A2839B076D83 /* libPods-InstabugSample.a */; };
62F9158A7B074929B2D8A561 /* libRNInstabug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6C533A1EEE6342FA8421CF36 /* libRNInstabug.a */; };
9A910E49A63A4FA58C7532A0 /* libRNInstabug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 53D615D08C9B45B58B5FB092 /* libRNInstabug.a */; };
ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; };
B1EF65907DCE41F57BB6B795 /* InstabugCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A449A983A79E024260E2FE0D /* InstabugCore.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -82,6 +87,69 @@
remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
remoteInfo = InstabugSample;
};
13174BDE200BB5090092B6A8 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = EBF21BDC1FC498900052F4D5;
remoteInfo = jsinspector;
};
13174BE0200BB5090092B6A8 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = EBF21BFA1FC4989A0052F4D5;
remoteInfo = "jsinspector-tvOS";
};
13174BE2200BB5090092B6A8 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 139D7ECE1E25DB7D00323FB7;
remoteInfo = "third-party";
};
13174BE4200BB5090092B6A8 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 3D383D3C1EBD27B6005632C8;
remoteInfo = "third-party-tvOS";
};
13174BE6200BB5090092B6A8 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 139D7E881E25C6D100323FB7;
remoteInfo = "double-conversion";
};
13174BE8200BB5090092B6A8 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 3D383D621EBD27B9005632C8;
remoteInfo = "double-conversion-tvOS";
};
13174BEA200BB5090092B6A8 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 9936F3131F5F2E4B0010BF04;
remoteInfo = privatedata;
};
13174BEC200BB5090092B6A8 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 9936F32F1F5F2E5B0010BF04;
remoteInfo = "privatedata-tvOS";
};
13174BF1200BB50A0092B6A8 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 75BE9067987349D092A1F545 /* RNInstabug.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 24DF11ED1DA3A2B90056F77C;
remoteInfo = RNInstabug;
};
139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */;
@ -110,6 +178,27 @@
remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7;
remoteInfo = "InstabugSample-tvOS";
};
2D16E6711FA4F8DC00B85C8A /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = ADD01A681E09402E00F6D226;
remoteInfo = "RCTBlob-tvOS";
};
2D16E6831FA4F8DC00B85C8A /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 3DBE0D001F3B181A0099AA32;
remoteInfo = fishhook;
};
2D16E6851FA4F8DC00B85C8A /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 3DBE0D0D1F3B181C0099AA32;
remoteInfo = "fishhook-tvOS";
};
3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;
@ -229,8 +318,30 @@
remoteGlobalIDString = 58B5119B1A9E6C1200147676;
remoteInfo = RCTText;
};
ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 358F4ED71D1E81A9004DF814;
remoteInfo = RCTBlob;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
2BD5D90EC3C08EB8443FD422 /* Embed Instabug Framework */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
6810167CB10F13406D13854C /* Instabug.framework in Embed Instabug Framework */,
5FDB987A0E78E71473672AD0 /* InstabugCore.framework in Embed Instabug Framework */,
);
name = "Embed Instabug Framework";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; };
00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = "<group>"; };
@ -251,16 +362,17 @@
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = InstabugSample/Info.plist; sourceTree = "<group>"; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = InstabugSample/main.m; sourceTree = "<group>"; };
146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = "<group>"; };
21DED4D3594E0D93E837631F /* Pods-InstabugSample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-InstabugSample.release.xcconfig"; path = "Pods/Target Support Files/Pods-InstabugSample/Pods-InstabugSample.release.xcconfig"; sourceTree = "<group>"; };
2D02E47B1E0B4A5D006451C7 /* InstabugSample-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "InstabugSample-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
2D02E4901E0B4A5D006451C7 /* InstabugSample-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "InstabugSample-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
2D16E6891FA4F8E400B85C8A /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; };
53D615D08C9B45B58B5FB092 /* libRNInstabug.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNInstabug.a; sourceTree = "<group>"; };
5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; sourceTree = "<group>"; };
75289D1E3DA40C1D5273D5AC /* Instabug.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Instabug.framework; path = "../node_modules/instabug-reactnative/ios/Instabug.framework"; sourceTree = "<group>"; };
75BE9067987349D092A1F545 /* RNInstabug.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNInstabug.xcodeproj; path = "../node_modules/instabug-reactnative/ios/RNInstabug.xcodeproj"; sourceTree = "<group>"; };
78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = "<group>"; };
832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = "<group>"; };
8601D784DB38337F6E545397 /* Pods-InstabugSample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-InstabugSample.debug.xcconfig"; path = "Pods/Target Support Files/Pods-InstabugSample/Pods-InstabugSample.debug.xcconfig"; sourceTree = "<group>"; };
E9562565B465A2839B076D83 /* libPods-InstabugSample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-InstabugSample.a"; sourceTree = BUILT_PRODUCTS_DIR; };
1B17852ABF654B8D8B056F8E /* RNInstabug.xcodeproj */ = {isa = PBXFileReference; name = "RNInstabug.xcodeproj"; path = "../node_modules/instabug-reactnative/ios/RNInstabug.xcodeproj"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; };
6C533A1EEE6342FA8421CF36 /* libRNInstabug.a */ = {isa = PBXFileReference; name = "libRNInstabug.a"; path = "libRNInstabug.a"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
A449A983A79E024260E2FE0D /* InstabugCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = InstabugCore.framework; path = "../node_modules/instabug-reactnative/ios/InstabugCore.framework"; sourceTree = "<group>"; };
ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTBlob.xcodeproj; path = "../node_modules/react-native/Libraries/Blob/RCTBlob.xcodeproj"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -276,6 +388,8 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */,
5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */,
146834051AC3E58100842450 /* libReact.a in Frameworks */,
5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */,
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */,
@ -287,8 +401,9 @@
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */,
00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */,
139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */,
FB6237B8BC81FC0C990E8BE6 /* libPods-InstabugSample.a in Frameworks */,
62F9158A7B074929B2D8A561 /* libRNInstabug.a in Frameworks */,
9A910E49A63A4FA58C7532A0 /* libRNInstabug.a in Frameworks */,
22603EE469BF290EFD6C95A0 /* Instabug.framework in Frameworks */,
B1EF65907DCE41F57BB6B795 /* InstabugCore.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -296,8 +411,8 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
2D02E4C91E0B4AEC006451C7 /* libReact.a in Frameworks */,
2D02E4C21E0B4AEC006451C7 /* libRCTAnimation-tvOS.a in Frameworks */,
2D16E6881FA4F8E400B85C8A /* libReact.a in Frameworks */,
2D02E4C21E0B4AEC006451C7 /* libRCTAnimation.a in Frameworks */,
2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */,
2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */,
2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */,
@ -376,6 +491,22 @@
name = "Supporting Files";
sourceTree = "<group>";
};
13174BB8200BB5050092B6A8 /* Recovered References */ = {
isa = PBXGroup;
children = (
53D615D08C9B45B58B5FB092 /* libRNInstabug.a */,
);
name = "Recovered References";
sourceTree = "<group>";
};
13174BEE200BB5090092B6A8 /* Products */ = {
isa = PBXGroup;
children = (
13174BF2200BB50A0092B6A8 /* libRNInstabug.a */,
);
name = Products;
sourceTree = "<group>";
};
139105B71AF99BAD00B5F7CC /* Products */ = {
isa = PBXGroup;
children = (
@ -390,6 +521,8 @@
children = (
139FDEF41B06529B00C62182 /* libRCTWebSocket.a */,
3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */,
2D16E6841FA4F8DC00B85C8A /* libfishhook.a */,
2D16E6861FA4F8DC00B85C8A /* libfishhook-tvOS.a */,
);
name = Products;
sourceTree = "<group>";
@ -419,22 +552,24 @@
3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */,
3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */,
3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */,
13174BDF200BB5090092B6A8 /* libjsinspector.a */,
13174BE1200BB5090092B6A8 /* libjsinspector-tvOS.a */,
13174BE3200BB5090092B6A8 /* libthird-party.a */,
13174BE5200BB5090092B6A8 /* libthird-party.a */,
13174BE7200BB5090092B6A8 /* libdouble-conversion.a */,
13174BE9200BB5090092B6A8 /* libdouble-conversion.a */,
13174BEB200BB5090092B6A8 /* libprivatedata.a */,
13174BED200BB5090092B6A8 /* libprivatedata-tvOS.a */,
);
name = Products;
sourceTree = "<group>";
};
24ED9F161EFA6BE300D771DA /* Recovered References */ = {
2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
isa = PBXGroup;
children = (
5632439F28464ECB86D23318 /* libRNInstabug.a */,
);
name = "Recovered References";
sourceTree = "<group>";
};
443E311BD736B6F07D8B5811 /* Frameworks */ = {
isa = PBXGroup;
children = (
E9562565B465A2839B076D83 /* libPods-InstabugSample.a */,
2D16E6891FA4F8E400B85C8A /* libReact.a */,
75289D1E3DA40C1D5273D5AC /* Instabug.framework */,
A449A983A79E024260E2FE0D /* InstabugCore.framework */,
);
name = Frameworks;
sourceTree = "<group>";
@ -443,7 +578,7 @@
isa = PBXGroup;
children = (
5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */,
5E9157351DD0AC6500FF2AA8 /* libRCTAnimation-tvOS.a */,
5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */,
);
name = Products;
sourceTree = "<group>";
@ -457,21 +592,13 @@
name = Products;
sourceTree = "<group>";
};
8098B839B3C5F5897B38D9B3 /* Pods */ = {
isa = PBXGroup;
children = (
8601D784DB38337F6E545397 /* Pods-InstabugSample.debug.xcconfig */,
21DED4D3594E0D93E837631F /* Pods-InstabugSample.release.xcconfig */,
);
name = Pods;
sourceTree = "<group>";
};
832341AE1AAA6A7D00B99B32 /* Libraries */ = {
isa = PBXGroup;
children = (
5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */,
146833FF1AC3E56700842450 /* React.xcodeproj */,
00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */,
ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */,
00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */,
00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */,
78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */,
@ -480,7 +607,7 @@
832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */,
00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */,
139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */,
1B17852ABF654B8D8B056F8E /* RNInstabug.xcodeproj */,
75BE9067987349D092A1F545 /* RNInstabug.xcodeproj */,
);
name = Libraries;
sourceTree = "<group>";
@ -501,13 +628,13 @@
832341AE1AAA6A7D00B99B32 /* Libraries */,
00E356EF1AD99517003FC87E /* InstabugSampleTests */,
83CBBA001A601CBA00E9B192 /* Products */,
8098B839B3C5F5897B38D9B3 /* Pods */,
443E311BD736B6F07D8B5811 /* Frameworks */,
24ED9F161EFA6BE300D771DA /* Recovered References */,
2D16E6871FA4F8E400B85C8A /* Frameworks */,
13174BB8200BB5050092B6A8 /* Recovered References */,
);
indentWidth = 2;
sourceTree = "<group>";
tabWidth = 2;
usesTabs = 0;
};
83CBBA001A601CBA00E9B192 /* Products */ = {
isa = PBXGroup;
@ -520,6 +647,15 @@
name = Products;
sourceTree = "<group>";
};
ADBDB9201DFEBF0600ED6528 /* Products */ = {
isa = PBXGroup;
children = (
ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */,
2D16E6721FA4F8DC00B85C8A /* libRCTBlob-tvOS.a */,
);
name = Products;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@ -545,13 +681,12 @@
isa = PBXNativeTarget;
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "InstabugSample" */;
buildPhases = (
1815D8FB2BCD715098EBFE3D /* [CP] Check Pods Manifest.lock */,
13B07F871A680F5B00A75B9A /* Sources */,
13B07F8C1A680F5B00A75B9A /* Frameworks */,
13B07F8E1A680F5B00A75B9A /* Resources */,
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
F34B58CB9681C17878B6D0CC /* [CP] Embed Pods Frameworks */,
0B79621FBDFDDD687F85A8D4 /* [CP] Copy Pods Resources */,
2BD5D90EC3C08EB8443FD422 /* Embed Instabug Framework */,
10EC72DCB752A534A1E19BF5 /* Strip Frameworks */,
);
buildRules = (
);
@ -611,9 +746,6 @@
CreatedOnToolsVersion = 6.2;
TestTargetID = 13B07F861A680F5B00A75B9A;
};
13B07F861A680F5B00A75B9A = {
DevelopmentTeam = 56S6Q9SA8U;
};
2D02E47A1E0B4A5D006451C7 = {
CreatedOnToolsVersion = 8.2.1;
ProvisioningStyle = Automatic;
@ -645,6 +777,10 @@
ProductGroup = 5E91572E1DD0AC6500FF2AA8 /* Products */;
ProjectRef = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;
},
{
ProductGroup = ADBDB9201DFEBF0600ED6528 /* Products */;
ProjectRef = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;
},
{
ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */;
ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */;
@ -681,6 +817,10 @@
ProductGroup = 146834001AC3E56700842450 /* Products */;
ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */;
},
{
ProductGroup = 13174BEE200BB5090092B6A8 /* Products */;
ProjectRef = 75BE9067987349D092A1F545 /* RNInstabug.xcodeproj */;
},
);
projectRoot = "";
targets = (
@ -728,6 +868,69 @@
remoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
13174BDF200BB5090092B6A8 /* libjsinspector.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libjsinspector.a;
remoteRef = 13174BDE200BB5090092B6A8 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
13174BE1200BB5090092B6A8 /* libjsinspector-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libjsinspector-tvOS.a";
remoteRef = 13174BE0200BB5090092B6A8 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
13174BE3200BB5090092B6A8 /* libthird-party.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libthird-party.a";
remoteRef = 13174BE2200BB5090092B6A8 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
13174BE5200BB5090092B6A8 /* libthird-party.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libthird-party.a";
remoteRef = 13174BE4200BB5090092B6A8 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
13174BE7200BB5090092B6A8 /* libdouble-conversion.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libdouble-conversion.a";
remoteRef = 13174BE6200BB5090092B6A8 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
13174BE9200BB5090092B6A8 /* libdouble-conversion.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libdouble-conversion.a";
remoteRef = 13174BE8200BB5090092B6A8 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
13174BEB200BB5090092B6A8 /* libprivatedata.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libprivatedata.a;
remoteRef = 13174BEA200BB5090092B6A8 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
13174BED200BB5090092B6A8 /* libprivatedata-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libprivatedata-tvOS.a";
remoteRef = 13174BEC200BB5090092B6A8 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
13174BF2200BB50A0092B6A8 /* libRNInstabug.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRNInstabug.a;
remoteRef = 13174BF1200BB50A0092B6A8 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
139105C11AF99BAD00B5F7CC /* libRCTSettings.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
@ -749,6 +952,27 @@
remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
2D16E6721FA4F8DC00B85C8A /* libRCTBlob-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libRCTBlob-tvOS.a";
remoteRef = 2D16E6711FA4F8DC00B85C8A /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
2D16E6841FA4F8DC00B85C8A /* libfishhook.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libfishhook.a;
remoteRef = 2D16E6831FA4F8DC00B85C8A /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
2D16E6861FA4F8DC00B85C8A /* libfishhook-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libfishhook-tvOS.a";
remoteRef = 2D16E6851FA4F8DC00B85C8A /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
@ -847,10 +1071,10 @@
remoteRef = 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
5E9157351DD0AC6500FF2AA8 /* libRCTAnimation-tvOS.a */ = {
5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libRCTAnimation-tvOS.a";
path = libRCTAnimation.a;
remoteRef = 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
@ -868,6 +1092,13 @@
remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRCTBlob.a;
remoteRef = ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
/* End PBXReferenceProxy section */
/* Begin PBXResourcesBuildPhase section */
@ -917,37 +1148,21 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh";
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
};
0B79621FBDFDDD687F85A8D4 /* [CP] Copy Pods Resources */ = {
10EC72DCB752A534A1E19BF5 /* Strip Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Copy Pods Resources";
name = "Strip Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-InstabugSample/Pods-InstabugSample-resources.sh\"\n";
showEnvVarsInLog = 0;
};
1815D8FB2BCD715098EBFE3D /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
showEnvVarsInLog = 0;
shellScript = "bash \"${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/InstabugCore.framework/strip-frameworks.sh\"\n";
};
2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = {
isa = PBXShellScriptBuildPhase;
@ -961,22 +1176,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh";
};
F34B58CB9681C17878B6D0CC /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-InstabugSample/Pods-InstabugSample-frameworks.sh\"\n";
showEnvVarsInLog = 0;
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
};
/* End PBXShellScriptBuildPhase section */
@ -1051,6 +1251,10 @@
"DEBUG=1",
"$(inherited)",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/instabug-reactnative/ios/RNInstabug/**",
);
INFOPLIST_FILE = InstabugSampleTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
@ -1064,10 +1268,6 @@
);
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/InstabugSample.app/InstabugSample";
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/instabug-reactnative/ios/RNInstabug/**",
);
};
name = Debug;
};
@ -1076,6 +1276,10 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
COPY_PHASE_STRIP = NO;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/instabug-reactnative/ios/RNInstabug/**",
);
INFOPLIST_FILE = InstabugSampleTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
@ -1089,23 +1293,24 @@
);
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/InstabugSample.app/InstabugSample";
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/instabug-reactnative/ios/RNInstabug/**",
);
};
name = Release;
};
13B07F941A680F5B00A75B9A /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 8601D784DB38337F6E545397 /* Pods-InstabugSample.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CURRENT_PROJECT_VERSION = 1;
DEAD_CODE_STRIPPING = NO;
DEVELOPMENT_TEAM = 56S6Q9SA8U;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"../node_modules/instabug-reactnative/ios",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/instabug-reactnative/ios/RNInstabug/**",
);
INFOPLIST_FILE = InstabugSample/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_LDFLAGS = (
"$(inherited)",
@ -1114,22 +1319,23 @@
);
PRODUCT_NAME = InstabugSample;
VERSIONING_SYSTEM = "apple-generic";
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/instabug-reactnative/ios/RNInstabug/**",
);
};
name = Debug;
};
13B07F951A680F5B00A75B9A /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 21DED4D3594E0D93E837631F /* Pods-InstabugSample.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 56S6Q9SA8U;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"../node_modules/instabug-reactnative/ios",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/instabug-reactnative/ios/RNInstabug/**",
);
INFOPLIST_FILE = InstabugSample/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_LDFLAGS = (
"$(inherited)",
@ -1138,10 +1344,6 @@
);
PRODUCT_NAME = InstabugSample;
VERSIONING_SYSTEM = "apple-generic";
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/instabug-reactnative/ios/RNInstabug/**",
);
};
name = Release;
};
@ -1157,6 +1359,10 @@
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_TESTABILITY = YES;
GCC_NO_COMMON_BLOCKS = YES;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/instabug-reactnative/ios/RNInstabug/**",
);
INFOPLIST_FILE = "InstabugSample-tvOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
@ -1172,10 +1378,6 @@
SDKROOT = appletvos;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 9.2;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/instabug-reactnative/ios/RNInstabug/**",
);
};
name = Debug;
};
@ -1191,6 +1393,10 @@
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_NO_COMMON_BLOCKS = YES;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/instabug-reactnative/ios/RNInstabug/**",
);
INFOPLIST_FILE = "InstabugSample-tvOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
@ -1206,10 +1412,6 @@
SDKROOT = appletvos;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 9.2;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../node_modules/instabug-reactnative/ios/RNInstabug/**",
);
};
name = Release;
};

View File

@ -99,13 +99,6 @@
ReferencedContainer = "container:InstabugSample.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<EnvironmentVariables>
<EnvironmentVariable
key = "OS_ACTIVITY_MODE"
value = "disable"
isEnabled = "YES">
</EnvironmentVariable>
</EnvironmentVariables>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:InstabugSample.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>

View File

@ -18,7 +18,7 @@
{
NSURL *jsCodeLocation;
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
moduleName:@"InstabugSample"

View File

@ -0,0 +1,6 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -37,7 +37,7 @@
- (void)testRendersWelcomeScreen
{
UIViewController *vc = [[[[UIApplication sharedApplication] delegate] window] rootViewController];
UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController];
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS];
BOOL foundElement = NO;

View File

@ -1,3 +0,0 @@
target 'InstabugSample' do
pod 'Instabug', '7.2.5'
end

View File

@ -3,21 +3,20 @@
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node_modules/react-native/packager/packager.sh",
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"instabug-reactnative": "file:..",
"react": "15.4.2",
"react-native": "^0.41.2"
"react": "16.2.0",
"react-native": "0.52.0"
},
"devDependencies": {
"babel-jest": "18.0.0",
"babel-preset-react-native": "1.9.1",
"jest": "18.1.0",
"react-test-renderer": "15.4.2"
"babel-jest": "22.0.6",
"babel-preset-react-native": "4.0.0",
"jest": "22.0.6",
"react-test-renderer": "16.2.0"
},
"jest": {
"preset": "react-native"
}
}
}

View File

@ -4,6 +4,7 @@
[![npm](https://img.shields.io/npm/dt/instabug-reactnative.svg)](https://www.npmjs.com/package/instabug-reactnative)
[![npm](https://img.shields.io/npm/l/instabug-reactnative.svg)](https://github.com/Instabug/instabug-reactnative/blob/master/LICENSE)
[![Twitter](https://img.shields.io/badge/twitter-@Instabug-blue.svg)](https://twitter.com/Instabug)
[![Analytics](https://instabug-ga.appspot.com/UA-41982088-6/github/Instabug/instabug-reactnative?pixel)](https://instabug.com)
Upgrading? Check the [Upgrade Guide](#upgrading-guide) before bumping to a new major version.
@ -117,6 +118,21 @@ npm install instabug-reactnative
react-native link instabug-reactnative
```
## Microphone and Photo Library Usage Description (iOS Only)
Instabug needs access to the microphone and photo library to be able to let users add audio and video attachments. Starting from iOS 10, apps that dont provide a usage description for those 2 permissions would be rejected when submitted to the App Store.
For your app not to be rejected, youll need to add the following 2 keys to your apps info.plist file with text explaining to the user why those permissions are needed:
* `NSMicrophoneUsageDescription`
* `NSPhotoLibraryUsageDescription`
If your app doesnt already access the microphone or photo library, we recommend using a usage description like:
* "`<app name>` needs access to the microphone to be able to attach voice notes."
* "`<app name>` needs access to your photo library for you to be able to attach images."
**The permission alert for accessing the microphone/photo library will NOT appear unless users attempt to attach a voice note/photo while using Instabug.**
## Documentation
For more details about the supported APIs and how to use them, you can check our [**Documentation**](https://docs.instabug.com/docs/react-native-overview).

View File

@ -21,6 +21,6 @@ android {
dependencies {
compile 'com.facebook.react:react-native:0.20.+'
compile 'com.instabug.library:instabug:4.5.0'
compile 'com.instabug.library:instabug:4.9.0'
}

View File

@ -19,6 +19,7 @@ import com.facebook.react.bridge.WritableNativeMap;
import com.facebook.react.bridge.Callback;
import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.instabug.library.Feature;
import com.instabug.library.Instabug;
import com.instabug.library.internal.module.InstabugLocale;
import com.instabug.library.invocation.InstabugInvocationEvent;
@ -246,6 +247,20 @@ public class RNInstabugReactnativeModule extends ReactContextBaseJavaModule {
}
}
@ReactMethod
public void setViewHierarchyEnabled(boolean enabled) {
try {
if(enabled) {
Instabug.setViewHierarchyState(Feature.State.ENABLED);
} else {
Instabug.setViewHierarchyState(Feature.State.DISABLED);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Sets the default corner at which the video recording floating button will be shown
*
@ -356,15 +371,14 @@ public class RNInstabugReactnativeModule extends ReactContextBaseJavaModule {
* @param {boolean} screenShot A boolean to enable or disable screenshot attachments.
* @param {boolean} extraScreenShot A boolean to enable or disable extra screenshot attachments.
* @param {boolean} galleryImage A boolean to enable or disable gallery image attachments.
* @param {boolean} voiceNote A boolean to enable or disable voice note attachments.
* @param {boolean} screenRecording A boolean to enable or disable screen recording attachments.
*/
@ReactMethod
public void setAttachmentTypesEnabled(boolean screenshot, boolean extraScreenshot, boolean
galleryImage, boolean voiceNote, boolean screenRecording) {
public void setEnabledAttachmentTypes(boolean screenshot, boolean extraScreenshot, boolean
galleryImage, boolean screenRecording) {
try {
mInstabug.setAttachmentTypesEnabled(screenshot, extraScreenshot, galleryImage,
voiceNote, screenRecording);
Instabug.setAttachmentTypesEnabled(screenshot, extraScreenshot, galleryImage,
screenRecording);
} catch (Exception e) {
e.printStackTrace();
}
@ -668,6 +682,42 @@ public class RNInstabugReactnativeModule extends ReactContextBaseJavaModule {
}
}
/**
* Returns true if the survey with a specific token was answered before.
* Will return false if the token does not exist or if the survey was not answered before.
*
* @param surveyToken the attribute key as string
* @param hasRespondedCallback A callback that gets invoked with the returned value of whether
* the user has responded to the survey or not.
* @return the desired value of whether the user has responded to the survey or not.
*/
@ReactMethod
public void hasRespondedToSurveyWithToken(String surveyToken, Callback hasRespondedCallback) {
boolean hasResponded;
try {
hasResponded = Instabug.hasRespondToSurvey(surveyToken);
hasRespondedCallback.invoke(hasResponded);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Shows survey with a specific token.
* Does nothing if there are no available surveys with that specific token.
* Answered and cancelled surveys won't show up again.
*
* @param surveyToken A String with a survey token.
*/
@ReactMethod
public void showSurveyWithToken(String surveyToken) {
try {
Instabug.showSurvey(surveyToken);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Sets user attribute to overwrite it's value or create a new one if it doesn't exist.
*

View File

@ -12,6 +12,7 @@ import com.instabug.library.Instabug;
import com.instabug.library.InstabugColorTheme;
import com.instabug.library.invocation.InstabugInvocationEvent;
import com.instabug.library.invocation.util.InstabugFloatingButtonEdge;
import com.instabug.library.visualusersteps.State;
import android.graphics.Color;
import java.util.ArrayList;
@ -56,6 +57,7 @@ public class RNInstabugReactnativePackage implements ReactPackage {
mInstabug = new Instabug.Builder(this.androidApplication, this.mAndroidApplicationToken)
.setInvocationEvent(this.invocationEvent)
.setCrashReportingState(Feature.State.DISABLED)
.setReproStepsState(State.DISABLED)
.build();
Instabug.setPrimaryColor(Color.parseColor(primaryColor));

View File

@ -103,6 +103,29 @@ module.exports = {
},
/**
* Shows survey with a specific token.
* Does nothing if there are no available surveys with that specific token.
* Answered and cancelled surveys won't show up again.
* @param {string} surveyToken - A String with a survey token.
*
*/
showSurveyWithToken: function (surveyToken) {
Instabug.showSurveyWithToken(surveyToken);
},
/**
* Returns true if the survey with a specific token was answered before.
* Will return false if the token does not exist or if the survey was not answered before.
* @param {string} surveyToken - A String with a survey token.
* @param {function} surveyTokenCallback callback with argument as the desired value of the whether
* the survey has been responded to or not.
*
*/
hasRespondedToSurveyWithToken: function (surveyToken, surveyTokenCallback) {
Instabug.hasRespondedToSurveyWithToken(surveyToken, surveyTokenCallback);
},
/**
* Sets a block of code to be executed just before the SDK's UI is presented.
* This block is executed on the UI thread. Could be used for performing any
@ -369,6 +392,7 @@ module.exports = {
},
/**
* @deprecated since version 2.3.0. Use {@link setEnabledAttachmentTypes} instead.
* Sets whether attachments in bug reporting and in-app messaging are enabled or not.
* @param {boolean} screenshot A boolean to enable or disable screenshot attachments.
* @param {boolean} extraScreenshot A boolean to enable or disable extra
@ -381,15 +405,23 @@ module.exports = {
* voiceNote attachments.
* @param {boolean} screenRecording A boolean to enable or disable screen recording attachments.
*/
setAttachmentTypesEnabled: function (screenshot, extraScreenshot, galleryImage, voiceNote,
screenRecording) {
Instabug.setAttachmentTypesEnabled(
screenshot,
extraScreenshot,
galleryImage,
voiceNote,
screenRecording
);
setAttachmentTypesEnabled: function (screenshot, extraScreenshot, galleryImage, voiceNote, screenRecording) {
Instabug.setEnabledAttachmentTypes(screenshot, extraScreenshot, galleryImage, screenRecording);
},
/**
* Sets whether attachments in bug reporting and in-app messaging are enabled or not.
* @param {boolean} screenshot A boolean to enable or disable screenshot attachments.
* @param {boolean} extraScreenshot A boolean to enable or disable extra
* screenshot attachments.
* @param {boolean} galleryImage A boolean to enable or disable gallery image
* attachments. In iOS 10+,NSPhotoLibraryUsageDescription should be set in
* info.plist to enable gallery image attachments.
* @param {boolean} screenRecording A boolean to enable or disable screen recording attachments.
*/
setEnabledAttachmentTypes: function (screenshot, extraScreenshot, galleryImage, screenRecording) {
Instabug.setEnabledAttachmentTypes(screenshot, extraScreenshot, galleryImage, screenRecording);
},
/**
@ -662,9 +694,7 @@ module.exports = {
* or disabled.
*/
setViewHierarchyEnabled: function (viewHierarchyEnabled) {
if (Platform.OS === 'ios') {
Instabug.setViewHierarchyEnabled(viewHierarchyEnabled);
}
Instabug.setViewHierarchyEnabled(viewHierarchyEnabled);
},
/**
@ -840,6 +870,17 @@ module.exports = {
floatingButton: Instabug.invocationEventFloatingButton
},
/**
* The user steps option.
* @readonly
* @enum {number}
*/
reproStepsMode: {
enabled: Instabug.reproStepsEnabled,
disabled: Instabug.reproStepsDisabled,
enabledWithNoScreenshot: Instabug.reproStepsEnabledWithNoScreenshot,
},
/**
* Type of SDK dismiss
* @readonly

View File

@ -3,9 +3,9 @@
Contains: API for using Instabug's SDK.
Copyright: (c) 2013-2017 by Instabug, Inc., all rights reserved.
Copyright: (c) 2013-2018 by Instabug, Inc., all rights reserved.
Version: 7.4.1
Version: 7.8.1
*/
#import <Foundation/Foundation.h>
@ -44,6 +44,7 @@ typedef void (^NetworkObfuscationCompletionBlock)(NSData *data, NSURLResponse *r
/// @name SDK Manual Invocation
/// ---------------------------
/**
@brief Invokes the SDK manually with the default invocation mode.
@ -160,6 +161,18 @@ typedef void (^NetworkObfuscationCompletionBlock)(NSData *data, NSURLResponse *r
*/
+ (void)setUserStepsEnabled:(BOOL)isUserStepsEnabled;
/**
@brief Sets whether user steps tracking is visual, non visula or disabled.
@discussion Enabling user steps would give you an insight on the scenario a user has performed before encountering a
bug or a crash. User steps are attached with each report being sent.
User Steps tracking is enabled by default if it's available in your current plan.
@param userStepsMode An enum to set user steps tracking to be enabled , non visual or disabled.
*/
+ (void)setReproStepsMode:(IBGUserStepsMode)userStepsMode;
/**
@brief Sets whether to track and report crashes or not.
@ -618,8 +631,14 @@ typedef void (^NetworkObfuscationCompletionBlock)(NSData *data, NSURLResponse *r
extraScreenShot:(BOOL)extraScreenShot
galleryImage:(BOOL)galleryImage
voiceNote:(BOOL)voiceNote
screenRecording:(BOOL)screenRecording;
screenRecording:(BOOL)screenRecording DEPRECATED_MSG_ATTRIBUTE("Starting from v8.0, use setAttachmentOptions: instead");
/**
@brief Sets whether attachments in bug reporting and in-app messaging are enabled.
@param attachmentTypes A NS_OPTIONS to add enabled attachments type.
*/
+ (void)setEnabledAttachmentTypes:(IBGAttachmentType)attachmentTypes;
/**
@brief Enables/disables showing in-app notifications when the user receives a new message.
@ -808,7 +827,9 @@ typedef void (^NetworkObfuscationCompletionBlock)(NSData *data, NSURLResponse *r
*/
+ (void)logUserEventWithName:(NSString *)name params:(nullable NSDictionary *)params;
#pragma mark - IBGLog
/// ------------------------
/// @name IBGLog
/// ------------------------
/**
@brief Adds custom logs that will be sent with each report.
@ -951,7 +972,9 @@ OBJC_EXTERN void IBGNSLogWithLevel(NSString *format, va_list args, IBGLogLevel l
*/
+ (void)clearAllLogs;
#pragma mark - Network Logging
/// ------------------------
/// @name Network Logging
/// ------------------------
/**
@brief Sets whether to log network requests or not.
@ -1095,7 +1118,9 @@ OBJC_EXTERN void IBGNSLogWithLevel(NSString *format, va_list args, IBGLogLevel l
*/
+ (void)setDidReceiveAuthenticationChallengeHandler:(NSURLCredential* (^)(NSURLAuthenticationChallenge *challenge))reciveChallengeHandler;
#pragma mark - Surveys
/// ------------------------
/// @name Surveys
/// ------------------------
/**
@brief Sets whether auto surveys showing are enabled or not.
@ -1153,7 +1178,27 @@ OBJC_EXTERN void IBGNSLogWithLevel(NSString *format, va_list args, IBGLogLevel l
*/
+ (void)setDidDismissSurveyHandler:(void (^)(void))didShowSurveyHandler;
#pragma mark - SDK Debugging
/**
@brief Shows Survey with a specific token.
@discussion Does nothing if there are no available surveys with that specific token. Answered and canceled surveys won't show up again.
@param surveyToken A String with a survey token.
*/
+ (void)showSurveyWithToken:(NSString *)surveyToken;
/**
@brief Returns true if the survey with a specific token was answered before .
@discussion Will return false if the token does not exist or if the survey was not answered before.
@param surveyToken A String with a survey token.
*/
+ (BOOL)hasRespondedToSurveyWithToken:(NSString *)surveyToken;
/// ------------------------
/// @name SDK Debugging
/// ------------------------
/**
@brief Sets the verbosity level of logs used to debug the Instabug SDK itself.

Binary file not shown.

Binary file not shown.

View File

@ -6,11 +6,11 @@
<dict>
<key>Headers/Instabug.h</key>
<data>
Zq01XLmIFv979g9w+yhkcBFVL00=
qO36cnCcgBW7KDsMtn4PKHVIGzM=
</data>
<key>Info.plist</key>
<data>
s0iIs/T/8NPlmu52Js9SZWNW6SA=
SLGadppsDv61+nvvoPap7SePBBc=
</data>
<key>Modules/module.modulemap</key>
<data>
@ -23,11 +23,11 @@
<dict>
<key>hash</key>
<data>
Zq01XLmIFv979g9w+yhkcBFVL00=
qO36cnCcgBW7KDsMtn4PKHVIGzM=
</data>
<key>hash2</key>
<data>
m8vFq+B+0jk6K+x0PdyvejjqKuJUcIuTmdtJmjZJMeI=
Qkp/f8J1z3u0inL+btB4Bp7SPCCTlxWv6IjUhH/q7+4=
</data>
</dict>
<key>Modules/module.modulemap</key>

View File

@ -1,9 +1,12 @@
//
// IBGTypes.h
// Instabug
//
// Copyright: (c) 2013-2016 by Instabug, Inc., all rights reserved.
//
/*
File: InstabugCore/IBGTypes.h
Contains: Enums and Constants for using Instabug's SDK.
Copyright: (c) 2013-2018 by Instabug, Inc., all rights reserved.
Version: 7.8.1
*/
#import <UIKit/UIKit.h>
@ -60,7 +63,6 @@ extern NSString * const kIBGVideoRecordingFailureMessageStringName;
extern NSString * const kIBGSurveyEnterYourAnswerTextPlaceholder;
extern NSString * const kIBGSurveyNoAnswerTitle;
extern NSString * const kIBGSurveyNoAnswerMessage;
extern NSString * const kIBGSurveySubmitTitle;
extern NSString * const kIBGVideoPressRecordTitle;
extern NSString * const kIBGCollectingDataText;
extern NSString * const kIBGLowDiskStorageTitle;
@ -68,6 +70,14 @@ extern NSString * const kIBGLowDiskStorageMessage;
extern NSString * const kIBGInboundByLineMessage;
extern NSString * const kIBGExtraFieldIsRequiredText;
extern NSString * const kIBGExtraFieldMissingDataText;
extern NSString * const kIBGSurveyIntroTitleText;
extern NSString * const kIBGSurveyIntroDescriptionText;
extern NSString * const kIBGSurveyIntroTakeSurveyButtonText;
extern NSString * const kIBGSurveyIntroDismissButtonText;
extern NSString * const kIBGSurveyThankYouTitleText;
extern NSString * const kIBGSurveyThankYouDescriptionText;
extern NSString * const kIBGSurveysNPSLeastLikelyStringName;
extern NSString * const kIBGSurveysNPSMostLikelyStringName;
/// -----------
/// @name Enums
@ -241,15 +251,18 @@ typedef NS_ENUM(NSInteger, IBGString) {
IBGStringScreenRecording,
IBGStringImage,
IBGStringSurveyEnterYourAnswerPlaceholder,
IBGStringSurveyNoAnswerTitle,
IBGStringSurveyNoAnswerMessage,
IBGStringSurveySubmitTitle,
IBGStringVideoPressRecordTitle,
IBGStringCollectingDataText,
IBGStringLowDiskStorageTitle,
IBGStringLowDiskStorageMessage,
IBGStringExtraFieldIsRequiredText,
IBGStringExtraFieldMissingDataText
IBGStringExtraFieldMissingDataText,
IBGStringSurveyIntroTitleText,
IBGStringSurveyIntroDescriptionText,
IBGStringSurveyIntroTakeSurveyButtonText,
IBGStringSurveyIntroDismissButtonText,
IBGStringSurveyThankYouTitleText,
IBGStringSurveyThankYouDescriptionText
};
/**
@ -283,6 +296,25 @@ typedef NS_ENUM(NSInteger, IBGLogLevel) {
IBGLogLevelFatal
};
/**
The user steps option.
*/
typedef NS_ENUM(NSInteger, IBGUserStepsMode) {
IBGUserStepsModeEnable,
IBGUserStepsModeEnabledWithNoScreenshots,
IBGUserStepsModeDisable
};
/**
The attachment types selected in Attachment action sheet.
*/
typedef NS_OPTIONS(NSInteger, IBGAttachmentType) {
IBGAttachmentTypeScreenShot = 1 << 1,
IBGAttachmentTypeExtraScreenShot = 1 << 2,
IBGAttachmentTypeGalleryImage = 1 << 4,
IBGAttachmentTypeScreenRecording = 1 << 6,
};
@interface UIView (Instabug)
/**

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -6,79 +6,79 @@
<dict>
<key>Headers/IBGTypes.h</key>
<data>
RlUDCxxes0XUP+iXAATjWsjs230=
dBPF6HIshqkP6SaDa5TKTizXMSc=
</data>
<key>IBGActionSheetCell.nib</key>
<data>
8L6jhi3riI1emV62SRByxb8/4eE=
zhV00hwvo6ZcvMDXhxjp52yWKF0=
</data>
<key>IBGActionSheetVC-iPhone.nib</key>
<data>
5Hw5VU83EYP/QMXwQMnQFcMQIpI=
Gr6z4hOcC9W8DLuUSRY/3HHDn44=
</data>
<key>IBGAttachmentButton.nib</key>
<data>
2EFJd+sU2NfLrJkdScM0ewgEc7I=
ewpb/3J9cjAbQUHh/LCSFWMCDx0=
</data>
<key>IBGBugVC-iPhone.nib</key>
<data>
l3R8SPIh5V4pJ9Ef8l3oErSLL4c=
wdIM89ddZrhvithMqTFWhmhYtWQ=
</data>
<key>IBGChatCell.nib</key>
<data>
Fh+eJDBH2kf2JZx5s+TdSajOp2I=
wFVEn2lZBcZQGfirs2H648hVJ+I=
</data>
<key>IBGChatListVC-iPhone.nib</key>
<data>
8FVTb3N4pGlknntoxKjgijL/WTE=
sJnTgpARnqfSgJag1ImtGCDD0KQ=
</data>
<key>IBGChatVC-iPhone.nib</key>
<data>
zKaXpzezC/e9pEtSijSjOeNak44=
gFi9gjyfSAOzI+64wgGt7N+BEv0=
</data>
<key>IBGFullScreenImageViewController.nib</key>
<data>
AyZR0ggIrlM6axb2JTSMzwPAuVk=
I29dLrW6WFfrU/WxcqdHDPB1jXI=
</data>
<key>IBGMessagesView.nib</key>
<data>
0zNdBa+XXY0XkPbcbBTyKqa/Z9E=
axmmrj5kOmtDsMImRQt4po0TjRs=
</data>
<key>IBGPoweredByView.nib</key>
<data>
nKKG22fWDvLeltYmzkG9V1m0cLQ=
c0/AAMpttx6TLdmDRdj2Cew4yQ0=
</data>
<key>IBGPromptCell.nib</key>
<data>
Pbyg7fLGLCF/WWOH3KPwHdvKIuU=
/md8jRJDzFxU958IHeeeWluNBhk=
</data>
<key>IBGPromptVC-iPhone.nib</key>
<data>
P4gkOWvuWicmFzFVTmoM2h2VLBw=
drGQbbHqeh8HrSryx818/PEf2/0=
</data>
<key>IBGReplyView-iPhone.nib</key>
<data>
LnExeIcrtTcv7bEDwdaAzbvrMqw=
mW1vC92NBLSEoFe3rAXvi8Q8tyA=
</data>
<key>IBGReportCategoriesVC-iPhone.nib</key>
<data>
XXFbTGKVLjval/pe5G7UGWKaeYw=
H9leY2BoT2DUc5/yGZ+r6kthfFc=
</data>
<key>IBGScreenshotVC-iPhone.nib</key>
<data>
FGTKtl6iNSybdHNSEi/0NJAuK2w=
0U5ZXkutFh6d0C6ImSda+rAJG1A=
</data>
<key>IBGUnnotifiedMessagesAlertView.nib</key>
<data>
ZAKkfR9S3cpqfdwlB7wzpSepHCM=
X7SAN1FnPIPUy8IjqZuCdOiO9Nc=
</data>
<key>IBGVideoPlaybackViewController.nib</key>
<data>
CD9N9bjvfb5im9AKnDxfFEGthcE=
c+OFXtb6inLPxhtdPOwKAsaaSqs=
</data>
<key>IBGVoiceNoteRecordingViewController-iPhone.nib</key>
<data>
GBsWztpnjiCcs3IlkSt42VdEMfM=
xN0kZeGdsSLVFBgn0paj3GXXuq8=
</data>
<key>InAppScreenshotPlaceholder.png</key>
<data>
@ -106,7 +106,7 @@
</data>
<key>Info.plist</key>
<data>
kFrDEE46qXADcmE6p3BeKsGm1uw=
VT6bgvPrAdQzZpidJdfmHooZTC0=
</data>
<key>Inject_DSYM_Project-Archive.sh</key>
<data>
@ -130,11 +130,11 @@
</data>
<key>InstabugDataModel.momd/InstabugDataModel 9.mom</key>
<data>
GHCidcSaD+2cceEF2qcLJhhapTo=
KnURQnAJj79EnjLNGP0Q3LMJmwY=
</data>
<key>InstabugDataModel.momd/InstabugDataModel 9.omo</key>
<data>
H/whqgeuGvPZ7BDRoSVl0cXJBTY=
4hEFvV3ocYp1c8WVzn9sE22vbEI=
</data>
<key>InstabugDataModel.momd/InstabugDataModel.mom</key>
<data>
@ -142,7 +142,7 @@
</data>
<key>InstabugDataModel.momd/VersionInfo.plist</key>
<data>
+CV51tQ/lVrsxeAN2FTKpQdrEIY=
eLNZfvHXZ3FE0Z92jFp4DwB6H2k=
</data>
<key>Instabug_dsym_upload.sh</key>
<data>
@ -152,7 +152,7 @@
<dict>
<key>hash</key>
<data>
3gojUGpJjLj84oaRBB8vZrueuUY=
H1q3z0BfwHD8dtxGCEFQf2sCGQg=
</data>
<key>optional</key>
<true/>
@ -173,7 +173,7 @@
<dict>
<key>hash</key>
<data>
yP9zvGkZqWrUill1L2BC8NEXEMY=
GJMj2OG2CH1A41AoxA/oblR+WHU=
</data>
<key>optional</key>
<true/>
@ -182,7 +182,7 @@
<dict>
<key>hash</key>
<data>
EdrsbyGL/CAtlpedU90e/MQVjqA=
GrqLx+cgcd/agNKN3S0fCo9YCb8=
</data>
<key>optional</key>
<true/>
@ -191,7 +191,7 @@
<dict>
<key>hash</key>
<data>
IBS3ihaaIZ3rWY/TQU3Rm0Ap5RQ=
USgdcyt/sGXdAXTW2uZWdokO4m0=
</data>
<key>optional</key>
<true/>
@ -200,7 +200,7 @@
<dict>
<key>hash</key>
<data>
3rgJCN0d+gTVXrSnucK8aoeqPc8=
8GO5JX8vfCnxE+Vxglv7jyCtHLg=
</data>
<key>optional</key>
<true/>
@ -209,7 +209,7 @@
<dict>
<key>hash</key>
<data>
nOKMfZV8vBJV3bUesuG3sUVB5QY=
SIgfXBsAgGneVfSFzg6GTQ4P5QM=
</data>
<key>optional</key>
<true/>
@ -218,7 +218,7 @@
<dict>
<key>hash</key>
<data>
1kic4BEG9AwwhTMWcAPXAoO441o=
n92ZNB92WJ68XghFklJhjIzUMhk=
</data>
<key>optional</key>
<true/>
@ -239,7 +239,7 @@
<dict>
<key>hash</key>
<data>
wkVq67ZrSyoQP4kVCQmGuA2XV+o=
lP/n4mvzeGBv/MObQxKBB1KzxaI=
</data>
<key>optional</key>
<true/>
@ -248,7 +248,7 @@
<dict>
<key>hash</key>
<data>
r4cbtG8ei7K9w5jw7M5pTdwpuHs=
Rbc5aUR0m+b9K0PKrswNZ0Dd2nw=
</data>
<key>optional</key>
<true/>
@ -257,7 +257,7 @@
<dict>
<key>hash</key>
<data>
dVmkenZWBzfXOWmcfGUSreMTFks=
gfvqc+3ChvTip4GyQbFH+/1AmaY=
</data>
<key>optional</key>
<true/>
@ -266,7 +266,7 @@
<dict>
<key>hash</key>
<data>
q2zujf8laSDZRQ5Mg4ipESChxvA=
dgTwT3uOdSTj8Zt3CiVkZ9dywqM=
</data>
<key>optional</key>
<true/>
@ -275,7 +275,7 @@
<dict>
<key>hash</key>
<data>
pllvMKr26wVjcTGimicIjaf7N+Q=
XM6tQKdTjSACAVzdFWQQCV51fVY=
</data>
<key>optional</key>
<true/>
@ -296,7 +296,7 @@
<dict>
<key>hash</key>
<data>
vbFwr7WaUDkRdizHHQjX1zHM3Jk=
WGS7AjM/IfCnH82Egfg/K3Jcyh8=
</data>
<key>optional</key>
<true/>
@ -309,7 +309,7 @@
<dict>
<key>hash</key>
<data>
kn8F0ksUky9FP7TGdKi33BaF5is=
B0lp4t3vKViG4nYSPQNqZdcxEbw=
</data>
<key>optional</key>
<true/>
@ -318,7 +318,7 @@
<dict>
<key>hash</key>
<data>
6tkM0vQHZDyf1Ukj3Qb7Xvng1RE=
YFHErfupJsqzpwB3ZNAQ1ESpN1k=
</data>
<key>optional</key>
<true/>
@ -327,7 +327,7 @@
<dict>
<key>hash</key>
<data>
KE5akKQxqJdjoBgUt6QQ7OWlrMs=
fDL0OF3IJjb4bfs28b85vmnbdUo=
</data>
<key>optional</key>
<true/>
@ -340,7 +340,7 @@
<dict>
<key>hash</key>
<data>
FBaeCY0M3+5BhuqPFIoEDviO0UM=
JpMX8SwEi/q5SWkMHiEIFFUqBbg=
</data>
<key>optional</key>
<true/>
@ -353,7 +353,7 @@
<dict>
<key>hash</key>
<data>
ydoP0Bc2D4bqs36Qz6liDaSwO5Q=
YpVuKpA41/5GeQYK2nWbiuCexUY=
</data>
<key>optional</key>
<true/>
@ -374,7 +374,7 @@
<dict>
<key>hash</key>
<data>
zYDIbOl9ftgcrkcvpnemFVkXv8c=
W2hCi/mRBpnxAHYqRSKLBtguJS4=
</data>
<key>optional</key>
<true/>
@ -387,7 +387,7 @@
<dict>
<key>hash</key>
<data>
rpN1o8ODKCqo55DTscOdMBGO/Ek=
Dw3Ztrnxn25NLrxYpFKBBJ3X658=
</data>
<key>optional</key>
<true/>
@ -396,7 +396,7 @@
<dict>
<key>hash</key>
<data>
N8frfGuvvleGYZR/5DZbXhaltNw=
NB/zpqzhCvT4PhvG46GtMiq8JT4=
</data>
<key>optional</key>
<true/>
@ -405,7 +405,7 @@
<dict>
<key>hash</key>
<data>
4uY9rr9MX+77RBd3zYTDj6gSfag=
q4tvTeIr5ALJO+4wCbvgnOZ/iF4=
</data>
<key>optional</key>
<true/>
@ -417,209 +417,209 @@
<dict>
<key>hash</key>
<data>
RlUDCxxes0XUP+iXAATjWsjs230=
dBPF6HIshqkP6SaDa5TKTizXMSc=
</data>
<key>hash2</key>
<data>
VUcjuXVLaBe+WuqH+qUVUgAQTOLJqrUx2rgPCEww8RY=
Og6rR9RQspkEuLOdr7wl4Z/LsigkP3Te0WGSA9o1FAA=
</data>
</dict>
<key>IBGActionSheetCell.nib</key>
<dict>
<key>hash</key>
<data>
8L6jhi3riI1emV62SRByxb8/4eE=
zhV00hwvo6ZcvMDXhxjp52yWKF0=
</data>
<key>hash2</key>
<data>
AVXbaXLweN8UWXJs7lRBP+F3FuOESyrNLSBOoHh5w5c=
hAmtUCmufQYLDQAfLV6gyhsg/AIAiam2SwX52dBQxik=
</data>
</dict>
<key>IBGActionSheetVC-iPhone.nib</key>
<dict>
<key>hash</key>
<data>
5Hw5VU83EYP/QMXwQMnQFcMQIpI=
Gr6z4hOcC9W8DLuUSRY/3HHDn44=
</data>
<key>hash2</key>
<data>
58Ubcq6gICwcd0VvvcRD0v9zcbI/WU7d7d7g7Q9lplY=
9L6s85No+Qr5NIbbRRtWEB0Q7t0vNcYswQORnNPyKGo=
</data>
</dict>
<key>IBGAttachmentButton.nib</key>
<dict>
<key>hash</key>
<data>
2EFJd+sU2NfLrJkdScM0ewgEc7I=
ewpb/3J9cjAbQUHh/LCSFWMCDx0=
</data>
<key>hash2</key>
<data>
7YXdOPe7B8tCeez7/NhGPYLFF+4mIq/cPmVXTdpo9ec=
UfvzAq4MUKCtcdkhocM7GuQisv9d9UMwsDT2dCPgIH8=
</data>
</dict>
<key>IBGBugVC-iPhone.nib</key>
<dict>
<key>hash</key>
<data>
l3R8SPIh5V4pJ9Ef8l3oErSLL4c=
wdIM89ddZrhvithMqTFWhmhYtWQ=
</data>
<key>hash2</key>
<data>
MEB7BaDEc+NFoo7dmN1cvktjta8qijHkgchSG/MjCnE=
iWqoVgT+dQtxhjLL6m4fUR9SsSqc1Iz7wJ4qQsAjnM4=
</data>
</dict>
<key>IBGChatCell.nib</key>
<dict>
<key>hash</key>
<data>
Fh+eJDBH2kf2JZx5s+TdSajOp2I=
wFVEn2lZBcZQGfirs2H648hVJ+I=
</data>
<key>hash2</key>
<data>
DdkXIHLSNu4jBMPww/LTmYtnpjOX+VmMdBI4Db/kyDE=
Ch6deWpbwJZvG9zPWGHxMLyhLzRD+cXTdvTDGwwC67Q=
</data>
</dict>
<key>IBGChatListVC-iPhone.nib</key>
<dict>
<key>hash</key>
<data>
8FVTb3N4pGlknntoxKjgijL/WTE=
sJnTgpARnqfSgJag1ImtGCDD0KQ=
</data>
<key>hash2</key>
<data>
suXP75iEUNMCh3WEN5NPhAptxcQGxA5njn1t8xLFn28=
HuyRcdehuXtPcSRqustZ6J/Kn8X8cWlFeFph70Cj+S4=
</data>
</dict>
<key>IBGChatVC-iPhone.nib</key>
<dict>
<key>hash</key>
<data>
zKaXpzezC/e9pEtSijSjOeNak44=
gFi9gjyfSAOzI+64wgGt7N+BEv0=
</data>
<key>hash2</key>
<data>
3UHXIGQF/2gqKmGVO15Qy4CE1K8Ok3b9EQ6hT41Db5M=
UA885u5Sh3qC0R6qRRYqt9oagDCw/I37D7sqx8vsHyA=
</data>
</dict>
<key>IBGFullScreenImageViewController.nib</key>
<dict>
<key>hash</key>
<data>
AyZR0ggIrlM6axb2JTSMzwPAuVk=
I29dLrW6WFfrU/WxcqdHDPB1jXI=
</data>
<key>hash2</key>
<data>
DUqfdZ6pMc6oLYrK0FkXSiiYRTrHhJ+kbU2zJuLDom8=
aLFQzGLWmY50gVI9B0vdddwj+137cdIdfmfrv/SsEmo=
</data>
</dict>
<key>IBGMessagesView.nib</key>
<dict>
<key>hash</key>
<data>
0zNdBa+XXY0XkPbcbBTyKqa/Z9E=
axmmrj5kOmtDsMImRQt4po0TjRs=
</data>
<key>hash2</key>
<data>
AMqmBhcT+3zCpi3Jor+ogAE1YHR7zviSf6UoY3d+osw=
jZFZyGz7uU+YnDZ88uZES5q7mLGPe/wleLTgJpPLd8w=
</data>
</dict>
<key>IBGPoweredByView.nib</key>
<dict>
<key>hash</key>
<data>
nKKG22fWDvLeltYmzkG9V1m0cLQ=
c0/AAMpttx6TLdmDRdj2Cew4yQ0=
</data>
<key>hash2</key>
<data>
ObGwwPlAfkH120Tp3Wu+zzw/vII9gnuff9UadO6A3vA=
xoDaNmsH0YOR5P301hannpmObuo4dU7l1Rqyd9dQTS4=
</data>
</dict>
<key>IBGPromptCell.nib</key>
<dict>
<key>hash</key>
<data>
Pbyg7fLGLCF/WWOH3KPwHdvKIuU=
/md8jRJDzFxU958IHeeeWluNBhk=
</data>
<key>hash2</key>
<data>
TcyTjcCvsxUVOrvFJVyeEF7/0UfY1o7G4cszHwA++3k=
/sbM7GuIway/DphOs/gFnojRc2agr6y/yrRMNT+FVAE=
</data>
</dict>
<key>IBGPromptVC-iPhone.nib</key>
<dict>
<key>hash</key>
<data>
P4gkOWvuWicmFzFVTmoM2h2VLBw=
drGQbbHqeh8HrSryx818/PEf2/0=
</data>
<key>hash2</key>
<data>
SEoZLm/JO5PsNkFVoZtHfZC66M9cEzjidZt7aC8irBE=
N3AowuHtEcdEY9PdNhgJx6VmkqId4i/TXiO3N7M+H7U=
</data>
</dict>
<key>IBGReplyView-iPhone.nib</key>
<dict>
<key>hash</key>
<data>
LnExeIcrtTcv7bEDwdaAzbvrMqw=
mW1vC92NBLSEoFe3rAXvi8Q8tyA=
</data>
<key>hash2</key>
<data>
pJx+Ak3rsRr6/RPsoQWnp0RWUrhs9PHf7GxSPpzmxcA=
kdlrL0s9je8H1LNw4ielov4cHWcsFK4wMVRIE4SR5rM=
</data>
</dict>
<key>IBGReportCategoriesVC-iPhone.nib</key>
<dict>
<key>hash</key>
<data>
XXFbTGKVLjval/pe5G7UGWKaeYw=
H9leY2BoT2DUc5/yGZ+r6kthfFc=
</data>
<key>hash2</key>
<data>
rrduV5zf04VD45eRrmVgZHU3p2cwpXMkrOKPrzl9rws=
+ah6owUl7vg3gQFOROTixH6HUCV10sWTlwJm2VeeUkM=
</data>
</dict>
<key>IBGScreenshotVC-iPhone.nib</key>
<dict>
<key>hash</key>
<data>
FGTKtl6iNSybdHNSEi/0NJAuK2w=
0U5ZXkutFh6d0C6ImSda+rAJG1A=
</data>
<key>hash2</key>
<data>
mJvmu27zrEcrJp4H3K1Zwl4UHn3aL7QrhUC2nc/aNDs=
iecDt+4fuTEetS4wKAhLORN3Xbok52aUE5TwNCVxEDQ=
</data>
</dict>
<key>IBGUnnotifiedMessagesAlertView.nib</key>
<dict>
<key>hash</key>
<data>
ZAKkfR9S3cpqfdwlB7wzpSepHCM=
X7SAN1FnPIPUy8IjqZuCdOiO9Nc=
</data>
<key>hash2</key>
<data>
3zHw5vlblGmYUhHMTwGCrXvLakvHW+vd7jGTewTc67g=
HI3LruXemXwaoRv2hyBAjbka9wlFd5Pw8LiLD3U3YMU=
</data>
</dict>
<key>IBGVideoPlaybackViewController.nib</key>
<dict>
<key>hash</key>
<data>
CD9N9bjvfb5im9AKnDxfFEGthcE=
c+OFXtb6inLPxhtdPOwKAsaaSqs=
</data>
<key>hash2</key>
<data>
A+z3kamzSLlKIAurPwp9Qb1iCtH03nWp+39033K7rUE=
IbPYivYEkGtU1DqFPYOeI1575rX1VolhNGEjz+md5gg=
</data>
</dict>
<key>IBGVoiceNoteRecordingViewController-iPhone.nib</key>
<dict>
<key>hash</key>
<data>
GBsWztpnjiCcs3IlkSt42VdEMfM=
xN0kZeGdsSLVFBgn0paj3GXXuq8=
</data>
<key>hash2</key>
<data>
MzC3s/ATTAQeu7+S4w+frY/V68OyHPjUw1JGvawls2E=
/N6muEgD+FDC/ui/UfwTuLWSbuu2xMzc9MzoT+B/0XE=
</data>
</dict>
<key>InAppScreenshotPlaceholder.png</key>
@ -747,22 +747,22 @@
<dict>
<key>hash</key>
<data>
GHCidcSaD+2cceEF2qcLJhhapTo=
KnURQnAJj79EnjLNGP0Q3LMJmwY=
</data>
<key>hash2</key>
<data>
TkUHcaesnTObKjLQ7YwiXyLt7UaKrJ0Un6n2G6eaL8Y=
nW0gYK5E7htGqg+G8zpBYlwIlq5HTkgBbMXEAC6xZ2c=
</data>
</dict>
<key>InstabugDataModel.momd/InstabugDataModel 9.omo</key>
<dict>
<key>hash</key>
<data>
H/whqgeuGvPZ7BDRoSVl0cXJBTY=
4hEFvV3ocYp1c8WVzn9sE22vbEI=
</data>
<key>hash2</key>
<data>
tcN2gX9vM/GZmZKFe1XrGM4RFxqEwURtw4VRoy1aGJo=
PbSuoM4SjpOUeUEutkpJRZcWiqAY0L1xEKhPqVDgy48=
</data>
</dict>
<key>InstabugDataModel.momd/InstabugDataModel.mom</key>
@ -780,11 +780,11 @@
<dict>
<key>hash</key>
<data>
+CV51tQ/lVrsxeAN2FTKpQdrEIY=
eLNZfvHXZ3FE0Z92jFp4DwB6H2k=
</data>
<key>hash2</key>
<data>
/Ob+9vDLVMkfTuanj6oL0rVQ69jjpJTV+x00pz6KaTs=
IVF9vyvFOnDeEuhQibMs0Xc4qiqWdtAYBP3O1utMreU=
</data>
</dict>
<key>Instabug_dsym_upload.sh</key>
@ -802,11 +802,11 @@
<dict>
<key>hash</key>
<data>
3gojUGpJjLj84oaRBB8vZrueuUY=
H1q3z0BfwHD8dtxGCEFQf2sCGQg=
</data>
<key>hash2</key>
<data>
4WjY4jog21kRe8MwTj5riwGlrtv/021ACWwoimcP14k=
i3lXpmW7ZLqCHoTxSNbx22I3HbfFuHnpm4yp/l2lUec=
</data>
<key>optional</key>
<true/>
@ -848,11 +848,11 @@
<dict>
<key>hash</key>
<data>
yP9zvGkZqWrUill1L2BC8NEXEMY=
GJMj2OG2CH1A41AoxA/oblR+WHU=
</data>
<key>hash2</key>
<data>
3DMcBobOHRLdVFFF6fFwziFMZ6WMLzhTEVZvZLqQdRQ=
fHZ5Nbim6rcxzHeBK5KXZ3ErOoSa14z5hT2mlkgrxWM=
</data>
<key>optional</key>
<true/>
@ -861,11 +861,11 @@
<dict>
<key>hash</key>
<data>
EdrsbyGL/CAtlpedU90e/MQVjqA=
GrqLx+cgcd/agNKN3S0fCo9YCb8=
</data>
<key>hash2</key>
<data>
H4luiclU1DEOQamYsfnGi0jrzsN7QQioROfVX4zV2Fc=
NuVKsvXrBfJ5OGbQ+8P3D+q5qOmouHBXFXK3/zMIhfE=
</data>
<key>optional</key>
<true/>
@ -874,11 +874,11 @@
<dict>
<key>hash</key>
<data>
IBS3ihaaIZ3rWY/TQU3Rm0Ap5RQ=
USgdcyt/sGXdAXTW2uZWdokO4m0=
</data>
<key>hash2</key>
<data>
tDXNPvfMaw3TVGV08EM9v80bkR7yMgHAIW1/doS9XVo=
4egIf1V8HZkhPJyRQ7V2/dFWLW+pLOsIrHPPGhJ55L0=
</data>
<key>optional</key>
<true/>
@ -887,11 +887,11 @@
<dict>
<key>hash</key>
<data>
3rgJCN0d+gTVXrSnucK8aoeqPc8=
8GO5JX8vfCnxE+Vxglv7jyCtHLg=
</data>
<key>hash2</key>
<data>
RKCRtatqGgvFyCFnbrkvR+zqErjbNCOxur9eouOgod4=
Ty81HO85gxSwfXtXRMkU4Y3n4XABBIWvIGPGQa8NUv4=
</data>
<key>optional</key>
<true/>
@ -900,11 +900,11 @@
<dict>
<key>hash</key>
<data>
nOKMfZV8vBJV3bUesuG3sUVB5QY=
SIgfXBsAgGneVfSFzg6GTQ4P5QM=
</data>
<key>hash2</key>
<data>
ovEqntXgoaUkrHgnMuSaUiRJspHui4fTtKKG97FwKIM=
9jp9tS30WzrxZ14Mpf4mlu3S7KkgWk/Wybe9W4kqujY=
</data>
<key>optional</key>
<true/>
@ -913,11 +913,11 @@
<dict>
<key>hash</key>
<data>
1kic4BEG9AwwhTMWcAPXAoO441o=
n92ZNB92WJ68XghFklJhjIzUMhk=
</data>
<key>hash2</key>
<data>
daBkmqAZj15QvrC/grAQgRfSlYwtsHjoG2fc5T1W+6A=
qdom6CxfrdKCcWEHA7L2umVnEK/FRYIHGpFS292Wd+w=
</data>
<key>optional</key>
<true/>
@ -959,11 +959,11 @@
<dict>
<key>hash</key>
<data>
wkVq67ZrSyoQP4kVCQmGuA2XV+o=
lP/n4mvzeGBv/MObQxKBB1KzxaI=
</data>
<key>hash2</key>
<data>
EIUSQy7ZpqZs5Y/vv4XT/TP909aY7Z5Kuq/Dym6A08I=
YiEYBZZgHc6TZ/JtP8Qpq2z8YINaW0I/tTNR2tQyHeE=
</data>
<key>optional</key>
<true/>
@ -972,11 +972,11 @@
<dict>
<key>hash</key>
<data>
r4cbtG8ei7K9w5jw7M5pTdwpuHs=
Rbc5aUR0m+b9K0PKrswNZ0Dd2nw=
</data>
<key>hash2</key>
<data>
hYHWnxyxSkb4HUgoVjZBbe/Ss817H84JokMbeabWq1M=
8UmlCt+Jq5gCTZ5AuKmHMfNa3jFd4mdiJ1CogNVKCeE=
</data>
<key>optional</key>
<true/>
@ -985,11 +985,11 @@
<dict>
<key>hash</key>
<data>
dVmkenZWBzfXOWmcfGUSreMTFks=
gfvqc+3ChvTip4GyQbFH+/1AmaY=
</data>
<key>hash2</key>
<data>
GcfVwcw/VhL/6+UViEmmodL1Zjuf4AL8viXxUOm92q4=
n/rQg4Ywhck2EAGGQQ+dfp6ghNvvRdOPYinJ3dgyMf4=
</data>
<key>optional</key>
<true/>
@ -998,11 +998,11 @@
<dict>
<key>hash</key>
<data>
q2zujf8laSDZRQ5Mg4ipESChxvA=
dgTwT3uOdSTj8Zt3CiVkZ9dywqM=
</data>
<key>hash2</key>
<data>
dlEkI6nQBGiMLqTB6EJHVKHSezdkAAbJU5GYyMK8qYM=
QczFcBUKY+LqIsF6iIIYNLfEw/9iVDRQjKqYC2RCw5g=
</data>
<key>optional</key>
<true/>
@ -1011,11 +1011,11 @@
<dict>
<key>hash</key>
<data>
pllvMKr26wVjcTGimicIjaf7N+Q=
XM6tQKdTjSACAVzdFWQQCV51fVY=
</data>
<key>hash2</key>
<data>
6ILMfefuygQm4WvraQIK1PP4JJ5WYqlj0EiOdr6SPXo=
OZkwjK2v9qX3mZ6ltQdAw5oCGidF5G0PByHHg+ap89Q=
</data>
<key>optional</key>
<true/>
@ -1057,11 +1057,11 @@
<dict>
<key>hash</key>
<data>
vbFwr7WaUDkRdizHHQjX1zHM3Jk=
WGS7AjM/IfCnH82Egfg/K3Jcyh8=
</data>
<key>hash2</key>
<data>
TAwXisPELUCQf7bWY+7m+a0sBMsDutWsWTpobZsJCCM=
5WOhr0D+FcQW6FvaN2GM8kU0nlAOET3jjNPMUOM9THU=
</data>
<key>optional</key>
<true/>
@ -1081,11 +1081,11 @@
<dict>
<key>hash</key>
<data>
kn8F0ksUky9FP7TGdKi33BaF5is=
B0lp4t3vKViG4nYSPQNqZdcxEbw=
</data>
<key>hash2</key>
<data>
XxceSyUKj9dEwEdWGPbyYhtDfRvl8qYp5lxmrX2pfAc=
0gu9W3Hq/KlqezpEBznGyM3UMOpZGujGriFQzERSNPo=
</data>
<key>optional</key>
<true/>
@ -1094,11 +1094,11 @@
<dict>
<key>hash</key>
<data>
6tkM0vQHZDyf1Ukj3Qb7Xvng1RE=
YFHErfupJsqzpwB3ZNAQ1ESpN1k=
</data>
<key>hash2</key>
<data>
7vqOcbZ/eQi5JLw3NzMa8ba3zcxW1EAJAJ23tyyOmxo=
ueFtnmz42w0VHzpybkFRUmHn/Rxc+58dJ8v+mBvgplA=
</data>
<key>optional</key>
<true/>
@ -1107,11 +1107,11 @@
<dict>
<key>hash</key>
<data>
KE5akKQxqJdjoBgUt6QQ7OWlrMs=
fDL0OF3IJjb4bfs28b85vmnbdUo=
</data>
<key>hash2</key>
<data>
nA1bqQjNktWHND4aoZdGJBktYAMmag1I8A3H8mdeIFI=
cl4vXtu+KHfRtj5y2gle8mWRrfYmk67XGX4I9uxnK6c=
</data>
<key>optional</key>
<true/>
@ -1131,11 +1131,11 @@
<dict>
<key>hash</key>
<data>
FBaeCY0M3+5BhuqPFIoEDviO0UM=
JpMX8SwEi/q5SWkMHiEIFFUqBbg=
</data>
<key>hash2</key>
<data>
xplNn+27ypnCdceJjSuuBY1J1QmqvXqZx4LN3u3/2R4=
rMzZvVmOWMCJCZOaLssxDUg4s12KjKEL5y6CF7NTJqU=
</data>
<key>optional</key>
<true/>
@ -1155,11 +1155,11 @@
<dict>
<key>hash</key>
<data>
ydoP0Bc2D4bqs36Qz6liDaSwO5Q=
YpVuKpA41/5GeQYK2nWbiuCexUY=
</data>
<key>hash2</key>
<data>
H3Cmwd8hYB8e3n9jKUDxpLkJjqkR4bXVcvbjiPvDYJs=
DRhfoCae1zPQRDmmu6SAjbHzmTWN1Vbu0rRLGz9pZxs=
</data>
<key>optional</key>
<true/>
@ -1201,11 +1201,11 @@
<dict>
<key>hash</key>
<data>
zYDIbOl9ftgcrkcvpnemFVkXv8c=
W2hCi/mRBpnxAHYqRSKLBtguJS4=
</data>
<key>hash2</key>
<data>
4RANfKhXKNXDOdjMAuDCaAXU7ZUeEl4dseHhODAPJE8=
C16t4HeCkC4qIRCV544uxbSsChg4pVa2Z42R5YpdhO4=
</data>
<key>optional</key>
<true/>
@ -1225,11 +1225,11 @@
<dict>
<key>hash</key>
<data>
rpN1o8ODKCqo55DTscOdMBGO/Ek=
Dw3Ztrnxn25NLrxYpFKBBJ3X658=
</data>
<key>hash2</key>
<data>
3pjsZeg3HrpVL5Qi9YX0cUvZXdSf7HbvyouUAhB3DIA=
fdxrDf6D+5ZUvIHpTqlvYIkqR5+1C+zy+Dbf2oEm1sk=
</data>
<key>optional</key>
<true/>
@ -1238,11 +1238,11 @@
<dict>
<key>hash</key>
<data>
N8frfGuvvleGYZR/5DZbXhaltNw=
NB/zpqzhCvT4PhvG46GtMiq8JT4=
</data>
<key>hash2</key>
<data>
XbMyUa81yMZm4Jr9PoIJg0yfMNg6ys+RhzwRE27s4ak=
NEm8KMIZN5rHFTKD+YLcqPe5DswL9zXeVjyDw9v3VCU=
</data>
<key>optional</key>
<true/>
@ -1251,11 +1251,11 @@
<dict>
<key>hash</key>
<data>
4uY9rr9MX+77RBd3zYTDj6gSfag=
q4tvTeIr5ALJO+4wCbvgnOZ/iF4=
</data>
<key>hash2</key>
<data>
V1Q5xppI7w1G4w4LlRMoelVAUTOXkEc1IMeqE8K6lsg=
vC7L3ckUIvkp8LwIP4AiuJLBZ0gXuJISBvu4hoD17M4=
</data>
<key>optional</key>
<true/>

View File

@ -9,6 +9,7 @@
#import <asl.h>
#import <React/RCTLog.h>
#import <os/log.h>
#import <InstabugCore/IBGTypes.h>
@implementation InstabugReactBridge
@ -49,6 +50,10 @@ RCT_EXPORT_METHOD(dismiss) {
[Instabug dismiss];
}
RCT_EXPORT_METHOD(setReproStepsMode:(IBGUserStepsMode)reproStepsMode) {
[Instabug setReproStepsMode:reproStepsMode];
}
RCT_EXPORT_METHOD(setFileAttachment:(NSString *)fileLocation) {
[Instabug setFileAttachment:fileLocation];
}
@ -61,6 +66,14 @@ RCT_EXPORT_METHOD(IBGLog:(NSString *)log) {
[Instabug IBGLog:log];
}
RCT_EXPORT_METHOD(showSurveyWithToken:(NSString *)surveyToken) {
[Instabug showSurveyWithToken:surveyToken];
}
RCT_EXPORT_METHOD(hasRespondedToSurveyWithToken:(NSString *)surveyToken callback:(RCTResponseSenderBlock)callback) {
callback(@[@([Instabug hasRespondedToSurveyWithToken:surveyToken])]);
}
RCT_EXPORT_METHOD(setUserStepsEnabled:(BOOL)isUserStepsEnabled) {
[Instabug setUserStepsEnabled:isUserStepsEnabled];
}
@ -175,17 +188,26 @@ RCT_EXPORT_METHOD(setString:(NSString*)value toKey:(IBGString)key) {
[Instabug setString:value toKey:key];
}
RCT_EXPORT_METHOD(setAttachmentTypesEnabled:(BOOL)screenShot
extraScreenShot:(BOOL)extraScreenShot
galleryImage:(BOOL)galleryImage
voiceNote:(BOOL)voiceNote
screenRecording:(BOOL)screenRecording) {
[Instabug setAttachmentTypesEnabledScreenShot:screenShot
extraScreenShot:extraScreenShot
galleryImage:galleryImage
voiceNote:voiceNote
screenRecording:screenRecording];
}
RCT_EXPORT_METHOD(setEnabledAttachmentTypes:(BOOL)screenShot
extraScreenShot:(BOOL)extraScreenShot
galleryImage:(BOOL)galleryImage
screenRecording:(BOOL)screenRecording) {
IBGAttachmentType attachmentTypes = 0;
if(screenShot) {
attachmentTypes = IBGAttachmentTypeScreenShot;
}
if(extraScreenShot) {
attachmentTypes |= IBGAttachmentTypeExtraScreenShot;
}
if(galleryImage) {
attachmentTypes |= IBGAttachmentTypeGalleryImage;
}
if(screenRecording) {
attachmentTypes |= IBGAttachmentTypeScreenRecording;
}
[Instabug setEnabledAttachmentTypes:attachmentTypes];
}
RCT_EXPORT_METHOD(setChatNotificationEnabled:(BOOL)isChatNotificationEnabled) {
[Instabug setChatNotificationEnabled:isChatNotificationEnabled];
@ -370,6 +392,10 @@ RCT_EXPORT_METHOD(isRunningLive:(RCTResponseSenderBlock)callback) {
@"dismissTypeCancel": @(IBGDismissTypeCancel),
@"dismissTypeAddAtttachment": @(IBGDismissTypeAddAttachment),
@"reproStepsEnabled": @(IBGUserStepsModeEnable),
@"reproStepsDisabled": @(IBGUserStepsModeEnabledWithNoScreenshots),
@"reproStepsEnabledWithNoScreenshot": @(IBGUserStepsModeDisable),
@"reportTypeBug": @(IBGReportTypeBug),
@"reportTypeFeedback": @(IBGReportTypeFeedback),
@ -440,9 +466,6 @@ RCT_EXPORT_METHOD(isRunningLive:(RCTResponseSenderBlock)callback) {
@"screenRecording": @(IBGStringScreenRecording),
@"image": @(IBGStringImage),
@"surveyEnterYourAnswer": @(IBGStringSurveyEnterYourAnswerPlaceholder),
@"surveyNoAnswerTitle": @(IBGStringSurveyNoAnswerTitle),
@"surveyNoAnswerMessage": @(IBGStringSurveyNoAnswerMessage),
@"surveySubmitTitle": @(IBGStringSurveySubmitTitle),
@"videPressRecord": @(IBGStringVideoPressRecordTitle),
@"collectingDataText": @(IBGStringCollectingDataText)
};

View File

@ -34,6 +34,13 @@ RCT_ENUM_CONVERTER(IBGDismissType, (@{
@"dismissTypeAddAtttachment": @(IBGDismissTypeAddAttachment)
}), IBGDismissTypeSubmit, integerValue)
RCT_ENUM_CONVERTER(IBGUserStepsMode, (@{
@"reproStepsEnabled": @(IBGUserStepsModeEnable),
@"reproStepsDisabled": @(IBGUserStepsModeDisable),
@"reproStepsEnabledWithNoScreenshot": @(IBGUserStepsModeEnabledWithNoScreenshots)
}), IBGUserStepsModeEnable, integerValue)
RCT_ENUM_CONVERTER(IBGReportType, (@{
@"reportTypeBug": @(IBGReportTypeBug),
@"reportTypeFeedback": @(IBGReportTypeFeedback)
@ -115,9 +122,6 @@ RCT_ENUM_CONVERTER(IBGString, (@{
@"screenRecording": @(IBGStringScreenRecording),
@"image": @(IBGStringImage),
@"surveyEnterYourAnswer": @(IBGStringSurveyEnterYourAnswerPlaceholder),
@"surveyNoAnswerTitle": @(IBGStringSurveyNoAnswerTitle),
@"surveyNoAnswerMessage": @(IBGStringSurveyNoAnswerMessage),
@"surveySubmitTitle": @(IBGStringSurveySubmitTitle),
@"videPressRecord": @(IBGStringVideoPressRecordTitle),
@"collectingDataText": @(IBGStringCollectingDataText)
}), IBGStringShakeHint, integerValue);

View File

@ -1,6 +1,6 @@
{
"name": "instabug-reactnative",
"version": "2.1.2",
"version": "2.5.1",
"description": "React Native plugin for integrating the Instabug SDK",
"main": "index.js",
"repository": {