Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/callinapp/callinapp-react-native
https://github.com/callinapp/callinapp-react-native
Last synced: 10 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/callinapp/callinapp-react-native
- Owner: callinapp
- License: mit
- Created: 2020-10-17T15:46:46.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2022-03-17T18:07:38.000Z (almost 3 years ago)
- Last Synced: 2024-04-23T20:55:13.083Z (10 months ago)
- Size: 508 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
## Introductions:
The Call In App JavaScript SDK for integrating the Call In App features to your React Native app.## Peer Dependencies
The following dependencies should be installed manually if they are not installed automatically along with `@callinapp/react-native`:`react-native-webrtc`
`@react-native-community/async-storage`
`react-native-incall-manager`
`react-native-get-random-values`
## Important notes
Must add this line before `import @callinapp/react-native``import 'react-native-get-random-values'`
## SDK usage guidelines:
Main components:- **CallInAppSession**: For initializing session from client to Call In App server.
- **Constructor**:
CallInAppSession(user)
- `user` options:
+ wssUrl: Socket URL to the Call In App Server
+ extension: Extenstion name
+ domain: Domain name
+ password: Plain password
+ callOptions: {
callerIdName: Caller Id Name
callerIdNumber: Call Id Number
}
+ userInfo: {
// Other info here. Ex. email
}
+ autoReconnect: Default: true
+ autoRecoveryCall: Auto recovery the call when app closed unexpectedly. Default: true- **Properties**:
- isLoggedIn: Whether user logged in.
- **Methods**:
- connect(): Connect to the Call In App server with `user` options
- close(): Close the connection to the Call In App server.
- on(EVENT_NAME, callback): Start listening a **CallInAppEvent**:
+ EVENT_NAME: CallInAppEvent event
+ callback(err, data): Callback function for handling the event.
- off(EVENT_NAME[, callback]): Stop listening a **CallInAppEvent**
- testSpeed(): Test connection speed to the Call In App server. The data will be returned into Promise object or sent to **CallInAppEvent.ON_SPEED_CHANGE**.
+ Return: `Promise({ upDur, downDur, upKps, downKps })`
+ `on(CallInAppEvent.ON_SPEED_CHANGE, (err, { upDur, downDur, upKps, downKps } ))`
- newCall(options):
+ options:
{
destinationNumber: (required) Extension or number
callerIdName: (optional)
callerIdNumber: (optional)
}- **CallInAppEvent**: Events will be emitted during the Call In App Session.
We can catch those events with callback functions:
**- Ex:**
const session = new CallInAppSession(user);
session.on(CallInAppEvent., (err, data) => {
console.log(err, data);
})
- ON_READY
- ON_CLOSED
- ON_ERROR
- ON_RETRYING
- ON_LOGIN_ERROR
- ON_LOGIN_SUCCESS
- ON_SPEED_CHANGE:
- ON_USER_MEDIA_ERROR
- ON_USER_PEER_ERROR
- ON_INCOMING_CALL
- ON_RECOVERY_CALL
- ON_CALL_LOCAL_STREAM
- ON_CALL_REMOTE_STREAM
- ON_CALL_STATE_UPDATE
- ON_CONFERENCE_JOINED
- ON_CONFERENCE_LEFT
- ON_CONFERENCE_MEMBER_JOINED
- ON_CONFERENCE_MEMBER_LEFT
- ON_CONFERENCE_MEMBER_UPDATED
- ON_CONFERENCE_MEMBER_CLEARED
- ON_CONFERENCE_CHAT_MESSAGE
- ON_CHAT_MESSAGE
- **CallState**:
- NEW
- REQUESTING
- TRYING
- RECOVERING
- RINGING
- ANSWERING
- EARLY
- ACTIVE
- HELD
- HANGUP
- DESTROYED
- PURGE
- **CallInAppUtil**: Some utility functions:
- mediaDevices:
- enumerateDevices(kind)
+ kind: `audioinput`, `videoinput`, `audiooutput`
- checkUserMediaPermission(constraints):
+ constraints: Refer to [MediaStreamConstraints](https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamConstraints)- **Call**:
- **Properties**:
+ id
+ localStream
+ remoteStream
+ state: **CallState**
+ activeTime: Active time in milliseconds since January 1, 1970 (midnight UTC/GMT).
+ screenShareCall
+ callType: inbound/outbound
+ options
+ isConference: Whether call is a conference.
- **Functions**
+ answer(options)
+ hangup(options)
+ toggleMuteMic()
+ muteMic()
+ unmuteMic()
+ toggleMuteCam()
+ muteCam()
+ unmuteCam()
+ sendDtmf()
+ toggleHold()
+ hold()
+ unhold()
+ switchCamera()
+ toggleSpeaker()
+ useSpeaker()
+ disuseSpeaker()- **Conference**:
- **Properties**:
+ id: Conference id
+ members: Conference members
+ role: Conference role: `moderator/participant`
- **Functions**
+ sendChat(message, type = 'message'): Send a chat message to conference channel.
- **Moderator Funtions**
+ listVideoLayouts()
+ setVideoLayout(layoutName)
+ kick(memberId)
+ muteMic(memberId)
+ muteCam(memberId)
+ videoFloor(memberId)
+ volumeDown(memberId)
+ volumeUp(memberId)###***Issues and Resolutions:
1. React Native from v0.62 has issues with Flipper causing Android app crashes.
-> Add `android.enableDexingArtifactTransform.desugaring=false` to `gradle.properties` file2. Permissions required for access device camera and microphone:
- Android: Add to `AndroidManifest.xml` file:
``
``
``
``
``
``
``
``
- iOS: Add to `Info.plist` file:
`NSCameraUsageDescription`
`Camera Permission`
`NSMicrophoneUsageDescription`
`Microphone Permission`
##Examples:
Please refer to [examples](examples) for detailed usage.
If you need an account for running the example, please email to [Call In App Team](mailto:[email protected]?subject=[CallInApp]%Example%20Account%20Request).##
*** **TypeScript** support: Currently the SDK does not support TypeScript. We'll add it soon.