A native iOS video chat app based on WebRTC

Overview

AppRTC - iOS implementation of the Google WebRTC Demo

About

This Xcode project is a native wrapper for the Google's WebRTC Demo. It organizes the WebRTC components into a cocoa pod that can be easily deployed into any Xcode project. The precompiled libWebRTC static library bundled with the pod works with 64-bit apps, unlike prior versions of WebRTC projects where only the 32-bit version was available. Currently, the project is designed to run on iOS Devices (iOS Simulator is not supported).

Included in this Xcode project is a native Storyboard based Room Locator and Video Chat View Controllers:

AppRTC - iOS WebRTC Client Pod

Features

  • Fully native objective-c 64-bit support
  • pre-compiled libWebRTC.a (saves you hours of compiling)
  • Starting in v1.0.2 we are now referencing pod libjingle_peerconnection maintained by Pristine.io that has a an automated libWebRTC.a build process
  • Utilizes Cocoa Pod dependency management
  • View Controllers to easily drop into your own project
  • Exposed APIs to easily customize and adapt to your needs (see below for more details)
  • Supports the most recent https://apprtc.appspot.com (October 2015)
  • We also have a fork of the Google AppRTC Web Server that maintains full compatibility with this project

Notes

The following resources were useful in helping get this project to where it is today:

Running the AppRTC App on your iOS Device

To run the app on your iPhone or iPad you can fork this repository and open the AppRTC.xcworkspace in Xcode and compile onto your iOS Device to check it out. By default the server address is set to https://apprtc.appspot.com.

Using the AppRTC Pod in your App

If you'd like to incorporate WebRTC Video Chat into your own application, you can install the AppRTC pod:

pod install AppRTC

From there you can look at the ARTCVideoChatViewController class in this repo. The following steps below detail the specific changes you will need to make in your app to add Video Chat.

Initialize SSL Peer Connection

WebRTC can communicate securely over SSL. This is required if you want to test over https://apprtc.appspot.com. You'll need to modify your AppDelegate.m class with the following:

  1. Import the RTCPeerConnectionFactory.h
#import "RTCPeerConnectionFactory.h"
  1. Add the following to your application:didFinishLaunchingWithOptions: method:
   [RTCPeerConnectionFactory initializeSSL];
  1. Add the following to your applicationWillTerminate: method:
   [RTCPeerConnectionFactory deinitializeSSL];

Add Video Chat

To add video chat to your app you will need 2 views:

  • Local Video View - Where the video is rendered from your device camera
  • Remote Video View - where the video is rendered for the remote camera

To do this, perform the following:

  1. In your ViewController or whatever class you are using that contains the 2 views defined above add the following headers imports:
#import <libjingle_peerconnection/RTCEAGLVideoView.h>
#import <AppRTC/ARDAppClient.h>
  1. The class should implement the ARDAppClientDelegate and RTCEAGLVideoViewDelegate protocols:
@interface ARTCVideoChatViewController : UIViewController <ARDAppClientDelegate, RTCEAGLVideoViewDelegate>
* `ARDAppClientDelegate` - Handles events when remote client connects and disconnect states. Also, handles events when local and remote video feeds are received.
* `RTCEAGLVideoViewDelegate` - Handles event for determining the video frame size.
  1. Define the following properties in your class:
@property (strong, nonatomic) ARDAppClient *client;
@property (strong, nonatomic) IBOutlet RTCEAGLVideoView *remoteView;
@property (strong, nonatomic) IBOutlet RTCEAGLVideoView *localView;
@property (strong, nonatomic) RTCVideoTrack *localVideoTrack;
@property (strong, nonatomic) RTCVideoTrack *remoteVideoTrack;
* *ARDAppClient* - Performs the connection to the AppRTC Server and joins the chat room
* *remoteView* - Renders the Remote Video in the view
* *localView* - Renders the Local Video in the view
  1. When initializing the the property variables make sure to set the delegates:
   /* Initializes the ARDAppClient with the delegate assignment */
   self.client = [[ARDAppClient alloc] initWithDelegate:self];
   
   /* RTCEAGLVideoViewDelegate provides notifications on video frame dimensions */
   [self.remoteView setDelegate:self];
   [self.localView setDelegate:self];
  1. Connect to a Video Chat Room
   [self.client setServerHostUrl:@"https://apprtc.appspot.com"];
   [self.client connectToRoomWithId:@"room123" options:nil];
  1. Handle the delegate methods for ARDAppClientDelegate
- (void)appClient:(ARDAppClient *)client didChangeState:(ARDAppClientState)state {
   switch (state) {
       case kARDAppClientStateConnected:
           NSLog(@"Client connected.");
           break;
       case kARDAppClientStateConnecting:
           NSLog(@"Client connecting.");
           break;
       case kARDAppClientStateDisconnected:
           NSLog(@"Client disconnected.");
           [self remoteDisconnected];
           break;
   }
}

- (void)appClient:(ARDAppClient *)client didReceiveLocalVideoTrack:(RTCVideoTrack *)localVideoTrack {
   self.localVideoTrack = localVideoTrack;
   [self.localVideoTrack addRenderer:self.localView];
}

- (void)appClient:(ARDAppClient *)client didReceiveRemoteVideoTrack:(RTCVideoTrack *)remoteVideoTrack {
   self.remoteVideoTrack = remoteVideoTrack;
   [self.remoteVideoTrack addRenderer:self.remoteView];
}

- (void)appClient:(ARDAppClient *)client didError:(NSError *)error {
   /* Handle the error */
}
  1. Handle the delegate callbacks for RTCEAGLVideoViewDelegate
- (void)videoView:(RTCEAGLVideoView *)videoView didChangeVideoSize:(CGSize)size {
/* resize self.localView or self.remoteView based on the size returned */
}

Contributing

If you'd like to contribute, please fork the repository and issue pull requests. If you have any special requests and want to collaborate, please contact me directly. Thanks!

Known Issues

The following are known issues that are being worked and should be released shortly:

  • When installing via CocoaPods in a swift project where you have use_frameworks! declared in your PodFile you may get the error message transitive dependencies that include static binaries. To resolve the issue you can add the following to your PodFile
pre_install do |installer|
    def installer.verify_no_static_framework_transitive_dependencies; end
end
Comments
  • Pods error - target has transitive dependencies that include static binaries

    Pods error - target has transitive dependencies that include static binaries

    Getting this error when trying to install via pods:

    Installing libjingle_peerconnection (11177.2.0)
    [!] The 'Pods-Dabble' target has transitive dependencies that include static binaries: (/Users/royhermann/Desktop/Development/Dabble/Pods/libjingle_peerconnection/libjingle_peerconnection/libWebRTC.a)
    

    Any ideas how to successfully install?

    Thanks

    opened by royherma 14
  • Support for one broadcaster and multiple viewers

    Support for one broadcaster and multiple viewers

    I think WebRTC should be able to support one broadcaster with multiple viewers Like apps like Periscope and Meerkat are doing. With this SDK it looks like you can only join a room and initiate a one to one communication. I would like to have the possibility to just follow / watch a stream from a room.

    Is there a workaround with the current library to achieve this? Is such functionality planned on the roadmap for this SDK? If I would want to implement this functionality in the SDK myself, how much would I need to change? Do you have any pointers about what to change where?

    opened by evermeer 5
  • iOS to iOS device not working

    iOS to iOS device not working

    I did not any change of your code, Just install in two iOS devices. Room connection is the success but there is no video or audio. It is mentionable that iOS device to Andriod device, iOS device to Web, iOS device to simulator working fine . Did you face same kind or similar kinds of problems?

    opened by sourov2008 2
  • AppRTC demo app vs Pod project

    AppRTC demo app vs Pod project

    Hi,

    I'd like to implement AppRTC in my own app, so add pod using cocoapods. It seems like AppRTC demo is using Development Pod in the project and the ARDAppClient is different from the Development Pod and the one in cocoapods, so it doesn't have properties like muting the sounds etc.

    What's your recommendation?

    opened by hansimmmi 2
  • iphone 5s doesn't support connection with last version of Mozilla firefox.

    iphone 5s doesn't support connection with last version of Mozilla firefox.

    I tested with iphone 5, it works, whereas iphone 5s doesn't work. It seems like there are processor differences or perhaps there are some incompatibilities inside the firefox and the RTCLib. I use a 42.0 firefox version. By the way, works fine with the Opera. Thanks

    opened by kos9kus 2
  • add mute and unmute audi functionallity

    add mute and unmute audi functionallity

    Hi,

    I'm using your library, but I can't find mute and unmute functionality. So, I decided to modify it on my own. I'm hoping that it will be useful for others.

    opened by a-athaullah 2
  • Compile libWebRTC.a to include x86_64

    Compile libWebRTC.a to include x86_64

    Hi, I tried to compile the webrtc stuff but i really couldnt work it out, even after a few days wasted on it. Please can you recompile the lib bundled with the cocoapod to handle the 64bit simulator too.

    Thanks

    opened by Reedyuk 2
  • Undefined symbols for architecture x86_64

    Undefined symbols for architecture x86_64

    Hi! I have installed pod 'AppRTC'. I'm trying to run on Simulator or Device but every time It builds with the following error:

     Ld /Users/User1/Library/Developer/Xcode/DerivedData/My_Dose-bvszghhzuxaoqpcrmsjvqqsqjpbn/Build/Products/Debug-iphonesimulator/AppRTC/AppRTC.framework/AppRTC normal x86_64
        cd /Users/User1/Documents/Proj/Proj/Pods
        export IPHONEOS_DEPLOYMENT_TARGET=8.0
        export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
        /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.2.sdk -L/Users/User1/Library/Developer/Xcode/DerivedData/My_Dose-bvszghhzuxaoqpcrmsjvqqsqjpbn/Build/Products/Debug-iphonesimulator/AppRTC -F/Users/User1/Library/Developer/Xcode/DerivedData/My_Dose-bvszghhzuxaoqpcrmsjvqqsqjpbn/Build/Products/Debug-iphonesimulator/AppRTC -F/Users/User1/Library/Developer/Xcode/DerivedData/My_Dose-bvszghhzuxaoqpcrmsjvqqsqjpbn/Build/Products/Debug-iphonesimulator/SocketRocket -filelist /Users/User1/Library/Developer/Xcode/DerivedData/My_Dose-bvszghhzuxaoqpcrmsjvqqsqjpbn/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/AppRTC.build/Objects-normal/x86_64/AppRTC.LinkFileList -install_name @rpath/AppRTC.framework/AppRTC -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -mios-simulator-version-min=8.0 -dead_strip -Xlinker -object_path_lto -Xlinker /Users/User1/Library/Developer/Xcode/DerivedData/My_Dose-bvszghhzuxaoqpcrmsjvqqsqjpbn/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/AppRTC.build/Objects-normal/x86_64/AppRTC_lto.o -Xlinker -export_dynamic -Xlinker -no_deduplicate -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -lc++ -licucore -lsqlite3 -lstdc++.6 -framework AVFoundation -framework AudioToolbox -framework CFNetwork -framework CoreAudio -framework CoreGraphics -framework CoreMedia -framework CoreVideo -framework GLKit -framework OpenGLES -framework QuartzCore -framework Security -framework AudioToolbox -framework AVFoundation -framework CFNetwork -framework CoreAudio -framework CoreGraphics -framework CoreMedia -framework CoreVideo -framework Foundation -framework GLKit -framework OpenGLES -framework QuartzCore -framework Security -framework SocketRocket -single_module -compatibility_version 1 -current_version 1 -Xlinker -dependency_info -Xlinker /Users/User1/Library/Developer/Xcode/DerivedData/My_Dose-bvszghhzuxaoqpcrmsjvqqsqjpbn/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/AppRTC.build/Objects-normal/x86_64/AppRTC_dependency_info.dat -o /Users/User1/Library/Developer/Xcode/DerivedData/My_Dose-bvszghhzuxaoqpcrmsjvqqsqjpbn/Build/Products/Debug-iphonesimulator/AppRTC/AppRTC.framework/AppRTC
    
    Undefined symbols for architecture x86_64:
    
      "_OBJC_CLASS_$_RTCSessionDescription", referenced from:
          objc-class-ref in ARDSignalingMessage.o
          objc-class-ref in RTCSessionDescription+JSON.o
          l_OBJC_$_CATEGORY_RTCSessionDescription_$_JSON in RTCSessionDescription+JSON.o
      "_OBJC_CLASS_$_RTCMediaConstraints", referenced from:
          objc-class-ref in ARDAppClient.o
          objc-class-ref in RTCMediaConstraints+JSON.o
          l_OBJC_$_CATEGORY_RTCMediaConstraints_$_JSON in RTCMediaConstraints+JSON.o
      "_OBJC_CLASS_$_RTCPair", referenced from:
          objc-class-ref in ARDAppClient.o
          objc-class-ref in RTCMediaConstraints+JSON.o
      "_OBJC_CLASS_$_RTCICECandidate", referenced from:
          objc-class-ref in ARDSignalingMessage.o
          objc-class-ref in RTCICECandidate+JSON.o
          l_OBJC_$_CATEGORY_RTCICECandidate_$_JSON in RTCICECandidate+JSON.o
      "_OBJC_CLASS_$_RTCICEServer", referenced from:
          objc-class-ref in ARDAppClient.o
          objc-class-ref in RTCICEServer+JSON.o
          l_OBJC_$_CATEGORY_RTCICEServer_$_JSON in RTCICEServer+JSON.o
      "_OBJC_CLASS_$_RTCPeerConnectionFactory", referenced from:
          objc-class-ref in ARDAppClient.o
    
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    Have anyone faced this issue before, and how can I fix this? Thanks for any help or pointers to the right direction.

    opened by nemezis16 1
  • Linking fails under XCode 8

    Linking fails under XCode 8

    By just cloning the repository, opening the xcodeproj file and buidling fails on Mac OS Sierra with XCode 8. I am afraid that this is actually an RTFM kind of question but can anybody shed a light on this?


    Ld /Users/ohshima/Library/Developer/Xcode/DerivedData/AppRTC-cccmzzkjdlyjqvaoisnlhyayvrnz/Build/Products/Debug-iphoneos/AppRTC.app/AppRTC normal arm64 cd /Users/ohshima/src/apprtc-ios export IPHONEOS_DEPLOYMENT_TARGET=8.1 export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk -L/Users/ohshima/Library/Developer/Xcode/DerivedData/AppRTC-cccmzzkjdlyjqvaoisnlhyayvrnz/Build/Products/Debug-iphoneos -L/Users/ohshima/src/apprtc-ios/Pods/libjingle_peerconnection -L/Users/ohshima/src/apprtc-ios/Pods/libjingle_peerconnection/libjingle_peerconnection -L/Users/ohshima/src/apprtc-ios/Lib -F/Users/ohshima/Library/Developer/Xcode/DerivedData/AppRTC-cccmzzkjdlyjqvaoisnlhyayvrnz/Build/Products/Debug-iphoneos -filelist /Users/ohshima/Library/Developer/Xcode/DerivedData/AppRTC-cccmzzkjdlyjqvaoisnlhyayvrnz/Build/Intermediates/AppRTC.build/Debug-iphoneos/AppRTC.build/Objects-normal/arm64/AppRTC.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -miphoneos-version-min=8.1 -dead_strip -Xlinker -object_path_lto -Xlinker /Users/ohshima/Library/Developer/Xcode/DerivedData/AppRTC-cccmzzkjdlyjqvaoisnlhyayvrnz/Build/Intermediates/AppRTC.build/Debug-iphoneos/AppRTC.build/Objects-normal/arm64/AppRTC_lto.o -Xlinker -no_deduplicate -fobjc-arc -fobjc-link-runtime -ObjC -lAppRTC -lSocketRocket -lWebRTC -lc -lc++ -licucore -lsqlite3 -lstdc++ -lstdc++.6 -framework AVFoundation -framework AudioToolbox -framework CFNetwork -framework CoreAudio -framework CoreGraphics -framework CoreMedia -framework CoreVideo -framework GLKit -framework OpenGLES -framework QuartzCore -framework Security -framework UIKit -framework VideoToolbox -lPods -framework WebRTC -Xlinker -dependency_info -Xlinker /Users/ohshima/Library/Developer/Xcode/DerivedData/AppRTC-cccmzzkjdlyjqvaoisnlhyayvrnz/Build/Intermediates/AppRTC.build/Debug-iphoneos/AppRTC.build/Objects-normal/arm64/AppRTC_dependency_info.dat -o /Users/ohshima/Library/Developer/Xcode/DerivedData/AppRTC-cccmzzkjdlyjqvaoisnlhyayvrnz/Build/Products/Debug-iphoneos/AppRTC.app/AppRTC

    ld: library not found for -lAppRTC clang: error: linker command failed with exit code 1 (use -v to see invocation)

    opened by yoshikiohshima 1
  •  Showing Recent Errors Only clang: error: linker command failed with exit code 1 (use -v to see invocation)

    Showing Recent Errors Only clang: error: linker command failed with exit code 1 (use -v to see invocation)

    HI, Im getting this error someone know what is the problem:

    Ld /Users/llongoria/Library/Developer/Xcode/DerivedData/AppRTC-anelwrjtwrbrmqdxkufqojcrsirc/Build/Products/Debug-iphoneos/AppRTC.app/AppRTC normal arm64 cd /Users/llongoria/Documents/RTCOMM/ios-apps/apprtc-ios export IPHONEOS_DEPLOYMENT_TARGET=8.1 export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk -L/Users/llongoria/Library/Developer/Xcode/DerivedData/AppRTC-anelwrjtwrbrmqdxkufqojcrsirc/Build/Products/Debug-iphoneos -L/Users/llongoria/Documents/RTCOMM/ios-apps/apprtc-ios/Pods/libjingle_peerconnection -L/Users/llongoria/Documents/RTCOMM/ios-apps/apprtc-ios/Pods/libjingle_peerconnection/libjingle_peerconnection -L/Users/llongoria/Documents/RTCOMM/ios-apps/apprtc-ios/Lib -F/Users/llongoria/Library/Developer/Xcode/DerivedData/AppRTC-anelwrjtwrbrmqdxkufqojcrsirc/Build/Products/Debug-iphoneos -filelist /Users/llongoria/Library/Developer/Xcode/DerivedData/AppRTC-anelwrjtwrbrmqdxkufqojcrsirc/Build/Intermediates/AppRTC.build/Debug-iphoneos/AppRTC.build/Objects-normal/arm64/AppRTC.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -miphoneos-version-min=8.1 -dead_strip -Xlinker -object_path_lto -Xlinker /Users/llongoria/Library/Developer/Xcode/DerivedData/AppRTC-anelwrjtwrbrmqdxkufqojcrsirc/Build/Intermediates/AppRTC.build/Debug-iphoneos/AppRTC.build/Objects-normal/arm64/AppRTC_lto.o -Xlinker -export_dynamic -Xlinker -no_deduplicate -fobjc-arc -fobjc-link-runtime -ObjC -lAppRTC -lSocketRocket -lWebRTC -lc -lc++ -licucore -lsqlite3 -lstdc++ -lstdc++.6 -framework AVFoundation -framework AudioToolbox -framework CFNetwork -framework CoreAudio -framework CoreGraphics -framework CoreMedia -framework CoreVideo -framework GLKit -framework OpenGLES -framework QuartzCore -framework Security -framework UIKit -framework VideoToolbox -lPods -Xlinker -dependency_info -Xlinker /Users/llongoria/Library/Developer/Xcode/DerivedData/AppRTC-anelwrjtwrbrmqdxkufqojcrsirc/Build/Intermediates/AppRTC.build/Debug-iphoneos/AppRTC.build/Objects-normal/arm64/AppRTC_dependency_info.dat -o /Users/llongoria/Library/Developer/Xcode/DerivedData/AppRTC-anelwrjtwrbrmqdxkufqojcrsirc/Build/Products/Debug-iphoneos/AppRTC.app/AppRTC

    ld: library not found for -lAppRTC clang: error: linker command failed with exit code 1 (use -v to see invocation) captura de pantalla 2016-09-23 a las 6 14 23 p m

    opened by llongoria 1
  • No visible @interface for 'ViewController' declares the selector 'remoteDisconnected'

    No visible @interface for 'ViewController' declares the selector 'remoteDisconnected'

    I implement code like example

    -(void)appClient:(ARDAppClient *)client didChangeState:(ARDAppClientState)state{ 
        switch (state) {
            case kARDAppClientStateConnected:
                NSLog(@"Client connected.");
                break;
            case kARDAppClientStateConnecting:
                NSLog(@"Client connecting.");
                break;
            case kARDAppClientStateDisconnected:
                NSLog(@"Client disconnected.");
                [self remoteDisconnected]; //error
                break;
        }
    }
    

    No visible @interface for 'ViewController' declares the selector 'remoteDisconnected'

    What is remoteDisconnected method? How I implement this method?

    opened by ghost 1
  • one-to-one videos

    one-to-one videos

    The demo works as the user and can implement one-to-one videos. However, as the initiator, the Demo cannot receive video data. WARNING: Renegotiation needed but unimplemented. Can you point out the problem for me? Thank you very much! Log: 2022-11-02 10:20:57.014586+0800 GoogleRTC[1869:1077629] Client connecting. 2022-11-02 10:20:57.028711+0800 GoogleRTC[1869:1077629] Joining room:263245191 on room server. 2022-11-02 10:20:57.291451+0800 GoogleRTC[1869:1078801] Joined room:263245191 on room server. 2022-11-02 10:20:57.291546+0800 GoogleRTC[1869:1078801] response.isInitiator 0 2022-11-02 10:20:57.291701+0800 GoogleRTC[1869:1078801] SocketRocket: In debug mode. Allowing connection to any root cert 2022-11-02 10:20:57.291799+0800 GoogleRTC[1869:1078801] Opening WebSocket. 2022-11-02 10:20:57.305154+0800 GoogleRTC[1869:1078801] Client connected. 2022-11-02 10:20:57.367078+0800 GoogleRTC[1869:1078927] WARNING: Renegotiation needed but unimplemented. 2022-11-02 10:20:57.372574+0800 GoogleRTC[1869:1078927] Signaling state changed: 3 2022-11-02 10:20:57.373521+0800 GoogleRTC[1869:1078927] Now receiving audio on track 1fda497c-1779-4ac9-b004-25b42b898f4b. 2022-11-02 10:20:57.373604+0800 GoogleRTC[1869:1078927] Now receiving video on track 2cbe2a0c-ade7-4d3b-8482-9e9926fd05b1. 2022-11-02 10:20:57.373634+0800 GoogleRTC[1869:1078927] Stream with 1 video tracks and 1 audio tracks was added. 2022-11-02 10:20:57.374084+0800 GoogleRTC[1869:1078801] turnServers count: 2 2022-11-02 10:20:57.374372+0800 GoogleRTC[1869:1078927] Signaling state changed: 0 2022-11-02 10:20:57.380442+0800 GoogleRTC[1869:1078927] ICE state changed: 1 2022-11-02 10:20:57.380973+0800 GoogleRTC[1869:1078927] ICE gathering state changed: 1 2022-11-02 10:20:57.381007+0800 GoogleRTC[1869:1077629] C->WSS POST: {"type":"answer","sdp":"v=0\r\no=- 1714313282759350461 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS ARDAMS\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 9 0 8 110 113 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:BZnv\r\na=ice-pwd:1cCvLCOLWVEXYVli4xl2WZzX\r\na=ice-options:trickle renomination\r\na=fingerprint:sha-256 5C:55:FD:AD:DD:65:E8:DF:32:C5:7A:5D:C1:9E:F3:B6:50:72:DD:61:68:EE:56:0A:B5:81:BC:65:43:6D:0B:5C\r\na=setup:active\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=sendrecv\r\na=msid:ARDAMS ARDAMSa0\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:113 telephone-event/16000\r\na=rtpmap:126 telephone-event/8000\r\na=ssrc:1144699195 cname:KkTeV7ochE3J5gkR\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 104 124 108 109 127\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:BZnv\r\na=ice-pwd:1cCvLCOLWVEXYVli4xl2WZzX\r\na=ice-options:trickle renomination\r\na=fingerprint:sha-256 5C:55:FD:AD:DD:65:E8:DF:32:C5:7A:5D:C1:9E:F3:B6:50:72:DD:61:68:EE:56:0A:B5:81:BC:65:43:6D:0B:5C\r\na=setup:active\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:13 urn:3gpp:video-orientation\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r2022-11-02 10:20:57.381187+0800 GoogleRTC[1869:1078927] ICE+DTLS state changed: 1 \na=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=sendrecv\r\na=msid:ARDAMS ARDAMSv0\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 H264/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=fmtp:96 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640c34\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:98 H264/90000\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=fmtp:98 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e034\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:104 VP8/90000\r\na=rtcp-fb:104 goog-remb\r\na=rtcp-fb:104 transport-cc\r\na=rtcp-fb:104 ccm fir\r\na=rtcp-fb:104 nack\r\na=rtcp-fb:104 nack pli\r\na=rtpmap:124 rtx/90000\r\na=fmtp:124 apt=104\r\na=rtpmap:108 red/90000\r\na=rtpmap:109 rtx/90000\r\na=fmtp:109 apt=108\r\na=rtpmap:127 ulpfec/90000\r\na=ssrc-group:FID 1066175242 3984746793\r\na=ssrc:1066175242 cname:KkTeV7ochE3J5gkR\r\na=ssrc:3984746793 cname:KkTeV7ochE3J5gkR\r\n"} 2022-11-02 10:20:57.383311+0800 GoogleRTC[1869:1077629] _roomId=263245191 /n_clientId=58352716 2022-11-02 10:20:57.384074+0800 GoogleRTC[1869:1077629] Setting isAudioEnabled to YES. 2022-11-02 10:20:57.384104+0800 GoogleRTC[1869:1077629] ICE state changed: 1 2022-11-02 10:20:57.384457+0800 GoogleRTC[1869:1077629] C->WSS POST: { "label" : 0, "id" : "0", "candidate" : "candidate:4091628843 1 udp 2122260223 192.168.10.165 58736 typ host generation 0 ufrag BZnv network-id 1 network-cost 10", "type" : "candidate" } 2022-11-02 10:20:57.384671+0800 GoogleRTC[1869:1077629] _roomId=263245191 /n_clientId=58352716 2022-11-02 10:20:57.385267+0800 GoogleRTC[1869:1077629] C->WSS POST: { "label" : 0, "id" : "0", "candidate" : "candidate:1077974913 1 udp 2122194687 169.254.95.147 50385 typ host generation 0 ufrag BZnv network-id 2 network-cost 10", "type" : "candidate" } 2022-11-02 10:20:57.385402+0800 GoogleRTC[1869:1077629] _roomId=263245191 /n_clientId=58352716 2022-11-02 10:20:57.406143+0800 GoogleRTC[1869:1077629] C->WSS POST: { "label" : 0, "id" : "0", "candidate" : "candidate:1064071864 1 udp 1686052607 117.30.114.189 58736 typ srflx raddr 192.168.10.165 rport 58736 generation 0 ufrag BZnv network-id 1 network-cost 10", "type" : "candidate" } 2022-11-02 10:20:57.406232+0800 GoogleRTC[1869:1077629] _roomId=263245191 /n_clientId=58352716 2022-11-02 10:20:57.419759+0800 GoogleRTC[1869:1078927] ICE gathering state changed: 2 2022-11-02 10:20:57.428269+0800 GoogleRTC[1869:1077629] WebSocket connection opened. 2022-11-02 10:20:57.428337+0800 GoogleRTC[1869:1077629] Registering on WSS for rid:263245191 cid:58352716 2022-11-02 10:20:57.509370+0800 GoogleRTC[1869:1078930] Received bad response:

    404 Not Found

    404 Not Found


    nginx/1.10.3 (Ubuntu)
    2022-11-02 10:20:57.634061+0800 GoogleRTC[1869:1079030] Received bad response: 404 Not Found

    404 Not Found


    nginx/1.10.3 (Ubuntu)
    2022-11-02 10:20:57.648283+0800 GoogleRTC[1869:1078930] Received bad response: 404 Not Found

    404 Not Found


    nginx/1.10.3 (Ubuntu)
    2022-11-02 10:20:57.653478+0800 GoogleRTC[1869:1078930] Received bad response: 404 Not Found

    404 Not Found


    nginx/1.10.3 (Ubuntu)
    opened by TuYuan 0
  • local and remote video not call delegate function

    local and remote video not call delegate function

    local and remote video not call delegate function and that is my code

        self.client = ARDAppClient.init()
           
                self.client?.serverHostUrl = "https://apprtc.appspot.com"
                self.client?.connectToRoom(withId: "room21234", options: nil)
    
        self.localVideo.delegate = self
        self.remoteVideo.delegate = self
    
    opened by mostafaahmedelsayed 1
  • How to capture a local vidoe stream apply filter and and share with peer

    How to capture a local vidoe stream apply filter and and share with peer

    I am looking to develop a module in iOS native app which will capture stream from local camera, apply some filters and then pass on to remote peer connection. Similar to what is given below

    Stream from a canvas element to a peer connection

    Any help would be appreciated.

    Regards,

    Rohit

    opened by just24idpl 0
Owner
ISBX
ISBX
A chat simulator app that uses FireBase for Authentication and chat storage

Chat-App Description Flash chat is a chat simulator app that uses FireBase for Authentication and chat storage Tools Used - Swift (Programming Languag

Victor Alvarenga 0 Oct 14, 2021
Swift-Chat-Application - Swift Chat Application Using Firebase , messagekit

Swift-Chat-Application Using Firebase , messagekit

Metin ATALAY 7 Oct 9, 2022
Open source, native iOS Messenger, with realtime chat conversations (full offline support).

OVERVIEW This is a native iOS Messenger app, with realtime chat conversations (full offline support). NEW FEATURES Passcode support GraphQL server sup

Related Code 4.5k Dec 26, 2022
A chat textbar for iOS inspired in whatssap app

ECMagicBar [![CI Status](https://img.shields.io/travis/Eduard Calero/ECMagicBar.

Eduard Calero 0 Dec 30, 2021
Anonymous chat app leveraging Google's Firebase, a NoSQL backend and WebSocket for real time data synching

Chaty Chaty is an anonymous chat app that allows millions of users to chat at the same time. Firebase is Google's real time NoSQL Backend as a Service

Terry Wang 369 Nov 26, 2022
Real time chat app written in Swift 5 using Firebase

Quick Chat for iOS Quick Chat for iOS is a real time chat app written in Swift 5 using Firebase. Quick Chat allows to send and receive text messages,

Henry Aslanyan 1.8k Dec 10, 2022
Fully Functional iOS14 Swift Chat app Using Firebase as backend.

Social Chat Messenger App This iOS14 Chat App is built with Swift in Xcode12 and Using Firebase as backend to authenticate users. Features Light and D

null 0 Nov 25, 2021
SwiftUIChatApp - SwiftUI Chat App

Simple chat application What is there to notice in this demo-app ? Animations Fi

Mehmet KaranlΔ±k 9 Aug 28, 2022
Bluetooth LE Mesh Chat for iOS and Android

BLEMeshChat Bluetooth LE mesh chat prototype for iOS. Android version over here. Goals Use the Bluetooth 4.0 Low Energy APIs on iOS and Android to all

Chris Ballinger 479 Dec 29, 2022
ChatSecure is a free and open source encrypted chat client for iOS that supports OTR and OMEMO encryption over XMPP.

ChatSecure ChatSecure is a free and open source XMPP messaging client for iOS that integrates OTR and OMEMO encrypted messaging support, and has optio

ChatSecure 3.1k Dec 31, 2022
Starter code for the Flash Chat project in the Complete iOS Development Bootcamp

Flash-Chat Our Goal One of the most fundamental component of modern iOS apps is the Table View. Table Views are used everywhere from the Mail app to t

The App Brewery 45 Jul 30, 2022
Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift

Real time Swift iOS Chat with Firebase - Messenger Clone This is an extremely simple chat app source code of an iOS Swift Chat app. It leverages Messa

Instamobile 615 Dec 27, 2022
Legacy mobile Rocket.Chat client in Swift for iOS

IMPORTANT: PLEASE READ THIS FIRST Rocket.Chat mobile is moving to React Native. Development on this repository by Rocket.Chat has now ceased. If your

Rocket.Chat 1k Dec 22, 2022
Spika is universal chat module with backend, web, ios and Android client.

Spika Spika is messenger module for Web/iOS/Android with backend. You can include messenger feature to your app or service with minimum code. For deta

Clover Studio 608 Dec 23, 2022
Real time chat application in Swift 5 using Firebase

Real time chat application in Swift 5 using Firebase

null 1 May 13, 2022
Create a real time chat application in Swift 5 using Firebase

Messenger Real Time Chat App Project to create a real time chat application in Swift 5 using Firebase. Features Facebook Log In Google Sign In Email/P

null 2 May 29, 2022
Flash-Chat - Firebase Cloud Firestore, TableViews and Cocoapod Dependencies

Flash-Chat Firebase Cloud Firestore, TableViews and Cocoapod Dependencies What I

null 0 Jan 19, 2022
🌟🌟🌟🌟🌟 Falcon Messenger is a Fast and Beautiful cloud-based messaging app. With iOS and IPadOS Support. Available on the App Store.

Open the FalconMessenger.xcworkspace in Xcode. Change the Bundle Identifier to match your domain. Go to Firebase and create new project. Select "Add F

null 397 Dec 31, 2022
Mobile app for Chatwoot - React Native

Mobile app for chatwoot platform. Built with React Native Chatwoot is an opensource alternative to Intercom, Zendesk, Drift, Crisp etc. Supported Chat

Chatwoot 388 Dec 28, 2022