Git Product home page Git Product logo

agoraio-community / videouikit-ios Goto Github PK

View Code? Open in Web Editor NEW
63.0 7.0 9.0 17.58 MB

Swift package and CocoaPod to simply integrate Agora Video Calling or Live Video Streaming to your iOS or macOS app with just a few lines of code.

Home Page: https://agoraio-community.github.io/VideoUIKit-iOS/documentation/agorauikit

License: MIT License

Ruby 2.72% Swift 96.81% Shell 0.47%
macos cocoapods ios agoraio agora agora-sdk rtc video-streaming webrtc swift

videouikit-ios's Introduction

Agora Video UI Kit for iOS


Instantly integrate Agora in your own application or prototype using iOS. For macOS, see VideoUIKit-macOS.

More information available on this repo's Wiki

Click here for full documentation

To see full documentation for other packages in this repo, such as AgoraBroadcastExtensionHelper, AgoraAppGroupDataHelper or AgoraRtmControl, check them out here:

Requirements

Once you have an Agora developer account and an App ID, you're ready to use this package.

Installation

Swift Package Manager and CocoaPods are both available offered for installation methods.

The Pod for this package is called AgoraUIKit_iOS and AgoraUIKit_macOS for the two available platforms.

See the Installation wiki page for more information on installing the package.

Usage

Once installed, open your application .xcodeproj file. Or .xcworkspace if using CocoaPods.

The main view for Agora UIKit is AgoraVideoViewer. This is an example of a minimal creation that gives you a view similar to the one at the top of this README:

import AgoraRtcKit
import AgoraUIKit

let agoraView = AgoraVideoViewer(
    connectionData: AgoraConnectionData(
        appId: "<#my-app-id#>",
        rtcToken: "<#my-channel-token#>",
        rtmToken: "<#my-channel-rtm-token#>"
    ), delegate: self
)

Frame your newly created AgoraVideoViewer in the app scene, then join a channel by calling:

agoraView.join(channel: "test", as: .broadcaster)

More examples available on the wiki

Screen Sharing

For an example for screen sharing with Agora Video UI Kit and AgoraBroadcastExtensionHelper Quickstart, check out the example project here:

https://github.com/AgoraIO-Community/Video-UI-Kit-ScreenShare

Documentation

For full documentation, see our AgoraUIKit documentation page.

For other libraries in this package:

Error Handling and Troubleshooting

For tips on how to overcome some common errors, see the wiki page.

Roadmap

UIKits

The plan is to grow this library and have similar offerings across all supported platforms. There are already similar libraries for Android, React Native, Flutter and Web React so be sure to check them out.

UML Diagrams

  • AgoraUIKit

UML of AgoraUIKit

  • AgoraRtmControl

UML of AgoraRtmControl

generated with swiftplantuml classdiagram Sources

videouikit-ios's People

Contributors

digitallysavvy 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

videouikit-ios's Issues

[FEATURE] Join With Cam + Mic off

Describe the solution you'd like
Opting to join channel with camera and/or mic off

Describe alternatives you've considered
Muting either by code after joining would still require cam/mic permission to join

[BUG] SwiftUI Example does not work with RTM requests

Describe the bug
RTM request do not work for sending or receiving using SwiftUI View
This is because alerts can not be displayed with SwiftUI view representative

To Reproduce
Steps to reproduce the behavior:

  1. Use SwiftUI Example on device 1
  2. Use Other example on device 2 (macOS or iOS)
  3. Send request to device 1 from 2 - alert doesn't show on device 1
  4. Click send request button on device 1 - menu popup doesn't show

Expected behavior
Should be able to send requests

Desktop (please complete the following information):

  • OS: macOS
  • Version 11.5.2

Smartphone (please complete the following information):

  • Device: iPhone 12 Pro
  • OS: 14.7

Is it possible to receive a video call when the app is terminated, and answer this video call ?

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Some Methods are only available in iOS 13.0 or newer Error.

Describe the bug
I have installed the pod, and I am facing some issues with the files. Like

'secondarySystemBackground' is only available in iOS 13.0 or newer

To Reproduce
Steps to reproduce the behavior:

  1. Create a project with target 13.0 and create pods
  2. Install pods
  3. Try to build.

Expected behavior
It should run without any error as my least target is 13.0

Screenshots

Screenshot at Sep 08 12-49-18

Smartphone (please complete the following information):

  • Device: any iPhones
  • OS: iOS 13.0

Icons are undefined for macOS

When building on macOS following instructions for minimal implementation, the icons are missing.

From the code in UIButton+Extensions:

    #elseif os(macOS)
    /// SF Symbol name for camera icon for builtin button
    static var videoSymbol = "􀌟"
    /// SF Symbol name for camera alt icon for builtin button
    static var muteVideoSelectedSymbol: String?
    /// SF Symbol name for microphone icon for builtin button
    static var micSymbol = "􀊰"
    /// SF Symbol for microphone alt icon for builtin button
    static var muteMicSelectedSymbol: String? = "􀊲"
    /// SF Symbol for microphone muted flag
    static var micSlashSymbol = "􀊲"
    /// SF Symbol for flip camera builtin button
    static var cameraRotateSymbol = "􀌢"
    /// SF Symbol for beautify buitlin button
    static var wandSymbol = "􀜎"
    /// SF Symbol to appear behind user with camera off
    static var personSymbol = "􀓣"
    /// SF Symbol for sharing screen builtin button
    static var screenShareSymbol = "􀏧"
    /// SF Symbol for pin icon
    static var pinSymbol = "􀎧"

This seems like a bug, or at least it makes the example confusing.

[BUG] Cannot pin user if their camera is off (iOS Only)

Describe the bug
If a remote user has their camera off, they cannot be manually pinned using floating layout.

To Reproduce
Steps to reproduce the behavior:

  1. Join channel with two devices
  2. Turn off remote camera feed
  3. Attempt to select remote user from floating collection view
  4. User does not get pinned

Expected behavior
User with camera off should get pinned.

Smartphone (please complete the following information):

  • Device: iPhone 12 Pro
  • OS: 14.5

[BUG] Extension Marketplace methods aren't public

Describe the bug
Extension marketplace are set to internal (default), should be public

To Reproduce
Steps to reproduce the behavior:
Create AgoraVideoViewer instance and try call the setExtensionProperty methods.

Expected behavior
Methods should be public or open.

Pod Not Working

When i tried to install pod file pod ‘AgoraUIKit', i am getting below error and there is no any documentation at agora site like how to implement iOS with pod file. I have done demo using Framework only but now need to do with Pod file but its not working.

Analyzing dependencies
[!] No podspec exists at path /Users/XXXX/.cocoapods/repos/trunk/Specs/1/d/9/AgoraRtcEngine_iOS/3.1.2.60/AgoraRtcEngine_iOS.podspec.json.

[!] Smart quotes were detected and ignored in your Podfile. To avoid issues in the future, you should not use TextEdit for editing it. If you are not using TextEdit, you should turn off smart quotes in your editor of choice.

[!] Automatically assigning platform iOS with version 12.0 on target AgoraDemo because no platform was specified. Please specify a platform for this target in your Podfile. See https://guides.cocoapods.org/syntax/podfile.html#platform.

Invalid Token Error while creating recording

Hello,

We are trying to create recording for one to one person.

  1. We are calling an API to our server
  2. Server generates token, sid, resourceid & uid and send back to front end
  3. we are passing the same data to joinchannel method.

Still we are getting invalid token error

[BUG] UI API called from background thread

Describe the bug
Passing fetchToken=true in join channel call leads to 'UI API called from background thread' warning message from iOS and eventual crash.

Workaround is for app to manually get token and pass to Agora SDK instead of relying on Agora SDK to automatically fetch token.

To Reproduce
Steps to reproduce the behavior:

  1. From main thread, call - AgoraViewer.viewer.join(channel: channeId, as: role, fetchToken: true, uid: uid)

Expected behavior
AgoraUIKit should process fetchToken result in main thread

Screenshots
Screen Shot 2022-04-21 at 11 26 59 AM

Smartphone (please complete the following information):

  • Device: iPhone 13
  • OS: iOS 15
  • Version 4.0.0-preview.12

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.