GithubHelp home page GithubHelp logo

agoraio / agorartcengine_ios Goto Github PK

View Code? Open in Web Editor NEW
50.0 7.0 16.0 7.75 MB

iOS Package for Agora Video RTE SDK. Perfect for video calls and live streaming.

Home Page: https://agoraio.github.io/AgoraRtcEngine_iOS/

License: MIT License

Swift 99.61% Ruby 0.39%
swiftpm video video-streaming streaming ios rtm rtc swift swift-package-manager video-call

agorartcengine_ios's People

Contributors

agorabuilder avatar maxxfrazer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

agorartcengine_ios's Issues

After running in Xcode 15, it crashes.

The prompt message is
Class HWDarwinResamplerImpl is implemented in both /private/var/containers/Bundle/Application/…/Frameworks/AgoraSpatialAudioExtension.framework/AgoraSpatialAudioExtension (0x10baa4e28) and /private/var/containers/Bundle/Application/…/Frameworks/AgoraAudioBeautyExtension.framework/AgoraAudioBeautyExtension (0x1096999a8). One of the two will be used. Which one is undefined.

There are more instances of duplicated classes compared to using 4.1.1.
After upgrading to version 4.2.2, this is the only one.

[INTEGRATION] In React native , pod install sooooooo slow

Describe the bug
Screenshot 2023-08-10 at 1 12 57 PM

In ReactNative
Pod install is sooooo slow.

the SDK url : HERE

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS] MacBook Pro Apple M1
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

AppID on client side

To initialize the agora kit engine I need to call this method on the client side:
AgoraRtcEngineKit.sharedEngine(withAppId: APP_ID, delegate: self)
But what if I want to store my APP_ID on the server side, and not send it to the client side in order to protect my API keys?
Can it be achieved?

'AgoraRtcEngine_iOS 3.4.6'======= AgoraLiveManager.destroyAgoraEngine(_:) crash

pod 'AgoraRtcEngine_iOS', '3.4.6'

it is crash log,fix it crash as soon as possible please

Incident Identifier: 26E3AC45-0652-4AD4-90AD-47A23066D12E
Hardware Model: iPhone9,3
Process: Xxxxx [4467]
Path: /private/var/containers/Bundle/Application/87D8A3F0-7485-4D7E-9DA6-90212FC35208/Xxxxx.app/Xxxxx
Identifier: XXXX
Version: 4.6.0 (3691)
AppStoreTools: 13F15
AppVariant: 1:iPhone9,3:15
Code Type: ARM-64 (Native)
Role: Foreground
Parent Process: launchd [1]
Coalition: XXXX [722]

Date/Time: 2022-05-25 00:29:45.5173 +0530
Launch Time: 2022-05-25 00:25:49.6514 +0530
OS Version: iPhone OS 15.3.1 (19D52)
Release Type: User
Baseband Version: 6.01.01
Report Version: 104

Exception Type: EXC_CRASH (SIGKILL)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Reason: FRONTBOARD 2343432205
<RBSTerminateContext| domain:10 code:0x8BADF00D explanation:[application:4467] failed to terminate gracefully after 5.0s
ProcessVisibility: Unknown
ProcessState: Running
WatchdogEvent: process-exit
WatchdogVisibility: Background
WatchdogCPUStatistics: (
"Elapsed total CPU time (seconds): 22.100 (user 22.100, system 0.000), 100% CPU",
"Elapsed application CPU time (seconds): 1.069, 5% CPU"
) reportType:CrashLog maxTerminationResistance:Interactive>

Triggered by Thread: 0

Thread 0 name:
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x00000001bb7754f0 __psynch_cvwait + 8
1 libsystem_pthread.dylib 0x00000001dbc9bbfc pthread_cond_wait$VARIANT$mp + 1216 (pthread_cond.c:636)
2 AgoraCore 0x000000010c09b9d0 0x10c090000 + 47568
3 AgoraCore 0x000000010c09ba8c 0x10c090000 + 47756
4 AgoraCore 0x000000010c09bc1c ahpl_main_exit_wait + 28
5 AgoraRtcKit 0x000000010c44bfe8 agora::base::IAgoraService::release() + 48
6 AgoraRtcKit 0x000000010c4e3b08 0x10c1d4000 + 3209992
7 Xxxxx 0x0000000107b81030 AgoraLiveManager.destroyAgoraEngine(
:) + 228 (AgoraLiveManager.swift:657)
8 Xxxxx 0x00000001078de4cc LiveAgoraPusher.destroyEngine() + 92 (LiveAgoraPusher.swift:240)
9 Xxxxx 0x00000001078df71c protocol witness for XxxxxLivePusher.destroyEngine() in conformance LiveAgoraPusher + 36 (:0)
10 Xxxxx 0x0000000105dc61bc BroadcastController.destoryAgoraLiveManager(ignoreVoiceDevice:) + 560 (BroadcastController.swift:3448)
11 Xxxxx 0x0000000105db8fa0 BroadcastController.stopBroadcast(reason:_:) + 688 (BroadcastController.swift:3972)
12 Xxxxx 0x0000000105d73af8 BroadcastController.progressStopBroadcast(breaked:reasonCode:reason:tostText:) + 508 (BroadcastController.swift:3779)
13 Xxxxx 0x0000000105da1924 0x104b28000 + 19372324
14 Xxxxx 0x0000000105dcbb04 closure #1 in BroadcastController.confirmStopBroadcast() + 156 (BroadcastController.swift:3751)
15 Xxxxx 0x0000000106a2429c 0x104b28000 + 32490140
16 UIKitCore 0x0000000183a69510 -[UIAlertController _invokeHandlersForAction:] + 108 (UIAlertController.m:1219)
17 UIKitCore 0x000000018400cfdc __103-[UIAlertController _dismissAnimated:triggeringAction:triggeredByPopoverDimmingView:dismissCompletion:]_block_invoke.454 + 28 (UIAlertController.m:1384)
18 UIKitCore 0x0000000183cab854 -[UIPresentationController transitionDidFinish:] + 1256 (UIPresentationController.m:521)
19 UIKitCore 0x00000001841b6ff0 __56-[UIPresentationController runTransitionForCurrentState]_block_invoke.437 + 208 (UIPresentationController.m:1193)
20 UIKitCore 0x0000000183b4fd08 -[_UIViewControllerTransitionContext completeTransition:] + 112 (UIViewControllerTransitioning.m:289)
21 UIKitCore 0x0000000183bcf61c -[UIViewAnimationBlockDelegate _didEndBlockAnimation:finished:context:] + 688 (UIView.m:14898)
22 UIKitCore 0x0000000183aa3478 -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 244 (UIView.m:0)
23 UIKitCore 0x0000000183ab6d68 -[UIViewAnimationState animationDidStop:finished:] + 240 (UIView.m:2280)
24 UIKitCore 0x0000000183ab6ebc -[UIViewAnimationState animationDidStop:finished:] + 580 (UIView.m:2299)
25 QuartzCore 0x0000000185195e64 CA::Layer::run_animation_callbacks(void*) + 276 (CALayer.mm:7203)
26 libdispatch.dylib 0x000000018131b1a8 _dispatch_client_callout + 16 (object.m:560)
27 libdispatch.dylib 0x00000001812c75e0 _dispatch_main_queue_callback_4CF$VARIANT$mp + 940 (inline_internal.h:2601)
28 CoreFoundation 0x000000018160a888 CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE + 12 (CFRunLoop.c:1795)
29 CoreFoundation 0x00000001815c8188 __CFRunLoopRun + 2528 (CFRunLoop.c:3144)
30 CoreFoundation 0x00000001815dae1c CFRunLoopRunSpecific + 572 (CFRunLoop.c:3268)
31 GraphicsServices 0x00000001a197d9a0 GSEventRunModal + 160 (GSEvent.c:2200)
32 UIKitCore 0x0000000183e0eb90 -[UIApplication _run] + 1080 (UIApplication.m:3493)
33 UIKitCore 0x0000000183ba416c UIApplicationMain + 332 (UIApplication.m:5047)
34 Xxxxx 0x0000000104d2cd50 0x104b28000 + 2116944
35 dyld 0x000000010bd3c250 start + 444 (dyldMain.cpp:879)

Privacy Manifest

Subject: We need to incorporate the xcprivacy manifest into our app . Starting March 13, Apple will send notifications when uploading builds to the App Store, and this will become mandatory from May 1. All the SDKs used in our app needs to incorporate the xcprivacy manifest.
Reference: https://developer.apple.com/news/?id=3d8a9yyh

Actions needed: We need the compatible xcprivacy manifest version IOS SDK with xcprivacy manifest. We are expecting a seamless upgrade by upgrading to the latest version.

How can I use Agora to implement Picture in Picture function on the iOS platform?

According to the iOS PIP document, I try to draw the CVPixelBuffer on AVSampleBufferLayer to set PIP up.
by this function I did make the remote view displayed on the AVSampleBufferLayer on the foreground mode.

- (void)setRemoteVideoRenderer:(id<AgoraVideoSinkProtocol> _Nullable)videoRenderer forUserId:(NSUInteger)userId;

When I swap the app into background mode, I could hear the audio but can't get the CVPixelBuffer by:

# AgoraVideoSinkProtocol

func renderPixelBuffer(_ pixelBuffer: CVPixelBuffer, rotation: AgoraVideoRotation) {}

Is there anyway to get CVPixelBuffer on the background mode?

After starting Agora call Video audio volume changes to really low.

Hello!

I work on an application where users can watch streams and simultaneously be in video call with other users.
I use Agora library for this and all call-related stuff works really well. The issue that I have is that after starting or joining to call and changing AVAudioSession mode and category, stream audio volume changes to really low.

Technical context:

Agora settings:

agoraEngine = AgoraRtcEngineKit.sharedEngine(with: configuration, delegate: self)
agoraEngine.setAudioSessionOperationRestriction(.all)
agoraEngine.setChannelProfile(.liveBroadcasting)
agoraEngine.setClientRole(.broadcaster)

...

agoraEngine.enableVideo()
agoraEngine.enableAudio()
agoraEngine.setDefaultAudioRouteToSpeakerphone(true)
agoraEngine.setChannelProfile(.liveBroadcasting)
agoraEngine.setClientRole(.broadcaster)

let option = AgoraRtcChannelMediaOptions()
option.clientRoleType = .broadcaster
option.channelProfile = .liveBroadcasting
option.autoSubscribeAudio = true
option.autoSubscribeVideo = true

...

agoraEngine.enableLocalVideo(true)
agoraEngine.enableLocalAudio(true)

agoraEngine.muteLocalAudioStream(false)
agoraEngine.muteLocalVideoStream(false)

AVAudioSession settings:

Basically to provide the best audio experience app sets AVAudioSession while watching stream to:

try? AVAudioSession.sharedInstance().setMode(.default)
try? AVAudioSession.sharedInstance().setCategory(
    .playback, options: [.mixWithOthers, .defaultToSpeaker, .allowBluetooth]
)

When Agora call is active app sets AVAudioSession to:

try? AVAudioSession.sharedInstance().setMode(.videoChat)
try? AVAudioSession.sharedInstance().setCategory(
    .playAndRecord, options: [.mixWithOthers, .defaultToSpeaker, .allowBluetooth]
)

After switching AVAudioSession to videoChat and playAndRecord stream audio changes to really low, but Agora call audio is normal. Both - Agora audio signal volume (adjustPlaybackSignalVolume) and steam player volume are set to 100%. Device audio volume is also set to 100%.

Am I missing something?
Should I set the AVAudioSession settings differently?
Does Agora lib have ability to set the audio mix ratio between a call volume and another audio source that uses AVAudioSession?

AgoraAudioFrameDelegate not firing `onRecordAudioFrame:` (4.1.1)

We are attempting to access audio frames when using Agora, however this delegate function doesn't seem to be getting called.

We are correctly setting the delegate method, as true is returned from: (BOOL)setAudioFrameDelegate:(id<AgoraAudioFrameDelegate> _Nullable)delegate.

Some delegate methods are called as expected, such as getObservedAudioFrame() and getRecordAudioParams(), however onRecordAudioFrame is never called.

I can't get the sender's voice and the sender can't get my

Describe the bug
I have used Agora Audio SDK and then received a call when the application was open it works perfectly
when I receive calls using VoIP notifications I can't get the sender's voice and the sender can't get my

I don't get any error regarding this

Example of issue
https://github.com/AgoraIO/AgoraRtcEngine_iOS/assets/44164918/5b970b6b-67ab-4bb5-90cb-b0350d3d8481

pod 'AgoraRtcEngine_iOS'

Device: [e.g. iPhonexr, iPhone8]
OS: [e.g. 17.01]

setLocalRenderMode doesn't work correctly.

I tried to use setLocalRenderMode method to use mirror feature, because set setLocalVideoMirrorMode method has got deprecated. Unfortunately, I got errors like "Incorrect argument label in call" from Xcode. setLocalRenderMode's parameters have a problem.
Screen Shot 2022-07-28 at 1 38 14 14PM

Screen Shot 2022-07-28 at 1 38 45 45PM

missing AgoraAIDenoiseExtension on arm64 simulator

We're using Agora via SPM inside our own Swift Package. Everything works fine when building against an Intel simulator (or ARM via Rosetta so essentially still Intel slices being used).

I currently have version 3.6.0 installed, and am using an original M1 Mac.

I can get our module to build fine with an ARM mac now, however I get the following runtime exception raised when running our tests (the same exact tests run fine on an Intel sim as mentioned above).

2021-12-22 11:54:22.154052+0000 xctest[28689:14921151] The bundle “communications-iosTests” couldn’t be loaded. Try reinstalling the bundle.
2021-12-22 11:54:22.154115+0000 xctest[28689:14921151] (dlopen(/Users/gileswilliams/Library/Developer/Xcode/DerivedData/communications-ios-bmapwkopjukqudgasfpodnuirigz/Build/Products/Debug-iphonesimulator/communications-iosTests.xctest/communications-iosTests, 0x0109): Library not loaded: @rpath/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension
  Referenced from: /Users/gileswilliams/Library/Developer/Xcode/DerivedData/communications-ios-bmapwkopjukqudgasfpodnuirigz/Build/Products/Debug-iphonesimulator/communications-iosTests.xctest/communications-iosTests
  Reason: tried: '/Users/gileswilliams/Library/Developer/Xcode/DerivedData/communications-ios-bmapwkopjukqudgasfpodnuirigz/Build/Products/Debug-iphonesimulator/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension' (code signature in <93DDD9CC-45A2-3EDF-A101-AE8857F427BD> '/Users/gileswilliams/Library/Developer/Xcode/DerivedData/communications-ios-bmapwkopjukqudgasfpodnuirigz/Build/Products/Debug-iphonesimulator/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension' not valid for use in process: Trying to load an unsigned library), '/Users/gileswilliams/Library/Developer/Xcode/DerivedData/communications-ios-bmapwkopjukqudgasfpodnuirigz/Build/Products/Debug-iphonesimulator/PackageFrameworks/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension' (no such file), '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/swift/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension' (no such file), '/usr/lib/swift/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension' (no such file), '/Users/gileswilliams/Library/Developer/Xcode/DerivedData/communications-ios-bmapwkopjukqudgasfpodnuirigz/Build/Products/Debug-iphonesimulator/communications-iosTests.xctest/Frameworks/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension' (no such file), '/Users/gileswilliams/Library/Developer/Xcode/DerivedData/communications-ios-bmapwkopjukqudgasfpodnuirigz/Build/Products/Debug-iphonesimulator/communications-iosTests.xctest/../Frameworks/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension' (no such file), '/Users/gileswilliams/Library/Developer/Xcode/DerivedData/communications-ios-bmapwkopjukqudgasfpodnuirigz/Build/Products/Debug-iphonesimulator/communications-iosTests.xctest/Frameworks/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension' (no such file), '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/swift/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension' (no such file), '/usr/lib/swift/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension' (no such file), '/Users/gileswilliams/Library/Developer/Xcode/DerivedData/communications-ios-bmapwkopjukqudgasfpodnuirigz/Build/Products/Debug-iphonesimulator/communications-iosTests.xctest/Frameworks/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension' (no such file), '/Users/gileswilliams/Library/Developer/Xcode/DerivedData/communications-ios-bmapwkopjukqudgasfpodnuirigz/Build/Products/Debug-iphonesimulator/communications-iosTests.xctest/../Frameworks/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension' (no such file), '/Users/gileswilliams/Library/Developer/Xcode/DerivedData/communications-ios-bmapwkopjukqudgasfpodnuirigz/Build/Products/Debug-iphonesimulator/communications-iosTests.xctest/Frameworks/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension' (no such file), '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Agents/../../Frameworks/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension' (no such file), '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Agents/../../PrivateFrameworks/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension' (no such file), '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Agents/../../../usr/lib/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension' (no such file), '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension' (no such file))
Program ended with exit code: 83

[v4.1.1] Camera remains on after switching role to audience in multi-channel setup

I'm attempting to join multiple channels on a shared AgoraRtcEngineKit instance. After joining the channel with role audience and then switching the client role to broadcaster and then back to audience, the camera seems to remain on as indicated by the green dot on the iphone. I was wondering if there is a different way to release the camera in the multi-channel setup, or if this could be a bug in the SDK

Code for joining channel:

let option = AgoraRtcChannelMediaOptions()
option.channelProfile = .liveBroadcasting
option.clientRoleType = .audience
option.autoSubscribeVideo = true
option.autoSubscribeAudio = true
option.publishCameraTrack = true
option.publishMicrophoneTrack = true
option.publishSecondaryCameraTrack = true
let token = token
let channel = channel
var result = agoraKit.joinChannelEx(
            byToken: token,
            connection: AgoraRtcConnection(channelId: channel, localUid: id),
            delegate: delegate,
            mediaOptions: option
       )

Code for switching roles:

let newOptions = AgoraRtcChannelMediaOptions()
newOptions.channelProfile = .liveBroadcasting
newOptions.clientRoleType = role
newOptions.autoSubscribeVideo = true
newOptions.autoSubscribeAudio = true
newOptions.publishCameraTrack = true
newOptions.publishMicrophoneTrack = true
newOptions.publishSecondaryCameraTrack = true
agoraKit.updateChannelEx(with: newOptions, connection: AgoraRtcConnection(channelId: channel, localUid: id))

I also tried using muteLocalVideoStreamEx but that didn't work

The camera for the first user is not appearing, only after another user joins

Hello!

I've been having this problem where when I start a channel, my camera icon is not appearing, only when another user joins in the channel, for some reason my user camera appears:

my code:

ScrollView(.vertical, showsIndicators: false) {
                VStack(spacing: .zero) {
                    ForEach(Array(users), id: \.self) { uid in
                        AgoraVideoCanvasView(manager: dependencies.watchPartyScene.getManager(), uid: uid)
                            .aspectRatio(contentMode: .fit)
                            .cornerRadius(2.ds.quants)
                            .clipShape(Circle())
                            .allowsHitTesting(false)
                    }
                }
                .padding(4.ds.quants)
            }

and I add users and remove them using the delegates:

public override func rtcEngine(_ engine: AgoraRtcEngineKit, didJoinedOfUid uid: UInt, elapsed: Int) {
        var users = allUsers
        users.insert(uid)
        userUpdate.send(users)
    }

    public override func rtcEngine(_ engine: AgoraRtcEngineKit, didOfflineOfUid uid: UInt, reason: AgoraUserOfflineReason) {
        userUpdate.send(allUsers)
    }

Bluetooth headphones not working as expected

I have implemented AgoraRtcEngine_iOS one of my project for video calling. I am facing the below scenario.

Scenario:

  1. Bluetooth earphones connected
  2. Call comes to iPhone
  3. Ringtone plays on connected earphones
  4. After joining the agora channel no sounds on the connected earphone. Sounds are playing on the phone's speaker. I have didAudioRouteChanged function implemented. In this stage I get this result from SDK.
  didAudioRouteChanged -> AgoraAudioOutputRouting(rawValue: 5)
  didAudioRouteChanged -> AgoraAudioOutputRouting(rawValue: 3)
  1. Now call is ongoing, disconnect the connected earphones, and reconnect.
    In this stage, sounds are playing on connected earphones. and I get this result from SDK.
    didAudioRouteChanged -> AgoraAudioOutputRouting(rawValue: 5)



NB: I have tried this, but not worked.

agoraEngine.setAudioProfile(AudioProfile.default)
agoraEngine.setAudioScenario(AudioScenario.gameStreaming)

Please help me to solve this problem. I really appreciate any help you can provide. 😊 😊

pushExternalVideoFrame after several seconds.

Hi! I am trying to push AgoraVideoFrame with pushExternalVideoFrame,
but it crashes after 5-10 seconds with EXC_BAD_ACCESS.

CODE:

let outputImage = image.applyingFilter("CIBlendWithMask", parameters: parameters)
let pixelBuffer = outputImage.toPixelBuffer(cgSize: UIScreen.main.bounds.size)!

let videoFrame = AgoraVideoFrame()
videoFrame.format = 12
videoFrame.textureBuf = pixelBuffer
videoFrame.time = timeStamp
videoFrame.rotation = Int32(90)
self.agoraKit?.pushExternalVideoFrame(videoFrame)

ERROR:

Thread 40: EXC_BAD_ACCESS (code=1, address=0x5e5922c7fab0)

I am using MTKView and MetalRenderer, and get filtered image to convert to pixelBuffer.

It does works fine before crash, I have confirmed the AgoraVideoFrame are properly sent and displayed on the other device.

If I need to provide other informations, I am happy to do so.
Thank you in advance!

XCFramework binary size too big

Hey all,

Are there any plans to reduce the binary frameworks' size? It seems to me the sizes are way too large.

Currently seeing AgoraRTCKit at ~430MB and BeQuic at 130MB.

Thanks.

修改原始錄音數據 耳返無效果

需求:用户唱歌的时候要加混响音效,耳返也要加上混响。

目前情况:修改录音原始数据后,送到远端的有混响音效效果。唱歌的人耳返没有效果。

修改数据时间点: onRecordAudioFrame 回调里面直接修改Buff数据

SDK版本号:3.1.1

v3.5.0.1 is incompatible with Swift Package Manager

SPM’s Version doc says a package version needs to be “a three period-separated integer, for example 1.0.0". That implies that 3.5.0.1 is not a valid package version.

If I enter 3.5.0.1 as the minimum package version in Xcode, Done is grayed out:
image

Xcode's Swift Packages > Update to Latest Package Versions also does not recognize the existence of v3.5.0.1. It resolves to v3.5.0 instead.

[INTEGRATION]

Describe the bug
iOS Cannot receive stream message when using realtime transcription feature

Expected behavior
Receive Stream Message when enable Realtime Transcription Feature

Smartphone (please complete the following information):

  • Device: iPhone X
  • OS: iOS 17
  • Version 4.2.2

Crash app in background

Hi, many thanks for this library and whole work around it.

We've experienced random crashes from our users when app is in background for a while, I report more details here:

Used SPM Version:

repositoryURL = "https://github.com/AgoraIO/AgoraRtcEngine_iOS";
requirement = {
				kind = upToNextMinorVersion;
				minimumVersion = 3.7.0;
};
Model: iPhone 13 Pro
RAM free: 790.48 MB
Disk free: 4.61 GB
Operating System Version:16.0.2
Jailbroken:No

Log:

Crashed: ahpl_main
EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x000000000000001d


Crashed: ahpl_main
0  AgoraRtcKit                    0x34c06c (Missing UUID e18e97fdcb2835b9b2c6dc2918fe37cf)
1  AgoraRtcKit                    0x4b6a78 agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 586060
2  AgoraRtcKit                    0x4b7274 agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 588104
3  AgoraRtcKit                    0x4b3ab8 agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 573836
4  AgoraRtcKit                    0x4b37d0 agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 573092
5  AgoraRtcKit                    0x4cff90 agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 689764
6  AgoraRtcKit                    0x5b06ec agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 1609152
7  AgoraRtcKit                    0x36fa84 (Missing UUID e18e97fdcb2835b9b2c6dc2918fe37cf)
8  AgoraRtcKit                    0x550fdc agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 1218224
9  AgoraRtcKit                    0x5a334c agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 1554976
10 AgoraRtcKit                    0x4a73c8 agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 522908
11 AgoraRtcKit                    0x4a7394 agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 522856
12 AgoraRtcKit                    0x34bce4 (Missing UUID e18e97fdcb2835b9b2c6dc2918fe37cf)
13 AgoraRtcKit                    0x34b4e0 (Missing UUID e18e97fdcb2835b9b2c6dc2918fe37cf)
14 AgoraRtcKit                    0x5a6928 agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 1568764
15 AgoraRtcKit                    0x394424 (Missing UUID e18e97fdcb2835b9b2c6dc2918fe37cf)
16 AgoraRtcKit                    0x3943b4 (Missing UUID e18e97fdcb2835b9b2c6dc2918fe37cf)
17 AgoraRtcKit                    0x394348 (Missing UUID e18e97fdcb2835b9b2c6dc2918fe37cf)
18 AgoraRtcKit                    0x5a3e1c agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 1557744
19 AgoraRtcKit                    0x685c40 agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 2482964
20 AgoraRtcKit                    0x681ef0 agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 2467268
21 AgoraRtcKit                    0x683fd0 agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 2475684
22 AgoraRtcKit                    0x6580c0 agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 2295700
23 AgoraRtcKit                    0x66a2c0 agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 2369940
24 AgoraRtcKit                    0x638f44 agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 2168344
25 AgoraRtcKit                    0x63bf90 agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 2180708
26 AgoraRtcKit                    0x65c544 agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 2313240
27 AgoraRtcKit                    0x35a5f0 (Missing UUID e18e97fdcb2835b9b2c6dc2918fe37cf)
28 AgoraRtcKit                    0x449d18 agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 140268
29 AgoraRtcKit                    0x4482c8 agora::rtc::IMediaRecorder::getMediaRecorder(agora::rtc::IRtcEngine*, agora::rtc::IMediaRecorderObserver*) + 133532
30 AgoraRtcKit                    0x39506c (Missing UUID e18e97fdcb2835b9b2c6dc2918fe37cf)
31 AgoraRtcKit                    0x3958b4 (Missing UUID e18e97fdcb2835b9b2c6dc2918fe37cf)
32 AgoraCore                      0x957c ahpl_so_register + 1928
33 AgoraCore                      0x75e4 ahpl_os_rename + 1660
34 AgoraCore                      0xbaf8 ahpl_mpq_timer_arg + 1008
35 AgoraCore                      0xdc3c ahpl_mpq_loop + 200
36 AgoraCore                      0xd174 ahpl_perf_set_callback + 2160
37 AgoraCore                      0x18080 ahpl_profile_clear_registered + 2488
38 libsystem_pthread.dylib        0x16cc _pthread_start + 148
39 libsystem_pthread.dylib        0xba4 thread_start + 8

[INTEGRATION]

Describe the bug
impact for all of my unit test, no such module AgoraRtcKit

To Reproduce
Steps to reproduce the behavior:

  1. add .package(
    url: "https://github.com/AgoraIO/AgoraRtcEngine_iOS",
    exact: "4.2.2"
    ) to SPM Module
  2. target dependencies: [ .product(name: "RtcBasic", package: "AgoraRtcEngine_iOS") ]
  3. Just run common unit test
  4. See error
Referenced from: <C4BD9BAA-6BCD-3BD0-B571-F26D7B9A8DAC> /Users/diiyo/Library/Developer/Xcode/DerivedData/Perqara-cnhuypusaxncxcborxzzqcvcvuag/Build/Products/Debug-iphonesimulator/AthenaiOSTests.xctest/AthenaiOSTests
 Reason: tried: '/Users/diiyo/Library/Developer/Xcode/DerivedData/Perqara-cnhuypusaxncxcborxzzqcvcvuag/Build/Products/Debug-iphonesimulator/AgoraRtcKit.framework/AgoraRtcKit' (code signature in <1E33CDC3-97F3-3750-8053-8705789E9E2E> '/Users/diiyo/Library/Developer/Xcode/DerivedData/Perqara-cnhuypusaxncxcborxzzqcvcvuag/Build/Products/Debug-iphonesimulator/AgoraRtcKit.framework/AgoraRtcKit' not valid for use in process: Trying to load an unsigned library), '/Users/diiyo/Library/Developer/Xcode/DerivedData/Perqara-cnhuypusaxncxcborxzzqcvcvuag/Build/Products/Debug-iphonesimulator/PackageFrameworks/AgoraRtcKit.framework/AgoraRtcKit' (no such file), '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks/AgoraRtcKit.framework/AgoraRtcKit' (no such file)

How to use this framework at SPM project?

I tried to use this framework in my SPM project, but this error came our: product 'AgoraRtcKit' required by package 'PROJECT_NAME' target 'TARGET_NAME' not found.

My Package.swift file is like this:

let package = Package(
    name: "PROJECT_NAME",
    platforms: [.iOS(.v13)],
    products: [.library(name: "LIBRARY_NAME", targets: ["TARGET_NAME"])],
    dependencies: [
        .package(url: "https://github.com/AgoraIO/AgoraRtcEngine_iOS.git", from: "3.7.0"),
    ],
    targets: [
        .target(
            name: "TARGET_NAME",
            dependencies: [
                "AgoraRtcKit",
            ]
        ),
        .testTarget(name: "PROJECT_NAME", dependencies: ["PROJECT_NAME"]),
    ],
    swiftLanguageVersions: [.v5]
)

How can I fix this error?

Doesn't compile on M1 Macs with a target for simulator

Title says it all.

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_AgoraRtcAudioVolumeInfo", referenced from:
      objc-class-ref in LiveRoom+Extension.o
  "_OBJC_CLASS_$_AgoraRtcEngineKit", referenced from:
      objc-class-ref in AgoraManager.o
ld: symbol(s) not found for architecture arm64

Difference between 2 methods of creating an AgoraRtcEngine?

What are the differences between creating an AgoraRtcEngineKit in this way:
agoraKit = AgoraRtcEngineKit.sharedEngine(withAppId: APP_ID, delegate: self)
To this way:
agoraKit = AgoraRtcEngineKit()

The reason I am asking is that I want to avoid providing an APP_ID when creating an AgoraRtcEngine.

pushExternalVideoFrame returns false

pushExternalVideoFrame returns false although the setExternalVideoSource is set to true.

Normal AgoraCameraSourcePush method does works, but when I switch to my custom push, it fails.
What could be causing this?
Is there any way that I can see a log?

func updateClientRole(_ role: AgoraClientRole) {
        print("updateClientRole,", role.title)
        self.role = role
        if role == .broadcaster {
            makeConfig(mirror: false)
            
            agoraKit.enableLocalVideo(true)
            agoraKit.enableLocalAudio(true)
            agoraKit.enableAudioVolumeIndication(250, smooth: 3, report_vad: true)
            agoraKit.setAudioProfile(.speechStandard, scenario: .communication)
            agoraKit.setExternalVideoSource(true, useTexture: true, pushMode: true)
            
// this works
            localVideoView = CustomVideoSourcePreview(frame: view.frame)
            videosView.appendBackgroundViewContainer(uid: myUID, itsTeacher: self.amTeacher).addSubview(localVideoView!)
            customCamera = AgoraCameraSourcePush(delegate: self, videoView: localVideoView!)
            self.customCamera?.startCapture(ofCamera: .front)
            self.localVideoView?.bindFrameToSuperviewBounds()
// this does not work
            let myVideoView = videosView.appendBackgroundViewContainer(uid: myUID, itsTeacher: self.amTeacher)
            avatarView = MyAvatarView(to: myVideoView)
            avatarView?.delegate = self
}


func myVideoCapture(_ capture: AgoraCameraSourcePush?, didOutputSampleBuffer pixelBuffer: CVPixelBuffer, rotation: Int, timeStamp: CMTime) {
        
        let videoFrame = AgoraVideoFrame()
        videoFrame.format = 12
        videoFrame.textureBuf = pixelBuffer
        videoFrame.time = timeStamp
        videoFrame.rotation = Int32(rotation)
        let success = agoraKit?.pushExternalVideoFrame(videoFrame)
        print("myVideoCapture.success",success) -> this print "myVideoCapture.success Optional(false)"
    }

[INTEGRATION] app is failed to compile in xcode 15

Describe the bug
Getting error when compiling the app
Building for iOS Simulator, but linking in dylib built for iOS, file 'agoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension' for architecture arm64

To Reproduce
Compile app in xcode 15 beta

Expected behavior
It should compile fine

Smartphone (please complete the following information):

  • Device: [iPhone14 Pro Max Simulator]
  • OS: [e.g. iOS 17 beta]

unknown log

hi, previously we're using old version of agora and now we updated into 3.5.1, I noticed that when user joins the room i'm seeing this logs:

Support FP16!
Not support dotproduct!
Not support SVE!

any idea about it? I also attached screenshot.
Screen Shot 2021-11-26 at 5 47 53 PM

Convert AgoraAudioFrame to CMSampleBuffer

hey! could i get some guidance on how to convert an AgoraAudioFrame into a CMSampleBuffer containing that audio? it doesn't look like any of your examples cover it

i imagine it looks something like this:

var formatDescription: CMAudioFormatDescription?
let bytes = (audioFrame.bytesPerSample / 8) * channelsPerFrame
formatDescription = AudioStreamBasicDescription(mSampleRate: audioFrame.samplesPerSec, mFormatID: kAudioFormatLinearPCM, mFormatFlags: kAudioFormatFlagIsSignedInteger | kAudioFormatFlagsNativeEndian | kAudioFormatFlagIsPacked, mBytesPerPacket: audioFrame.bytesPerSample, mFramesPerPacket: 1, mBytesPerFrame: audioFrame.bytesPerSample, mChannelsPerFrame: audioFrame.channels, mBitsPerChannel: <#T##UInt32#>, mReserved: <#T##UInt32#>)
var result = CMAudioFormatDescriptionCreate(allocator: kCFAllocatorDefault, asbd: <#T##UnsafePointer<AudioStreamBasicDescription>#>, layoutSize: <#T##Int#>, layout: <#T##UnsafePointer<AudioChannelLayout>?#>, magicCookieSize: <#T##Int#>, magicCookie: <#T##UnsafeRawPointer?#>, extensions: <#T##CFDictionary?#>, formatDescriptionOut: <#T##UnsafeMutablePointer<CMAudioFormatDescription?>#>)

but i'm not really sure

App Crash on Launch

Getting this error :

dyld[30739]: Library not loaded: '@rpath/AgoraJNDExtension.framework/AgoraJNDExtension'
Library not loaded: '@rpath/AgoraJNDExtension.framework/AgoraJNDExtension'

How to import in Objective-C project

Hey! i'm trying to depend on the swift package from an Objective-C target, i can build and run fine, but when i try to archive the project, i get an error saying

i'm not sure what i'm doing wrong, in my Objective-C target i've tried to follow what you do in your iOS examples in my .m file:

Screen Shot 2021-09-30 at 10 44 00 AM

i've tried changing my project settings, to no effect. I've set SWIFT_INSTALL_OBJC_HEADER to NO, and added a User Header search path of "$(BUILD_ROOT)/../IntermediateBuildFilesPath/UninstalledProducts/include".

is this a problem you're aware of? do you have any idea how i might be including Agora incorrectly

How to set video capture device?

I want the RtcEngine to use the AVCaptureDevice.DeviceType.builtInUltraWideCamera when streaming video to the user.
I noticed the AgoraVideoViewer SDK has this ability.

How do I accomplish this with the AgoraRtcEngine?

Mute Local Audio Stream Unexpected Behavior

Objective

Mute the users local audio stream so that it is not published to the channel and use AVAudioRecorder to detect the users speaking volume locally.

Issue

Calling muteLocalAudioStream(true) successfully stops publishing the audio stream to the channel, but AVAudioRecorder stops receiving local audio data which is unexpected. In the documentation it states:

  • As of v3.4.5, this method only sets the publishing status of the audio stream in the channel of AgoraRtcEngineKit
  • This method does not change the usage status of the audio-capturing device.

However this is not the observed behavior. Calling muteLocalAudioStream(true) seems to disable the devices microphone access.

Code

The objective of the code below is to start recording a users local audio using AVAudioRecorder after the current user joins a channel.

public class _AgoraClient: NSObject, AgoraRtcEngineDelegate {
    private let appId: String
    private let recorderUrl: URL
    
    private var agora: AgoraRtcEngineKit!
    private var recorder: AVAudioRecorder?
    private var timer: Timer?
   
    public init(appId: String) {
        self.appId = appId
        self.recorderUrl = FileManager.default
            .urls(for: .documentDirectory, in: .userDomainMask)[0]
            .appendingPathComponent("local_volume.m4a")
        super.init()
        
        agora = AgoraRtcEngineKit.sharedEngine(withAppId: appId, delegate: self)
    }
    
    deinit {
        leave()
        agora = nil
        stopRecorder()
        AgoraRtcEngineKit.destroy()
    }
    
    // MARK: AgoraRtcEngineDelegate

    public func rtcEngine(_ engine: AgoraRtcEngineKit, didLeaveChannelWith stats: AgoraChannelStats) {
        stopRecorder()
    }
    
    // MARK: Agora

    func join(uid: UInt, channel: String, token: String, muted: Bool, forceMuted: Bool, volume: Bool) {
        agora.joinChannel(byToken: token, channelId: channel, info: nil, uid: uid) { [weak self] _ in
            self?.agora.enableLocalAudio(true)
            self?.startRecorder()
        }
    }

    func leave() {
        agora.leaveChannel(nil)
    }

    func setMute(shouldMute: Bool) {
        print("MUTE AGORA: \(shouldMute)")
        agora.muteLocalAudioStream(shouldMute)
    }
    
    // MARK: AVAudioRecorder

    func startRecorder() {
        let settings = [
            AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
            AVSampleRateKey: 12000,
            AVNumberOfChannelsKey: 1,
            AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
        ]
        
        do {
            let session = AVAudioSession.sharedInstance()
            try session.setCategory(.playAndRecord, options: .mixWithOthers)
            try session.setActive(true)
            
            let recorder = try AVAudioRecorder(url: recorderUrl, settings: settings)
            recorder.isMeteringEnabled = true
            recorder.prepareToRecord()
            recorder.record()
            
            let timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true, block: { _ in
                recorder.updateMeters()
                let volume = Int(recorder.averagePower(forChannel: 0))
                print("RECORDER - volume \(volume)")
            })
            
            self.recorder = recorder
            self.timer = timer
            
            print("RECORDER - started")
        } catch {
            print(error)
        }
    }
    
    func stopRecorder() {
        timer?.invalidate()
        recorder?.stop()
        recorder?.deleteRecording()
        recorder = nil
        print("RECORDER - stopped")
    }
}

Output

  1. After joining the channel and starting the recorder the volume measured using AVAudioRecorder prints the correct volume levels.
  2. When agora.muteLocalAudioStream(true) is called the volume measured using AVAudioRecorder starts emitting -120 which is not expected.
  3. When agora.muteLocalAudioStream(false) is called the volume measured using AVAudioRecorder starts printing the correct volume levels again.
RECORDER - started
RECORDER - volume -63
RECORDER - volume -61
RECORDER - volume -64
RECORDER - volume -46
RECORDER - volume -64
RECORDER - volume -34
RECORDER - volume -41
RECORDER - volume -14
RECORDER - volume -51
RECORDER - volume -67
RECORDER - volume -67
MUTE AGORA: true
RECORDER - volume -91
RECORDER - volume -120
RECORDER - volume -120
RECORDER - volume -120
RECORDER - volume -120
RECORDER - volume -120
RECORDER - volume -120
RECORDER - volume -120
RECORDER - volume -120
RECORDER - volume -120
RECORDER - volume -120
RECORDER - volume -120
MUTE AGORA: false
RECORDER - volume -62
RECORDER - volume -66
RECORDER - volume -11
RECORDER - volume -9
RECORDER - volume -47
RECORDER - volume -43
RECORDER - volume -68
RECORDER - volume -66
RECORDER - volume -72
RECORDER - volume -60
RECORDER - volume -69
RECORDER - volume -70

Questions

Am I misinterpreting the documentation and this is actually the expected behavior?

If so, then what is the difference between enableLocalAudio vs. muteLocalAudioStream?

Is there another approach I should look into to achieve the stated objective?

Some warning when using the SPM package

Thanks for making this! We were finally able to dump Cocoapods.

There are a few warnings when using this package, should be easy to fix:

AgoraRtcKit.framework/Headers/AgoraRtcEngineKit.h:3340:35: Pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)
AgoraRtcKit.framework/Headers/AgoraRtcEngineKit.h:3340:35: Insert '_Nullable' if the pointer may be null
AgoraRtcKit.framework/Headers/AgoraRtcEngineKit.h:3340:35: Insert '_Nonnull' if the pointer should never be null

AgoraRtcKit.framework/Headers/AgoraRtcEngineKit.h:3593:67: Pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)
AgoraRtcKit.framework/Headers/AgoraRtcEngineKit.h:3593:67: Insert '_Nullable' if the pointer may be null
AgoraRtcKit.framework/Headers/AgoraRtcEngineKit.h:3593:67: Insert '_Nonnull' if the pointer should never be null

There's also this one (building with Xcode 13b1, not sure about 12.5.1):

AgoraRtcEngine_iOS/Package.swift The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 15.0.99.

If you guys actually still support iOS 8.0, then I don't think there's much that can be done. But if you don't support iOS 8, then perhaps this can be changed?

Thanks!

Our app has a local Swift Package that depeneds on Agora, dependencies not resolving

Our app depends on
(Note: we are updating from an old version of Agora (back from Nov, 2021))

LocalModule.Package has this:

.package(
  name: "AgoraRtcKit", // We also tried omitting this optional var
  url: "https://github.com/AgoraIO/AgoraRtcEngine_iOS",
  from: "4.1.1"
)

And I added "AgoraRtcKit" to the list of dependencies

dependencies: [
  "REDACTED",
  "REDACTED",
  "REDACTED",
  "AgoraRtcKit", // << Here
  "REDACTED",
  "REDACTED",
  .product(name: "REDACTED", package: "REDACTED"),
  .product(name: "REDACTED", package: "REDACTED"),
  .product(name: "REDACTED", package: "REDACTED"),
  .product(name: "REDACTED", package: "REDACTED"),
  .product(name: "REDACTED", package: "REDACTED")
]

And this simply won't load the package.

I see AgoraKitRtc in my resolved package dependencies, but it is unable to add it as a dependency of our target :(

Error: product 'AgoraRtcKit' required by package 'localmodule' target 'REDACTED' not found.

The way our app is architected, we can't add via xcode. Can someone help me get this working through this LocalModule.Package?

How to create audio call on background or not running state?

Currently, I'm facing the issue of connecting Agorasdk on the app's killed state. I have integrated the call kit through VoIP push notification. So, I can receive calls on the app killed state. But I don't know how to connect the AgoraSDK in the app's closed state. Any one help me?

Smudge error: Error downloading Pods

Starting this morning my CI has started throwing errors when trying to install your SDK:

Downloading Pods/AgoraRtcEngine_iOS/AgoraRtcKit.xcframework/ios-arm64_armv7/AgoraRtcKit.framework/AgoraRtcKit (326 MB)
      Error downloading object: Pods/AgoraRtcEngine_iOS/AgoraRtcKit.xcframework/ios-arm64_armv7/AgoraRtcKit.framework/AgoraRtcKit (d233218): Smudge error: Error downloading Pods/AgoraRtcEngine_iOS/AgoraRtcKit.xcframework/ios-arm64_armv7/AgoraRtcKit.framework/AgoraRtcKit (d23321862cff3e5270bbb98b0d48d6caf55086521d28103587a6e689c86fd4c3): batch response: This repository is over its data quota. Account responsible for LFS bandwidth should purchase more data packs to restore access.
      Errors logged to '/Users/vagrant/git/.git/lfs/logs/20230512T181804.526821.log'.
      Use `git lfs logs last` to view the log.
      error: external filter 'git-lfs filter-process' failed
      fatal: Pods/AgoraRtcEngine_iOS/AgoraRtcKit.xcframework/ios-arm64_armv7/AgoraRtcKit.framework/AgoraRtcKit: smudge filter lfs failed

Failed to install using SPM

Hello, today we've started to see the problem with installing your lib via Swift Package Manager.
It hangs out on the following screen and blocks several teammates to build our Xcode project.

image

"Reset Package Caches" doesn't help.
Installing on empty project has the same problem.
Installing previous versions has the same problem.

Looks like your lib binary is unavailable.
image

Thanks in advance for any advices how to resolve/bypass this.

when I receive call using Voip notifications I cant get sender vioce and sender cant get my voice

Describe the bug
I have used Agora Audio SDK and then received a call when the application was open it works perfectly
when I receive calls using VoIP notifications I can't get the sender's voice and the sender can't get my

I don't get any error regarding this

Video

Working example

WhatsApp.Video.2023-12-08.at.3.18.04.PM.mp4

Example of issue
https://github.com/AgoraIO/AgoraRtcEngine_iOS/assets/44164918/5b970b6b-67ab-4bb5-90cb-b0350d3d8481

  • Device: [e.g. iPhonexr, iPhone8]
  • OS: [e.g. 17.01]

Audience side video streaming is not working in SDK 4.1.6

While am upgrading my SDK to 4.1.6 from 3.7.0. Am getting below error

Incorrect NSStringEncoding value 0x8000100 detected. Assuming NSASCIIStringEncoding. Will stop this compatibility mapping behavior in the near future

Also audience side video streaming is not working when we broadcast from native mobile app. Its working fine when broadcast from web
Screenshot 2023-05-02 at 1 46 53 PM

Swift Package Manager: nanopb deployment target warning

Environment

Xcode version: Xcode 13.1
SDK version: 3.0.0
Installation method: Swift Package Manager
Problem

This dependency shows the following warning in Xcode 13.1 when integrating AgoraRtcKit using Swift Package Manager:

The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 15.0.99.

Screen Shot 2022-02-09 at 10 00 01 01PM

we can't publish voice and get voice from other devices

objc[1250]: Class HWDarwinResamplerImpl is implemented in both /private/var/containers/Bundle/Application/FB9ED148-D29C-40C5-B15D-3C14D419AE52/Venting.app/Frameworks/AgoraSpatialAudioExtension.framework/AgoraSpatialAudioExtension (0x107aecd18) and /private/var/containers/Bundle/Application/FB9ED148-D29C-40C5-B15D-3C14D419AE52/Venting.app/Frameworks/AgoraAudioBeautyExtension.framework/AgoraAudioBeautyExtension (0x105659940). One of the two will be used. Which one is undefined.

To Reproduce
Steps to reproduce the behavior:
Happen when the app will run

Expected behavior
we can't publish voice and get voice from other devices

SDK:- 4.1.1

Which is the latest voice call example?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.