Я хочу использовать Jitsi-Meet (библиотека видеозвонков) с Realm. Когда я запускаю приложение на iOS, Realm не работает. Это показывает следующую ошибку:
2018-12-28 16:22:34.504 [error][tid:main][RCTModuleData.mm:179] Realm has no setter or ivar for its bridge, which is not permitted. You must either @synthesize the bridge property, or provide your own setter method.
Realm работает нормально, если я удаляю Jisti-Meet Library. И Jitsi-Meet прекрасно работает и без царства.
Шаги для воспроизведения
- Создание нового собственного реактивного приложения:
react-native init AwesomeProject
- Установить realm-js:
npm install realm --save
и react-native link realm
- Установить React Native Jisti Meet:
npm install react-native-jitsi-meet --save
- Под настройкой сборки установите Разбор мертвого кода на Нет, установите Включите битовый код на Нет и Всегда вставляйте стандартные библиотеки Swift на Да
- добавьте
node_modules/react-native-jitsi-meet/ios/WebRTC.framework
и node_modules/react-native-jitsi-meet/ios/JitsiMeet.framework
к бинарным файлам для встраивания.
- выберите
Build Settings
, найдите Search Paths
. Отредактируйте ОБА Framework Search Paths
и Library Search Paths
. и добавьте путь к ОБАМ разделам: $(SRCROOT)/../node_modules/react-native-jitsi-meet/ios
с recursive
Теперь запустите приложение, и приложение покажет ошибку.
Пример кода
имя файла: App.js
import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View, Button} from 'react-native';
import Realm from 'realm';
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',
});
type Props = {};
export default class App extends Component<Props> {
constructor(props) {
super(props);
this.state = { realm: null };
}
componentWillMount() {
Realm.open({
schema: [{name: 'Dog', properties: {name: 'string'}}]
}).then(realm => {
realm.write(() => {
realm.create('Dog', {name: 'Rex'});
});
this.setState({ realm });
});
}
render() {
const info = this.state.realm
? 'Number of dogs in this Realm: ' + this.state.realm.objects('Dog').length
: 'Loading...';
return (
<View style={styles.container}>
<Text style={styles.welcome}>Welcome to React Native!</Text>
<Text style={styles.instructions}>To get started, edit App.js</Text>
<Text style={styles.instructions}>{instructions}</Text>
<Button title="Video"
// onPress = {() => initiateVideoCall()}
/>
<Text style={styles.welcome}>
{info}
</Text>
</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,
},
});
Версия Realm и Tooling
- Realm JS SDK Версия: 2.21.1 (более низкие версии также имеют ту же проблему)
- Узел или React Native: RN 0,57,8
- Клиентская ОС и версия: iOS Real Device - 12.1.2
- MacOS: 10.13.6 High Sierra
- Какой отладчик для React Native: Нет