All Projects → george-lim → zoom-service

george-lim / zoom-service

Licence: MIT license
An open-source Swift Zoom service for easier Zoom SDK integration into iOS applications.

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to zoom-service

rtcclient
RTCClient for Rational Team Concert
Stars: ✭ 33 (+175%)
Mutual labels:  rtc
TUICalling
腾讯云TRTC针对直播、语聊、视频通话等推出的低代码解决方案~
Stars: ✭ 28 (+133.33%)
Mutual labels:  rtc
magnify-3d
Real time Javascript optic magnifying glass library.
Stars: ✭ 37 (+208.33%)
Mutual labels:  zoom
anyHouse
高仿 ClubHouse,语音直播、语聊房、高音质、极速上麦,开源 ClubHouse,实现了Clubhouse的上麦,下麦,邀请,语音音量提示等功能。
Stars: ✭ 177 (+1375%)
Mutual labels:  rtc
KMCAgoraVRTC Android
金山魔方视频连麦方案Android:声网1对1视频直播连麦产品,是全球首个基于UDP的直播连麦SDK,支持iOS、Android、多平台互通,适配了5000+机型,在回声消除、降噪、防啸叫方面表现优异。
Stars: ✭ 15 (+25%)
Mutual labels:  rtc
Kcp
⚡ KCP - A Fast and Reliable ARQ Protocol
Stars: ✭ 10,473 (+87175%)
Mutual labels:  rtc
NeoPixel-60-Ring-Clock
Time displayed as a series of colored arcs on a 60 Ring NeoPixel
Stars: ✭ 15 (+25%)
Mutual labels:  rtc
ESP32Time
An Arduino library for setting and retrieving internal RTC time on ESP32 boards
Stars: ✭ 120 (+900%)
Mutual labels:  rtc
micropython-tinyrtc-i2c
MicroPython driver for TinyRTC I2C modules with DS1307 RTC and AT24C32N EEPROM
Stars: ✭ 38 (+216.67%)
Mutual labels:  rtc
MCP79412RTC
Arduino library for the Microchip MCP79411/12 Real-Time Clock/Calendar
Stars: ✭ 20 (+66.67%)
Mutual labels:  rtc
freeswitch-docker
Dockerfile for freeswitch
Stars: ✭ 40 (+233.33%)
Mutual labels:  rtc
MD DS3231
DS3231 Real Time Clock Library
Stars: ✭ 29 (+141.67%)
Mutual labels:  rtc
asciiZOOM
This alternative to Zoom offers a secure, end-to-end encrypted way to video chat from the safety of your terminal.
Stars: ✭ 28 (+133.33%)
Mutual labels:  zoom
MCP7940
Arduino Library to access the MCP7940M, MCP7940N and MCP7940x Real-Time chips
Stars: ✭ 29 (+141.67%)
Mutual labels:  rtc
mattermost-plugin-zoom
Zoom plugin for Mattermost 🔌
Stars: ✭ 93 (+675%)
Mutual labels:  zoom
quickstart-calls-directcall-ios
iOS sample for Direct Call of Sendbird Calls, guiding you to build a real-time voice and video calls quickly and easily.
Stars: ✭ 13 (+8.33%)
Mutual labels:  rtc
easy-voice-call
A self-hosting voice chating App
Stars: ✭ 30 (+150%)
Mutual labels:  rtc
vue2.0-zoom
vue2.0图片放大镜插件
Stars: ✭ 59 (+391.67%)
Mutual labels:  zoom
react-instagram-zoom-slider
🌄↔️ A slider component with pinch to zoom capabilities inspired by Instagram
Stars: ✭ 67 (+458.33%)
Mutual labels:  zoom
NERTC-Flutter-SDK
NetEase RTC plugin for Flutter Mobile
Stars: ✭ 18 (+50%)
Mutual labels:  rtc

Zoom Service
GitHub downloads GitHub release GitHub issues GitHub pull requests license

This project tries to make integrations with the Zoom SDK on Swift easier by providing all the properly configured functions for the user to use with their project.

  1. Installation
  2. Usage

Installation

Basics

Download the ZoomService.swift file and add it to your app manually. Zoom Service currently utilizes the singleton pattern, so it can be referenced from anywhere in your app.

Your app must first already have MobileRTC installed. For instructions on how to install MobileRTC into your app, follow my Zoom MobileRTC guide.

Example App

There is an example app provided with Zoom Service already integrated. Feel free to first explore Zoom Service through the example app before integrating it into your own app. Please read the README.md inside the example app before compiling.

Usage

Open up Xcode and launch the sample app. Navigate to ZoomService.swift. You need to fill in the data required by the ZoomAPI struct.

MobileRTC Authentication

If you haven't already, sign up for a Zoom Developer account which provides access to the Zoom REST API, Desktop SDKs, and most importantly, the MobileRTC stacks.

Choose the iOS MobileRTC Stack option once you have signed in, and under the credential tab, copy the APP Key and APP Secret into the appKey and appSecret into the ZoomAPI struct. The direct link to the credentials page is found here.

Finally, in your AppDelegate.swift file, add the line ZoomService.sharedInstance.authenticateSDK() in your didFinishLaunchingWithOptions function and you should be set.

Note: The APP Key and APP Secret are your credentials to authorize your use of the MobileRTC framework in your app. As of now, you still cannot start or join calls with Zoom Service until you are authorized as a Zoom API user or a Zoom member.

Zoom Authentication

In order to use Zoom, the app must first authenticate itself as an API user. Afterward, if you would like to have users authenticate themselves through their Zoom accounts, they can optionally sign in and Zoom authenticate the user as well.

Zoom API Authentication (Required) If your app requires the capability to start or create calls without the user signing in, you first need to obtain the API userID and userToken values.

Sign in to the Zoom developer site again and navigate to the REST API playground page. Note that your REST API credentials in the credentials tab and your MobileRTC credentials from earlier are NOT the same. On the playground page, change the API Endpoint to https://api.zoom.us/v1/user/getbyemail and the User Email Address to your email you used to create your Zoom developer account.

Press the Send API Request and scroll down until you see the Response array. Copy the value for id and token and paste them as the userID and userToken strings in the ZoomAPI struct respectively.

What we are doing is sending a REST API call through the Zoom developer REST API service to fetch our API ID and token values as if we are an API user. Using this data, we can authorize ourselves in our app as an API user.

Zoom Member Authentication (Optional) To authenticate the user as a Zoom member, you are required to implement your own app flow to retrieve the user's username and password values. After you have received them, call the ZoomService.sharedInstance.login(email: String, password: String) function in your code to authenticate the user.

Starting / Joining calls

These 2 features are available to both authentication types. Please note that API authenticated users can only utilize these 2 core functions in the MobileRTC Stack. This means that scheduling calls ahead of time is IMPOSSIBLE for an API user without using a separate Zoom REST API call which is outside the scope of MobileRTC. So to clarify, API authenticated users can only start a call (immediately) or join a call.

To join a call, simply execute ZoomService.sharedInstance.joinMeeting(number: String = ZoomAPI.defaultName, password: String = "") in your code. Neither parameter is required. The MobileRTC framework will then take over and present a view on top of your app which will launch the call.

Likewise, to start a call, simply execute ZoomService.sharedInstance.startMeeting(name: String = ZoomAPI.defaultName, number: Int = -1, password: String = "") in your code. If you specify a meeting number, Zoom Service will attempt to create a call for the number specified, and will return an error if someone is already using the meeting number. None of the parameters are required.

Meeting Scheduling / User Account Management

The following list of functions are exclusive to users who have signed in to their own Zoom accounts in your app. Zoom's SDK does not allow API users to schedule, edit, or delete meetings. To accomplish this, refer to Zoom's REST API usage.

func scheduleMeeting(topic: String, startTime: Date, timeZone: TimeZone = NSTimeZone.local, durationInMinutes: TimeInterval) - schedules a meeting ahead of time.

Note: the following functions require the user to have permission to edit the specified meeting. Otherwise, the functions will return an error.

func editMeeting(_ zoomMeeting: ZoomMeeting, topic: String? = nil, startTime: Date? = nil, timeZone: TimeZone? = nil, durationInMinutes: TimeInterval? = nil) - edits an existing Zoom meeting by ZoomMeeting reference.

func editMeeting(number: Int, topic: String? = nil, startTime: Date? = nil, timeZone: TimeZone? = nil, durationInMinutes: TimeInterval? = nil) - edits an existing Zoom meeting by meeting number.

func deleteMeeting(_ zoomMeeting: ZoomMeeting) - deletes an existing Zoom meeting by ZoomMeeting reference.

func deleteMeeting(number: Int) - deletes an existing Zoom meeting by meeting number.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].