Skip to content

develotex/comma_ios_audio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Comma SDK (by Develotex)

Version License Platform

Comma SDK is a simple solution to integrate audio and video calls into your applications. Contacts us via email [email protected] to get your own api keys. Getting api keys automatically on develotex.io - coming soon.

Requirements

Minimum ios 13 support
Set `Enable Bitcode` to No 

Installation

Comma is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'Comma'

Initialization

import Comma

var commaManager: CommaManager? = nil

commaManager = CommaManager.shared

Then configure Comma instance when your app has started:

Register a new device

commaManager?.configureService (
  localUserId: <USER_ID>, 
  userName: <USER_NAME>, 
  projectId: <PROJECT_ID>, 
  projectApiKey: <PROJECT_KEY>,
  voipToken: <VOIP_TOKEN?>, 
  isApnsSandbox: <IS_APNSSANBOX>

Login

commaManager?.configureService (
  withDeviceSecret: <DEVICE_SECRET>, 
  deviceId: <DEVICE_ID>, 
  voipToken: <VOIP_TOKEN?>, 
  isApnsSandbox: <IS_APNSSANBOX>
)

Please note that The registration method is called after connecting to the signaling server. This method is a direct alternative to the Login method, with the only difference that Login authorizes the connection for an existing device, and Register creates a new device and automatically authorizes the connection for it. Thus, you cannot call Login after Register.

Please call closeConnection() in method applicationDidEnterBackground to properly close all connections & configure your session anew in method applicationDidBecomeActive

Callbacks

commaManager?.register = { userId in
  print("your id \(userId)")
}

Receive Incoming Call

commaManager?.isReceiveIncomingCall = { incomingCall in
print("Incoming Call \(incomingCall)")
}

APNS Push

register voip push token

func pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials: PKPushCredentials, for type: PKPushType) {
  if pushCredentials.token.count == 0 { return }
  else if type == PKPushType.voIP {
    let tokenData = pushCredentials.token
    let voipToken = tokenData.map { String(format: "%02.2hhx", $0) }.joined()
    commaManager?.registerVoipPushNotification(voipToken: voipToken, isApnsSandbox: true)
  }
}

receive voip push token

func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) {
  if type == .voIP {
  commaManager.didReceiveIncomingPushWith(dictionaryPayload: payload.dictionaryPayload, withCallKit: true)
  }
}

If you are using CallKit: to show the application logo on the callkit screen you need to add the image named AppIconForComma .

Accept or Decline Incoming Call

Accept

  self.commaManager?.answerCall(true, type: incomingCall.callType)

Call

Calling only with audio:

commaManager?.startCall(id: <CALEE_ID>)

Calling with video:

commaManager?.startVideoCall(id: <CALEE_ID>)

Call options: mute / unmute audio

commaManager?.setMuteAudio(true)

mute / unmute video

commaManager?.setMuteVideo(true)

speaker

commaManager?.setSpeaker(false)

streaming to local and remote views during a video call

commaService?.setupVideo(localView: <local_UIView>, remoteView: <remote_UIView>,cameraPosition: <camera_position>)

End Call

commaManager?.endCall()

Check Connection State

commaManager?.connectionStateDidChange =  { state in
  switch state {
  case .checking:
  case .connected:
  case .failed:
  case .disconnected:
  }
}

Author

develotex, [email protected]

License

Comma is available under the Commercial license. See the LICENSE file for more info.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published