Bắt đầu
Chúng tôi hỗ trợ tạo ứng dụng bằng cả React Native CLI và Expo CLI.
Cài đặt
Thiết lập môi trường phát triển
Phụ thuộc
Cài đặt gói SDK cần thiết trong dự án React Native của bạn.
- RN CLI
- Expo
yarn add @communi/chat-react-native
# or
npm install @communi/chat-react-native
npx expo install @piscale/chat-expo
Linking
React Native SDKs của chúng tôi bao gồm cả phụ thuộc bắc cầu Native
và được cài đặt cùng với gói @communi/chat-react-native
. Tuy nhiên ReactNative không nhận diện được chúng để Auto-Linking
. Để giải quyết hãy cập nhật mục phụ thuộc của react-native.config.js
như sau:
module.exports = {
dependencies: {
'@communi/mqtt-client-react-native': {},
'@communi/keyboard-area-react-native': {},
},
};
PiScale Chat SDK yêu cầu một số phụ thuộc ngang hàng cần thiết để tận dụng tất cả các tính năng sẵn có.
- RN CLI
- Expo
- @react-native-camera-roll/camera-roll
- @react-native-clipboard/clipboard
- @react-native-community/netinfo
- react-native-fs
- react-native-image-crop-picker
- react-native-haptic-feedback
- react-native-svg
- react-native-date-picker
- react-native-document-picker
- react-native-video
- realm
- react-native-reanimated
- react-native-gesture-handler
- react-native-share
- RN CLI
- Expo
yarn add @react-native-camera-roll/camera-roll @react-native-clipboard/clipboard @react-native-community/netinfo react-native-fs react-native-image-crop-picker react-native-haptic-feedback react-native-svg react-native-date-picker react-native-document-picker react-native-video realm react-native-reanimated react-native-gesture-handler react-native-share
# or
npm install @react-native-camera-roll/camera-roll @react-native-clipboard/clipboard @react-native-community/netinfo react-native-fs react-native-image-crop-picker react-native-haptic-feedback react-native-svg react-native-date-picker react-native-document-picker react-native-video realm react-native-reanimated react-native-gesture-handler react-native-share
npx expo install expo-media-library expo-image-picker expo-clipboard @react-native-community/netinfo expo-file-system expo-haptics react-native-svg @react-native-community/datetimepicker react-native-modal-datetime-picker expo-document-picker expo-av realm react-native-reanimated react-native-gesture-handler expo-sharing
R8 / Proguard
Nếu cờ minifyEnabled
trong dự án Android của bạn được bật hãy thêm các rules sau đây:
-keep class io.realm.react.util.SSLHelper
MQTT
Trên nền tảng iOS
chúng tôi sử dụng thư viện CocoaMQTT với lõi là thư viện MqttCocoaAsyncSocket là một static library
vậy nên chúng ta cần cấu hình như sau:
- RN CLI
- Expo
...
target 'ChatApp' do
...
pod "MqttCocoaAsyncSocket", :modular_headers => true
...
end
...
yarn add expo-build-properties --dev
{
"expo": {
...,
"plugins": [
[
"expo-build-properties",
{
"ios": {
...,
"extraPods": [
{
"name": "MqttCocoaAsyncSocket",
"modular_headers": true
}
]
},
...
}
]
]
}
}
Sau đó, chúng ta cập nhật Pod.
npx pod-install ios
Tương thích phiên bản
- RN CLI
- Expo
piscale-chat-react-native | react-native (yêu cầu tối thiểu) |
---|---|
1.0.1 | 0.72.0 |
piscale-chat-expo | expo (yêu cầu tối thiểu) |
---|---|
1.0.1 | 49.0.0 |
Chúng tôi khuyến nghị ứng dụng của bạn nên cập nhật phiên bản react-native
thường xuyên và tối thiểu ở phiên bản 0.72.0
bởi các sự thay đổi về việc sửa/cập nhật này sẽ mang đến cho người dùng một trải nghiệm tốt hơn ở tính năng Chat.
v0.72.5: Fix null crash when using maintainVisibleContentPosition on Android
v0.72.4: ANR when having an inverted FlatList on android API 33+
v0.72.2: Fix onChangeText not firing when clearing the value of TextInput with multiline=true on iOS
v0.72.0: Add maintainVisibleContentPosition support on Android
Tương thích nền tảng
- Chúng tôi chỉ hỗ trợ 2 nền tảng
Android
vàiOS
cho React Native SDK. - Chúng tôi không hỗ trợ cho
Expo Go
vì một số gói SDK của chúng tôi có thành phần native.
Cấu hình bổ sung
Đối với một số phụ thuộc được liệt kê bên dưới, cần có các bước cấu hình bổ sung:
react-native-reanimated
- Hướng dẫn
module.exports = {
...
plugins: [
...
'react-native-reanimated/plugin',
],
};
Lưu ý các phiên bản react-native
đã được react-native-reanimated
hỗ trợ. Vui lòng tham khảo: Link
react-native-gesture-handler
- Hướng dẫn
RNGH yêu cầu phải được import ở đầu tệp trước bất kỳ thứ gì khác, đây thường là tệp App.tsx
hoặc index.js
của bạn.
import 'react-native-gesture-handler';
import {AppRegistry} from 'react-native';
import App from './App';
import {name as appName} from './app.json';
AppRegistry.registerComponent(appName, () => App);
Và wrap entry point của bạn bằng <GestureHandlerRootView>
import { GestureHandlerRootView } from 'react-native-gesture-handler';
export default function App() {
return (
<GestureHandlerRootView>{/* Your app code goes here */}</GestureHandlerRootView>
);
}
react-native-safe-area-context
- Hướng dẫn
Runtime Permission
- RN CLI
- Expo
- Android
- iOS
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<key>NSCameraUsageDescription</key>
<string>PiScale Chat would like to use your camera</string>
<key>NSMicrophoneUsageDescription</key>
<string>PiScale Chat would like to your microphone (for videos)</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>PiScale Chat would like access to your photo gallery</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>PiScale Chat would like access to your photo gallery</string>
{
"expo": {
...,
"ios": {
...,
"infoPlist": {
"NSCameraUsageDescription": "PiScale Chat would like to use your camera",
"NSMicrophoneUsageDescription": "PiScale Chat would like to your microphone (for videos)",
"NSPhotoLibraryAddUsageDescription": "PiScale Chat would like access to your photo gallery",
"NSPhotoLibraryUsageDescription": "PiScale Chat would like access to your photo gallery"
},
},
"android": {
...,
"permissions": [
"android.permission.INTERNET",
"android.permission.READ_MEDIA_IMAGES",
"android.permission.READ_MEDIA_VIDEO",
"android.permission.WRITE_EXTERNAL_STORAGE",
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.CAMERA",
"android.permission.POST_NOTIFICATIONS"
],
},
}
}
Font
- Tải và giải nén vào thư mục tương ứng ./assets/fonts
- Cấu hình
- RN CLI
- Expo