蓝牙侦听器在调试模式下工作,在发布模式下不工作/ IPA react native app

时间:2019-08-09 00:38:27

标签: react-native react-native-ios ipa

我有一个蓝牙侦听器,在我的iOS应用程序的调试模式下可以正常工作。但是,当我为其构建IPA时。它不再起作用。

这里是听众

   setupBluetooth() {
        console.log('the setup')
        this.aDeviceStatusChanged = OVBluetoothEventEmitter.addListener('oliveDeviceStatusChanged', event => {
            console.log('the event', event)
            if (EventUtils.eventCodeEquals(event, 'DISCONNECTED')) {
                NavUtils.resetTo(this.navigator, 'ListPage', { originPoint: true });
                console.log('last chance')
            }
        });
    }

当我通过IPA运行应用程序时,是什么导致监听器失败?

这是更新的代码:

setupBluetooth() {
        console.log('the setup')
        this.somethingDeviceStatusChanged = SomethingBluetoothEventEmitter.addListener('somethingDeviceStatusChanged', event => {

            console.log('the event', event)
            console.log('the event', event.code)
            let tempStr = JSON.stringify(event.code);

            if (tempStr === '"DISCONNECTED"') {



                NavUtils.resetTo(this.navigator, 'somethingListPage', { originPoint: true });
                console.log('last chance')


            }
        })
    }

1 个答案:

答案 0 :(得分:0)

事实证明,调试模式比应用程序的Release / IPA版本运行慢得多。另外,由于Java / Objective-C是多线程的,因此内存释放几乎是即时发生的,而在Javascript(单线程)中则存在一个队列。结果是在释放模式下运行时,内存释放在Java / Objective C端发生得如此之快,以至于Javascript代码运行时,该事件/变量不再存在。解决此问题的方法是创建一个变量来保存事件,以便即使在内存释放时,JS代码也要读取一些内容。