Code Monkey home page Code Monkey logo

communication-services-ios-calling-hero's Introduction

page_type languages products
sample
swift
azure
azure-communication-services

Group Calling Sample

The sample is a native iOS application that uses the Azure Communication Services iOS client libraries to build a calling experience that features both voice and video calling. The application uses a server-side component to provision access tokens that are then used to initialize the Azure Communication Services client library. To configure this server-side component, feel free to follow the Trusted Service with Azure Functions tutorial.

Additional documentation for this sample can be found on Microsoft Docs. See this sample's wiki to see updated information on known issues

Features

  • Start a new group call
  • Join an existing group call
  • Join an existing Teams Meeting (For instructions: Teams Tenant Interoperability)
  • Render remote participant video streams
  • Turning local video stream from camera on/off
  • Mute/unmute local microphone audio

Homepage

Prerequisites

Before running the sample for the first time

  1. Run pod install on the root of the project directory. This generates AzureCalling.xcworkspace
  2. Open AzureCalling.xcworkspace in XCode.
  3. Create a text file called AppSettings.xcconfig at the root and add the following values:
communicationTokenFetchUrl = <URL for your Authentication Endpoint, without the https:// component>

Run Sample

  1. Build/Run in XCode

Securing Authentication Endpoint

For simple demonstration purposes, this sample uses a publicly accessible endpoint by default to fetch an Azure Communication Services access token. For production scenarios, it is recommended that the Azure Communication Services access token is returned from a secured endpoint.
With additional configuration, this sample also supports connecting to an Azure Active Directory (AAD) protected endpoint so that user login is required for the app to fetch an Azure Communication Services access token. See steps below:

  1. Enable Azure Active Directory authentication in your app.

  2. Go to your registered app overview page under Azure Active Directory App Registrations. Take note of the Application (client) ID, Directory (tenant) ID, Application ID URI Azure Active Directory Configuration

  3. Add the following values to the AppSettings.xcconfig file:

    communicationTokenFetchUrl = <Application ID URI, without the https://>
    aadClientId = <your Application (client) ID>
    aadTenantId = <your Directory (tenant) ID>
    

Optional Configuration

If you would like to specify a group call UUID or a teams link to join when using the app in your environment, you can add the following parameters to the AppSettings.xcconfig file:

displayName = <Your call display name> (optional)
groupCallUuid = <Group call UUID locator> (optional) 
teamsUrl = <teams URL to use, minus the protocol component (optional)>

Note that using a teamsUrl will override the group call UUID.

Additional Reading

Known Issues

Please refer to the wiki for known issues related to this sample.

communication-services-ios-calling-hero's People

Contributors

amyl219 avatar cheukchuen avatar ddematheu2 avatar emlynmac avatar gemakk avatar jimchou-dev avatar johnvugonabo avatar joshualai avatar leah-xia-microsoft avatar microsoft-github-operations[bot] avatar microsoftopensource avatar pavelprystinka avatar vhuseinova-msft avatar waynemo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 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

communication-services-ios-calling-hero's Issues

Remote Participant View not rendered in iOS app

I tried running this sample app replacing the token with our Communication Service token. I am able to install the app on 2 devices and test the call by creating a call and sharing the call id to another device.
I can see the audio works properly on both devices but the remote video is not rendered on any of the device.

MSALAuth hasn't been initialized.

Please provide us with the following information:
When trying to run the application without setting AAD, I get below exception and can't start a call.

MSALAuth hasn't been initialized.
2021-04-05 17:25:52.160517+0900 AzureCalling[1286:528670] [Storyboard] Unknown class _TtC12AzureCalling18ClickableStackView in Interface Builder file.
2021-04-05 17:25:52.163388+0900 AzureCalling[1286:528670] [Storyboard] Unknown class _TtC12AzureCalling18ClickableStackView in Interface Builder file.
2021-04-05 17:28:38.536337+0900 AzureCalling[1286:528729] Task <3A44EF61-F75E-420C-927B-2FCE84437CA5>.<1> finished with error [-1002] Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL" UserInfo={NSLocalizedDescription=unsupported URL, NSErrorFailingURLStringKey=endpoint=https://chazurecommunicationservices-int.communication.azure.com/;accesskey=nWSf0Pu6zWuRqzQnhqPpt+seJCTRPsV8SNzfj7/XHjMm8ywvCOHKN1PaR2UskaEKZAoZidrSB/F8SvB2fSKVMg==, NSErrorFailingURLKey=endpoint=https://chazurecommunicationservices-int.communication.azure.com/;accesskey=nWSf0Pu6zWuRqzQnhqPpt+seJCTRPsV8SNzfj7/XHjMm8ywvCOHKN1PaR2UskaEKZAoZidrSB/F8SvB2fSKVMg==, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <3A44EF61-F75E-420C-927B-2FCE84437CA5>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <3A44EF61-F75E-420C-927B-2FCE84437CA5>.<1>, NSUnderlyingError=0x280334000 {Error Domain=kCFErrorDomainCFNetwork Code=-1002 "(null)"}}
Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL" UserInfo={NSLocalizedDescription=unsupported URL, NSErrorFailingURLStringKey=endpoint=https://chazurecommunicationservices-int.communication.azure.com/;accesskey=nWSf0Pu6zWuRqzQnhqPpt+seJCTRPsV8SNzfj7/XHjMm8ywvCOHKN1PaR2UskaEKZAoZidrSB/F8SvB2fSKVMg==, NSErrorFailingURLKey=endpoint=https://chazurecommunicationservices-int.communication.azure.com/;accesskey=nWSf0Pu6zWuRqzQnhqPpt+seJCTRPsV8SNzfj7/XHjMm8ywvCOHKN1PaR2UskaEKZAoZidrSB/F8SvB2fSKVMg==, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <3A44EF61-F75E-420C-927B-2FCE84437CA5>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <3A44EF61-F75E-420C-927B-2FCE84437CA5>.<1>, NSUnderlyingError=0x280334000 {Error Domain=kCFErrorDomainCFNetwork Code=-1002 "(null)"}}

This issue is for a: (mark with an x)

- [x] bug report -> please search issues before submitting
- [ ] feature request
- [ ] documentation issue or request
- [ ] regression (a behavior that used to work and stopped in a new release)

Minimal steps to reproduce

Add communicationTokenFetchUrl and run the app
See MSALAuth hasn't been initialized. error in log
Click Start new call and app crashes.

Any log messages given by the failure

MSALAuth hasn't been initialized.
2021-04-05 17:31:06.535278+0900 AzureCalling[1300:530593] Task <B1B45D66-1ACE-4733-8E45-B2555CC038BC>.<1> finished with error [-1002] Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL" UserInfo={NSLocalizedDescription=unsupported URL, NSErrorFailingURLStringKey=endpoint=https://chazurecommunicationservices-int.communication.azure.com/;accesskey=nWSf0Pu6zWuRqzQnhqPpt+seJCTRPsV8SNzfj7/XHjMm8ywvCOHKN1PaR2UskaEKZAoZidrSB/F8SvB2fSKVMg==, NSErrorFailingURLKey=endpoint=https://chazurecommunicationservices-int.communication.azure.com/;accesskey=nWSf0Pu6zWuRqzQnhqPpt+seJCTRPsV8SNzfj7/XHjMm8ywvCOHKN1PaR2UskaEKZAoZidrSB/F8SvB2fSKVMg==, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDataTask <B1B45D66-1ACE-4733-8E45-B2555CC038BC>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <B1B45D66-1ACE-4733-8E45-B2555CC038BC>.<1>, NSUnderlyingError=0x283fde640 {Error Domain=kCFErrorDomainCFNetwork Code=-1002 "(null)"}}
Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL" UserInfo={NSLocalizedDescription=unsupported URL, NSErrorFailingURLStringKey=endpoint=https://chazurecommunicationservices-int.communication.azure.com/;accesskey=nWSf0Pu6zWuRqzQnhqPpt+seJCTRPsV8SNzfj7/XHjMm8ywvCOHKN1PaR2UskaEKZAoZidrSB/F8SvB2fSKVMg==, NSErrorFailingURLKey=endpoint=https://chazurecommunicationservices-int.communication.azure.com/;accesskey=nWSf0Pu6zWuRqzQnhqPpt+seJCTRPsV8SNzfj7/XHjMm8ywvCOHKN1PaR2UskaEKZAoZidrSB/F8SvB2fSKVMg==, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDataTask <B1B45D66-1ACE-4733-8E45-B2555CC038BC>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <B1B45D66-1ACE-4733-8E45-B2555CC038BC>.<1>, NSUnderlyingError=0x283fde640 {Error Domain=kCFErrorDomainCFNetwork Code=-1002 "(null)"}}

Expected/desired behavior

Expected to run the app without setting AAD

OS and Version?

Windows 7, 8 or 10. Linux (which distribution). macOS (Yosemite? El Capitan? Sierra?)
macOS Big Sur

Versions

11.2.3

Mention any other details that might be useful


Thanks! We'll be in touch soon.

Join Call Not working when connected with different token but same session id/ teams link in the single in App Session.

we have been trying to join call using the ios sdk using Acs/Teams by token that is received from an endpoint. Seems like different token and same session ID / Teams Link does not seems to join the call if ios joins in after web is in the call. The state is Connecting and then Disconnected from the sdk but never gets into Connected State. But same token and same session id always works. Also in case ios joins first in the meeting before web this works. The delegates are not getting called for Remote Participant as well.

For couple of times it works in the same session of the app after that it does not get connected. This behaviour have been reported past couple of weeks earlier to that it was working fine I guess. Are there any changes to the server made or is it a know issue?
If you could provide your inputs on the same at the earliest.

Couldn't compile code in Xcode 15

Please provide us with the following information:

This issue is for a: (mark with an x)

- [x] bug report -> please search issues before submitting
- [ ] feature request
- [ ] documentation issue or request
- [ ] regression (a behavior that used to work and stopped in a new release)

Minimal steps to reproduce

Download the code from Git, install pods, open workspace and try to compile with xcode 15

Any log messages given by the failure

Build target AzureCommunicationCalling of project Pods with configuration Debug
error: DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS, use TOOLCHAIN_DIR instead (in target 'AzureCommunicationCalling' from project 'Pods')

Expected/desired behavior

should compile...

OS and Version?

Windows 7, 8 or 10. Linux (which distribution). macOS (Yosemite? El Capitan? Sierra?)
MacOS Sonoma

Versions

Mention any other details that might be useful


Thanks! We'll be in touch soon.

Targeting macOS via Catalyst is not working

Please provide us with the following information:

This issue is for a: (mark with an x)

- [ ] bug report -> please search issues before submitting
- [x] feature request
- [ ] documentation issue or request
- [ ] regression (a behavior that used to work and stopped in a new release)

Minimal steps to reproduce

In target AzureCalling under Deployment Info enable checkbox for Mac to target iOS application to run on Mac Catalyst

Any log messages given by the failure

In MSAL preprocessor removes two flags when targeting Mac Catalyst:

Undefined symbol: _MSID_BROKER_APP_BUNDLE_ID
Undefined symbol: _MSID_BROKER_APP_BUNDLE_ID_DF

AzureCommunicationCalling XCFramework is not compiled for arm64/x86_64 Mac Catalyst:

No such module 'AzureCommunicationCalling'

Expected/desired behavior

Application runs on Mac Catalyst

OS and Version?

macOS 10.15 (Catalina) and newer
Xcode 13.0

Versions

AzureCommunicationCalling (1.1.0)
AzureCommunicationCommon (1.0.1)
AzureCore (1.0.0-beta.12)
MSAL (1.1.13)

Mention any other details that might be useful


Thanks! We'll be in touch soon.

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.