react-native-doc-viewer icon indicating copy to clipboard operation
react-native-doc-viewer copied to clipboard

Crash or Freeze on ios

Open amitbravo opened this issue 7 years ago • 3 comments

"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.

screen shot 2018-04-30 at 6 13 00 pm

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) 

amitbravo avatar Apr 30 '18 12:04 amitbravo

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.

amitbravo avatar Apr 30 '18 20:04 amitbravo

use "$ react-native link react-native-doc-viewer" ,it is simple i think.

Kylin93CN avatar Jul 18 '18 09:07 Kylin93CN

@amitbravo exactly same issue.

but your solution is not working. any ideas?

scanifydevo avatar Nov 08 '18 19:11 scanifydevo