react-native-doc-viewer
react-native-doc-viewer copied to clipboard
Crash or Freeze on ios
"react-native": "^0.55.2", "react": "^16.3.1", "react-native-doc-viewer" : "2.7.8" and 2.7.7 and 2.7.3 tested too.
soon I click on click button , it throws this into xcode but no error in debugger or in emulator , either it makes app freeze or crash. Android working fine.

code I tested
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
Platform,
Button,
Alert,
ActivityIndicator,
NativeAppEventEmitter,
DeviceEventEmitter,
NativeModules,
NativeEventEmitter,
TouchableHighlight
} from 'react-native';
import OpenFile from 'react-native-doc-viewer';
var RNFS = require('react-native-fs');
var SavePath = Platform.OS === 'ios' ? RNFS.MainBundlePath : RNFS.DocumentDirectoryPath;
export default class App extends Component<Props> {
constructor(props) {
super(props);
this.state = {
animating: false,
progress: "",
donebuttonclicked: false,
}
this.eventEmitter = new NativeEventEmitter(NativeModules.RNReactNativeDocViewer);
this.eventEmitter.addListener('DoneButtonEvent', (data) => {
/*
*Done Button Clicked
* return true
*/
console.log(data.close);
this.setState({donebuttonclicked: data.close});
})
//this.didPressToObjcButton = this.didPressToObjcButton.bind(this);
}
componentDidMount(){
// download progress
// this.eventEmitter.addListener(
// 'RNDownloaderProgress',
// (Event) => {
// console.log("Progress - Download "+Event.progress + " %")
// this.setState({progress: Event.progress + " %"});
// }
//
// );
}
componentWillUnmount (){
this.eventEmitter.removeListener();
}
clickButton(){
console.log('hithere')
OpenFile.openDoc([{
url:"http://www.pdf995.com/samples/pdf.pdf",
fileNameOptional:"testfilename"
}], (error, url) => {
if (error) {
this.setState({animating: false});
} else {
this.setState({animating: false});
console.log(url)
}
})
}
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Button
onPress={()=>this.clickButton()}
title="Learn More"
color="#841584"
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,
},
});
crash with 2.7.3 and 2.7.8 with following error
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'You must override the `supportedEvents` method of fir_0x600000289fb0_RNReactNativeDocViewer'
*** First throw call stack:
(
0 CoreFoundation 0x0000000110d971e6 __exceptionPreprocess + 294
1 libobjc.A.dylib 0x000000011029e031 objc_exception_throw + 48
2 CoreFoundation 0x0000000110d9c472 +[NSException raise:format:arguments:] + 98
3 Foundation 0x000000010fd7764f -[NSAssertionHandler handleFailureInFunction:file:lineNumber:description:] + 165
4 myapp 0x00000001072c4fe5 +[RCTEventEmitter initialize] + 325
5 libobjc.A.dylib 0x000000011029eb04 CALLING_SOME_+initialize_METHOD + 19
6 libobjc.A.dylib 0x000000011029ee9e _class_initialize + 276
7 libobjc.A.dylib 0x000000011029c2f3 object_setClass + 90
8 myapp 0x00000001078b1a1b -[FIRObjectSwizzler swizzle] + 145
9 myapp 0x000000010784b6ae __52-[FPRNSURLSessionDelegateInstrument registerObject:]_block_invoke + 888
10 libdispatch.dylib 0x00000001124ec848 _dispatch_client_callout + 8
11 libdispatch.dylib 0x00000001124f35b8 _dispatch_queue_barrier_sync_invoke_and_complete + 374
12 myapp 0x000000010784b30f -[FPRNSURLSessionDelegateInstrument registerObject:] + 121
13 myapp 0x000000010784e8c4 __InstrumentSessionWithConfigurationDelegateDelegateQueue_block_invoke + 225
14 myapp 0x0000000107222f25 -[RNReactNativeDocViewer hitServerForUrl:] + 165
15 myapp 0x000000010721fadf -[RNReactNativeDocViewer openDoc:callback:] + 223
16 CoreFoundation 0x0000000110d1accc __invoking___ + 140
17 CoreFoundation 0x0000000110d1ab84 -[NSInvocation invoke] + 308
18 CoreFoundation 0x0000000110d338d6 -[NSInvocation invokeWithTarget:] + 54
19 myapp 0x00000001072c487c -[RCTModuleMethod invokeWithBridge:module:arguments:] + 2796
20 myapp 0x000000010737a2f2 _ZN8facebook5reactL11invokeInnerEP9RCTBridgeP13RCTModuleDatajRKN5folly7dynamicE + 786
21 myapp 0x0000000107379e1f _ZZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEiENK3$_0clEv + 127
22 myapp 0x0000000107379d99 ___ZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEi_block_invoke + 25
23 libdispatch.dylib 0x00000001124eb807 _dispatch_call_block_and_release + 12
24 libdispatch.dylib 0x00000001124ec848 _dispatch_client_callout + 8
25 libdispatch.dylib 0x00000001124f792b _dispatch_main_queue_callback_4CF + 628
26 CoreFoundation 0x0000000110d59c99 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
27 CoreFoundation 0x0000000110d1dea6 __CFRunLoopRun + 2342
28 CoreFoundation 0x0000000110d1d30b CFRunLoopRunSpecific + 635
29 GraphicsServices 0x0000000113654a73 GSEventRunModal + 62
30 UIKit 0x000000010d1dd0b7 UIApplicationMain + 159
31 myapp 0x0000000106fc8abf main + 111
32 libdyld.dylib 0x0000000112569955 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
it may sound stupid but I found a solution for this, I do not know how it worked. I was using react-native-firebase too in the podfile . instead of using all modules as below
pod 'Firebase/Core'
pod 'Firebase/AdMob'
pod 'Firebase/Analytics'
pod 'Firebase/Auth'
pod 'Firebase/Crash'
pod 'Firebase/Database'
pod 'Firebase/DynamicLinks'
pod 'Firebase/Messaging'
pod 'Firebase/RemoteConfig'
pod 'Firebase/Storage'
pod 'Firebase/Firestore'
pod 'Firebase/Performance'
I kept only essential modules as
pod 'Firebase/Core'
pod 'Firebase/Auth'
pod 'Firebase/Database'
pod 'Firebase/Messaging'
pod 'Firebase/Storage'
pod 'Firebase/Firestore'
I deleted pod folder , reinstall pod and it worked.
use "$ react-native link react-native-doc-viewer" ,it is simple i think.
@amitbravo exactly same issue.
but your solution is not working. any ideas?