voxeet / voxeet-sdk-ios Goto Github PK
View Code? Open in Web Editor NEWThe Dolby.io Communications SDK for iOS.
Home Page: https://docs.dolby.io/communications-apis/docs/ios-overview
License: Other
The Dolby.io Communications SDK for iOS.
Home Page: https://docs.dolby.io/communications-apis/docs/ios-overview
License: Other
Got this crash report from Crashlytics, Voxeet sdk version 1.2.8
com.getopentalk.opentalk_issue_241_crash_b3772bb8095c426da06a01196bde8ce5_DNE_0_v2.txt
Describe the bug
I am getting "VoxeetSDK compiled with older version of Swift language" error if I add sdk with cocoapod. I tried to build with both swift 4 and swift 5 but the same.
Steps to Reproduce the Problem
Minimalistic code (recommended)
ld: /Users//ProjectName/Pods/VoxeetSDK/VoxeetSDK/VoxeetSDK.framework/VoxeetSDK compiled with older version of Swift language (unknown ABI version 0x06) than previous files (unknown ABI version 0x07) file '/Users//ProjectName/Pods/VoxeetSDK/VoxeetSDK/VoxeetSDK.framework/VoxeetSDK' for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Specifications
Describe the bug
Voxeet screen share is showing red screen in the simulator who joined as participant when we call VoxeetSDK.shared.conference.startScreenShare method from host app running in device
Expected Behaviour
It should show actual screen which is being recorded in simulator
Steps to Reproduce the Problem
Minimalistic code (recommended)
@IBAction func startScreenShare(_ button: UIButton) {
if #available(iOS 11.0, *) {
if button.isSelected {
guard VoxeetSDK.shared.mediaDevice.screenShareMediaStream() == nil else {
// Debug.
print("[Sample] (String(describing: ConferenceViewController.self)).(#function).(#line) - Error: Only one screen share allowed.")
return
}
button.isEnabled = false
VoxeetSDK.shared.conference.startScreenShare { (error) in
}
} else {
button.isEnabled = false
VoxeetSDK.shared.conference.stopScreenShare(completion: { error in
DispatchQueue.main.async {
button.isEnabled = true
if let error = error {
// Debug.
print("[Sample] \(String(describing: ConferenceViewController.self)).\(#function).\(#line) - Error: \(error)")
} else {
button.isSelected = true
button.setTitle("Start screen share", for: .normal)
}
}
})
}
}
}
func streamAdded(participant: VTParticipant, stream: MediaStream) {
switch stream.type {
case .Camera:
if participant.id == VoxeetSDK.shared.session.participant?.id {
// Attaching own participant's video stream to the renderer.
if !stream.videoTracks.isEmpty {
ownCameraView.attach(participant: participant, stream: stream)
ownCameraView.isHidden = false
}
} else {
tableView.reloadData()
}
case .ScreenShare:
// Attaching a video stream to a renderer.
screenShareView.attach(participant: participant, stream: stream)
screenShareView.alpha = 1
default:
break
}
}
[Please provide a link to a repository showing specifically the issue. It should only have the minimal footprint of your own implementation - something which does not requires any NDA.]
Specifications
While install frameworks using cart file getting the below error
"Skipped installing voxeet-ios-conferencekit.framework binary due to the error:
"Incompatible Swift version - framework was built with 4.2.1 (swiftlang-1000.11.42 clang-1000.11.45.1) and the local version is 4.2 (swiftlang-1000.11.37.1 clang-1000.11.45.1)."
Falling back to building from the source
*** Skipped installing voxeet-ios-sdk.framework binary due to the error:
"Incompatible Swift version - framework was built with 4.2.1 (swiftlang-1000.11.42 clang-1000.11.45.1) and the local version is 4.2 (swiftlang-1000.11.37.1 clang-1000.11.45.1)."
Development Tools Version:
Operating systems: iOS 10.3.2
IDE: Xcode 10.0
Attached the screen shot for reference:
Hello. How are you?
I am trying to use this VoxeetSDK for video calling.
but my xcode isn't install that package. only master branch works for me.
Already I changed package numbers several times, but it returns errors ( no package number)
My xcode runs at Version 13.2.1 and mac runs BigSur 11.5.1.
and next problem.
Can you make the package for VoxeetUXSDK? I want to use it at SwiftUI
@IharPaliashchuk I am creating this issue here because what you are describing in #64 is different than the original ticket.
Actually, our app is a Flutter app and we only use native code for VoxeetSDK communication. We don't use any special settings and follow the getting started app.
Let me send some code which is related to VoxeetSDK.
let keys = call.arguments as! Array<String>
VoxeetSDK.shared.initialize(consumerKey: keys[0], consumerSecret: keys[1])
VoxeetSDK.shared.session.delegate = self.sessionEventsHandler
VoxeetSDK.shared.conference.delegate = self.conferenceEventsHandler
VoxeetSDK.shared.notification.delegate = self.notificationEventsHandler
or
let token = call.arguments as! String
VoxeetSDK.shared.initialize(accessToken: token, refreshTokenClosureWithParam: { [weak self] closure, _ in
self?.sdkMethodChannel!.invokeMethod("getRefreshToken", arguments: nil, result: { result -> Void in
let token = result is String ? result as? String : nil
closure(token)
})
})
VoxeetSDK.shared.session.delegate = self.sessionEventsHandler
VoxeetSDK.shared.conference.delegate = self.conferenceEventsHandler
VoxeetSDK.shared.notification.delegate = self.notificationEventsHandler
then
VoxeetSDK.shared.session.open(info: info) { self._handleError($0, result) }
let args = call.arguments as! Dictionary<String, Any?>
let createArgs = args["create"] as! Dictionary<String, Any>
let createOptions = VTConferenceOptions()
createOptions.alias = createArgs["alias"] as? String
createOptions.params.audioOnly = createArgs["audioOnly"] as! Bool
createOptions.params.dolbyVoice = createArgs["dolbyVoice"] as! Bool
VoxeetSDK.shared.conference.create(options: createOptions) { conference in
let joinArgs = args["join"] as! Dictionary<String, Any?>
self._joinConference(
conference,
result,
hasAudio: joinArgs["audio"] as! Bool,
hasVideo: joinArgs["video"] as! Bool
)
} fail: {
self._handleError($0, result)
}
private func _joinConference(
_ conference: VTConference,
_ result: @escaping FlutterResult,
hasAudio: Bool,
hasVideo: Bool
) {
let joinOptions = VTJoinOptions()
let constraints = VTJoinOptionsConstraints()
constraints.audio = conference.params.dolbyVoice ? true : hasAudio
constraints.video = hasVideo
joinOptions.constraints = constraints
VoxeetSDK.shared.conference.join(conference: conference, options: joinOptions) {
if (conference.params.dolbyVoice && !hasAudio) { //fix to do not have crashes
VoxeetSDK.shared.audio.local.stop {_ in }
}
result($0.toJson())
} fail: {
self._handleError($0, result)
}
}
case "startAudio":
VoxeetSDK.shared.audio.local.start { self._handleError($0 as NSError?, result) }
case "stopAudio":
VoxeetSDK.shared.audio.local.stop { self._handleError($0 as NSError?, result) }
case "startVideo":
VoxeetSDK.shared.video.local.start { self._handleError($0 as NSError?, result) }
case "stopVideo":
VoxeetSDK.shared.video.local.stop { self._handleError($0 as NSError?, result) }
I would like to mention that everything works on each platform (joining a conference and inviting participants, enabling/disabling audio/video and leaving), only ios has crushes sometimes if user joins with enabled audio.
Hello Team,
I am facing an issue related to call view Voxeet iOS SDK.
We are implementing dedicated audio calls in our app, where one user call another person.
Here are my issues on call:
1 - We are able to place calls, but When the user answers the call, call get connected with no error but there is no notification on caller side that the call has been answered. And there is no voice over call on both ends. It seams that the call is not got connected properly.
2 - When the caller or Callee want to disconnect the call we got this error:
Conference leaved Failed: Error Domain=com.voxeet.VoxeetSDK Code=8 "A live conference is needed for this action" UserInfo={NSLocalizedDescription=A live conference is needed for this action
Conference Decline Failed: Error Domain=com.voxeet.VoxeetSDK Code=404 "Internal server error 404" UserInfo={NSLocalizedDescription=Internal server error 404
Hoping for the Fast Reply.
Steps to Reproduce the Problem
VoxeetSDK.shared.conference.mute(participant: VoxeetSDK.shared.session.participant!, isMuted: false)
VoxeetSDK.shared.conference.mute(participant: VoxeetSDK.shared.session.participant!, isMuted: true)
Specifications
Logs
(MediaEngine.mm:545): Failed to set mute with error: /Users/dolbyio/builds/7xyVAap3/0/voxeet/ios/ios-sdk-rest/VoxeetSDK/Frameworks/MediaEngine/voxeet-media-engine-lib/dvc_wrapper/dvmc/dvc_conference_impl.cc:393: SetMute failed in direction == webrtc_integration::DvcDirection::OUTPUT || mute == true || listener_mode_ == false with status false
Can you add network monitoring? Tell me what the Internet speed
This is the response of the whole conference session:
^^^^^^^^^^^^^^^^^^^^^ VOXEET: Name: OwnConferenceCreatedEvent
JSON: {
conferenceInfo = {
conference = {
conferenceAlias = 1256141173;
conferenceEndpoint = "https://13.231.228.162:11001";
conferenceId = "06526924-5e27-45fb-89ef-8b40afb9c100";
conferenceType = "SDK_CONF";
creationUtcTimestamp = 1538725174302;
description = "";
host = "";
hostPrivateIp = "";
location = "";
maxAvailableSlots = 3000;
maxAvailableVideoSlots = 3000;
meetId = "";
meetingId = "";
metadataSetAsString = (
"{"key":"ttl","value":"0"}",
"{"key":"maxDuration","value":"163578"}"
);
otherMeetIds = "";
ownerId = "963c8c7d-3b5d-43c9-a608-3c0517eded46";
participantSetAsString = (
"{"userId":"963c8c7d-3b5d-43c9-a608-3c0517eded46","eventId":null,"creationUtcTimestamp":1538725174302,"utcTimestamp":null,"blacklisted":false,"pstnPinCode":"80158983"}"
);
pinCode = 93900567;
port = 0;
securityToken = "";
summary = "";
thirdPartyId = "#############";
version = 1;
webSocketPort = 0;
};
conferenceId = "06526924-5e27-45fb-89ef-8b40afb9c100";
conferenceType = "SDK_CONF";
description = "";
e164FallbackPhoneNumber = "+14154297700";
location = "";
meetingId = "";
nodes = (
);
ownerProfile = {
callLocalPart = "";
city = "";
company = "";
country = "";
editable = 0;
email = "";
emails = (
);
firstName = "";
isManager = 0;
isPro = 1;
jobTitle = "";
lastName = "";
manager = 0;
nickName = Ami;
phones = (
);
photoId = "";
presenceStatus = OFFLINE;
pro = 1;
profileType = "EXTERNAL_SHORT_PROFILE";
statusPhrase = "";
tags = "";
userId = "963c8c7d-3b5d-43c9-a608-3c0517eded46";
};
pstnPinCode = 80158983;
title = "";
};
type = OwnConferenceCreatedEvent;
} ^^^^^^^^^^^^^^^^^^^^^^
2018-10-05 13:09:34.652990+0530 -[AppDelegate ownConferenceCreatedEventHandler:] *** MAIN_THREAD
2018-10-05 13:09:34.657077+0530 ^^^^^^^^^^^^^^^^^^ VOXEET: Conference created Successfully ^^^^^^^^^^^^^^^^
2018-10-05 13:09:34.657726+0530 Conference: {
conferenceAlias = 1256141173;
conferenceId = "06526924-5e27-45fb-89ef-8b40afb9c100";
conferencePincode = 93900567;
isNew = 1;
}
2018-10-05 13:09:34.657921+0530 -[AppDelegate joinConference:] *** MAIN_THREAD
2018-10-05 13:09:34.658039+0530 conferenceId : 06526924-5e27-45fb-89ef-8b40afb9c100
2018-10-05 13:09:34.675621+0530 -[AppDelegate provider:performStartCallAction:] *** MAIN_THREAD
2018-10-05 13:10:15.448141+0530 -[AppDelegate VoxeetCallHandlers:] *** MAIN_THREAD
2018-10-05 13:10:15.449252+0530 ^^^^^^^^^^^^^^^^^^^^^ VOXEET: Name: ConferenceDestroyedPush
JSON: {
conferenceAlias = 1256141173;
conferenceId = "06526924-5e27-45fb-89ef-8b40afb9c100";
status = MISSED;
type = ConferenceDestroyedPush;
} ^^^^^^^^^^^^^^^^^^^^^^
We get ConferenceDestroyedPush directly after creating a conference. At the same time on conference create call kit creates call which keeps running in the background. I guess it should get stopped if the 'ConferenceDestroyedPush' received on the device anyhow.
Looking forward to the fast reply.
We want to make our app ready for iOS 14 which is using Voxeet SDK for Calling feature. So can we get an SDK compatible with iOS 14 or some date till when we are getting the update for this new iOS?
Thank you.
Describe the bug
Run the sample app, add breakpoint anywhere, when using "po or p" i get
error: virtual filesystem overlay file '/Users/voxeet/Library/Developer/Xcode/DerivedData/VoxeetSDK-ftomkwuqrnfvtreyrfoxdtigyjhn/Build/Intermediates.noindex/ArchiveIntermediates/VoxeetSDK/IntermediateBuildFilesPath/VoxeetSDK.build/Release-iphoneos/VoxeetSDK.build/all-product-headers.yaml' not found
error: couldn't IRGen expression. Please check the above error messages for possible root causes.
and i get the same error trying " po " while debugging on different project with VoxeetSDK installed
Expected Behaviour
the debugger prints out the value
Steps to Reproduce the Problem
Minimalistic code (recommended)
https://github.com/voxeet/voxeet-sdk-ios-gettingstarted
Specifications
Locally everything works fine, but on an Bitrise I'm not able to archive the project. Cold you please help? Did someone faced with this problem?
How to enable/disable mute button which is under VoxeetConferenceKit SDK?
If you have any idea regarding this point then please me to sort out this issue because i am stuck to do that
Thanks in advance
Hi team,
We are getting lots of log in debug console after updating Voxeet SDK to version 3.0.0 and this issue is in both iOS and android SDK.
Is there any way to prevent these logs. It will be very helpful for us.
Thank you.
Apple launched new osx big sur beta and new xcode 12 beta which has swift 5.3 compiler.
In new development environment with enhanced swiftUI is very attractive, but importing Voxeetsdk is unavailable because of compiled swift version.
So request for recompiled version on swift 5.3
Describe the bug
App's like telegram allow to switch between the phone speaker (used for usual phone calls) and the main speaker (used for music, for example). Does Voxeet SDK provide such functionallity? Android SDK seems to provide it, but I couldn't find corresponding models and methods in the iOS SDK.
Expected Behaviour
Describe the bug
I install Voxeet using cocoa pod 'VoxeetUXKit', '~> 1.0'
When I import the following:
XCode gives an error:
File: VoxeetSDK-swift.h
'UILocalNotification' is deprecated: first deprecated in iOS 10.0 - Use UserNotifications Framework's UNNotificationRequest
Expected Behaviour
Project should compile with no error.
Steps to Reproduce the Problem
pod 'VoxeetUXKit', '~> 1.0'
import VoxeetSDK
and import VoxeetUXKit
on AppDelegateSpecifications
OS: iOS 11.0
Platform: iOS
Swift Version: 5.2.4
Version:
When we end conference call that time we get any callback so i can call function and perform one functionality
Thanks in advance
We use voxeet with the Call kit. Most of the time when we end an incoming call this error come in leave conference callback block.
^^^^^^^^^^^^^^^^^^^^^^ VOXEET: Conference leaved Failed : Error Domain=com.apple.CallKit.error.requesttransaction Code=4 "(null)" ^^^^^^^^^^^^^^^^
Please Look into this because due to this the call kit never ends and we need to kill the app to remove the call kit also due to this we are not able to make any other call from the app.
@Comanga @VTCoco @codlab @4thlabs
As you guys are providing the Carthage support for Voxeet iOS SDK, Is there a CocoaPods library link available for Latest Voxeet iOS SDK?
As following link is your old Cocoa Pods Library Link:
https://cocoapods.org/pods/VoxeetSDK
Looking forward to your response.
I have implemented Voxeet SDK manually in my project instead of Pods, So I want a compiled framework for the Voxeet SDK - v3.1.0-beta.2 as we have for other vesions over here - https://raw.githubusercontent.com/voxeet/voxeet-sdk-ios/master/VoxeetSDK.json. Please provide us the framework files for this version.
Looks like library was updated but podspec isn't
Pod::Spec.new do |spec|
spec.name = "VoxeetSDK"
spec.version = "2.4.0" << 2.4.1
spec.summary = "Voxeet provides a platform for unified communications and collaboration."
spec.license = "MIT"
spec.author = "Voxeet"
spec.homepage = "https://dolby.io"
spec.platform = :ios, "9.0"
spec.swift_version = "5.2.4"
spec.source = { :http => "https://vox-ios-sdk.s3.us-east-1.amazonaws.com/sdk/ios/release/#{spec.version}/VoxeetSDK.zip" }
spec.vendored_frameworks = "VoxeetSDK.framework", "WebRTC.framework"
end
VoxeetSDK has the initialize
method, but is there a way to deinitialize it?
For example, when user logs out from the application we don't want to receive invitation events, but we do.
Hi:
We have a problem, on some Android devices, if iOS creates the meeting first(createWithOptions:), joins the meeting(joinWithConference:). Then Android joins the meeting. Android will leave the meeting immediately.
Attached Video shows single call with 2 participants. There are some leaked objects detected by the XCode Instruments tool.
My intent is to determine what users are currently speaking and indicate it to the local user. Is there a way to implement it?
Describe the bug
Sample app from github 1.2.8, 1.2.9 is crashing in iOS simulator iPhone 5, 5s iOS 12.1 (may be on others also). By simply joining to any conf id, but working in actual device iPhone 5s iOS 12.1. XCode 10.1.
This may be Heap Corruption issue. So enabling Malloc Guard would help.
Expected Behaviour
Excepted behaviour is to complete joining process and start exchanging voice or video
Steps to Reproduce the Problem
Join Conference
on both deviceJoin
Minimalistic code (recommended)
Given sample code is sufficient to reproduce.
Specifications
Hi team,
We are getting lots of log in debug console after updating Voxeet SDK to version 3.0.0 and this issue is in both iOS and android SDK.
Is there any way to prevent these logs. It will be very helpful for us.
Thank you
Failed to build module 'VoxeetSDK' from its module interface; the compiler that produced it, 'Apple Swift version 5.2.4 (swiftlang-1103.0.32.9 clang-1103.0.32.53)', may have used features that aren't supported by this compiler, 'Apple Swift version 5.3 (swiftlang-1200.0.16.13 clang-1200.0.22.25)'
Hello Team,
We are using Voxeet SDK to make dedicated calls with the feature of call recording. For this, we need a sample response of a webhook which get called on call end.
Thank You.
How to stop any running conference?
Is there any specific code or method to do so?
Originally posted by @amit-pandey11 in #2 (comment)
Quirky bug: Unclear if this is the SDK or Xcode.
Xcode's auto completion inserts code two different ways:
steps to Reproduce:
extension ViewController: VTConferenceDelegate {
}
Xcode will raise an error and suggest inserting protocol stubs:
During that step Xcode incorrectly inserts VTConferenceDelegate protocol stubs as:
func statusUpdated(status: **VoxeetSDK.VTConferenceStatus**) {
<#code#>
}
The VoxeetSDK.VTConferenceStatus is incorrect --
It should read as:
func statusUpdated(status: VVTConferenceStatus) {}
Hi, I am looking at this log - I notice the voip push was sent from voxeet for an incoming call but the call kit was not presented. I noticed it happened twice today. Please look into it. I am attaching the log of the last incident.
Describe the bug
User A calls User B, User A Decline call simultaneously User A Accepts Call the call not ended for User A.
Expected Behaviour
It should End For User A
Steps to Reproduce the Problem
Specifications
iOS 12 onwards Device: iPhone and iPad
SDK Version: 1.4.7, 1.4.8
When joining a dolbyVoice conference with disabled audio, ConferenceService
fires 2 events: participantAdded
and streamAdded
. In the first event participant has an empty streams array (which corresponds to joinOptions.constraints
) and the second one adds an audio stream, even though join constraint for audio was set to false.
...
let constraints = VTJoinOptionsConstraints()
constraints.audio = false
constraints.video = false // this value doesn't affect the described behavior
joinOptions.constraints = constraints
VoxeetSDK.shared.conference.join(conference: conference, options: joinOptions) {}
This only happens with dolbyVoice conferences.
Expected Behaviour
Audio stream should not be added when joining dolbyVoice conference with disabled audio.
Specifications
SDK Version [VoxeetSDK] 3.8.0 (1)
delegate function activeParticipants is never called.
Appears not part of the latest SDK that is pulled from Main on this repo; Attempted to go to definition in Xcode - function not found.
Example Usage:
extension ViewController: VTConferenceDelegate {
// ... other delegate functions
func activeParticipants(notification: VTActiveParticipantsNotification){
let participants = notification.participants;
participants.forEach { participant in
if participant.id == VoxeetSDK.shared.session.participant?.id {
localParticpant = participant;
print(participant.info.name as Any);
}else {
// remote
remoteParticpant = participant;
print(participant.info.name as Any);
}
}
}
/// end of code
}
Documentation suggest this feature should be included in the latest release:
https://docs.dolby.io/communications-apis/docs/ios-client-sdk-conferenceservice
participantAdded
▸ participantAdded(participant: VTParticipant)
Emitted when a new participant is invited to a conference. The SDK does not emit the participantAdded event for the local participant. Listeners only receive the participantAdded events about users; they do not receive events for other listeners. In SDK 3.2 and prior releases, users receive events about users and the first 1000 listeners . However, in SDK 3.3 and next releases, users receive the participantAdded events about users and do not receive any events about listeners. To notify all application users about the number of participants who are present at a conference, the iOS SDK 3.3 introduces the activeParticipants events.
When calling startScreenShare(broadcast:true), nothing shows up, stream remains black, and the callback comes back with this error:
Error Domain=com.voxeet.sdk Code=-2343 "Broadcast picker displayed." UserInfo={NSLocalizedDescription=Broadcast picker displayed.}
And this shows up in the logs afterwards:
[Assert] Error in UIKit client: -[UIWindow setScreen:] should not be called if the client adopts UIScene lifecycle. Call -[UIWindow setWindowScene:] instead.
A workaround is to adopt the old lifecycle, but it's definitely not ideal going forward. It would be better if the SDK could detect the new lifecycle and adopt new methods instead.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.