Skip to content

Commit fa937b4

Browse files
authored
Merge pull request #193749 from garchiro7/main
Add Mobile UI library update over the TOC and content
2 parents 10fe50d + ab1b55c commit fa937b4

File tree

21 files changed

+312
-31
lines changed

21 files changed

+312
-31
lines changed
-58.1 KB
Loading
-32.8 KB
Loading
-123 KB
Loading

articles/communication-services/concepts/sdk-options.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ In the tables below we summarize these areas and availability of REST APIs and S
2020
Development of Calling and Chat applications can be accelerated by the [Azure Communication Services UI library](./ui-library/ui-library-overview.md). The customizable UI library provides open-source UI components for Web and mobile apps, and a Microsoft Teams theme.
2121

2222
## SDKs
23+
2324
| Assembly | Protocols| Environment | Capabilities|
2425
|--------|----------|---------|----------------------------------|
2526
| Azure Resource Manager | [REST](/rest/api/communication/communicationservice)| Service| Provision and manage Communication Services resources|
@@ -48,7 +49,7 @@ Publishing locations for individual SDK packages are detailed below.
4849
| Calling| [npm](https://www.npmjs.com/package/@azure/communication-calling) | [NuGet](https://www.NuGet.org/packages/Azure.Communication.Calling) | -| - | [GitHub](https://github.com/Azure/Communication/releases) | [Maven](https://search.maven.org/artifact/com.azure.android/azure-communication-calling/)| -|
4950
|Call Automation||[NuGet](https://www.NuGet.org/packages/Azure.Communication.CallingServer/)||[Maven](https://search.maven.org/artifact/com.azure/azure-communication-callingserver)
5051
|Network Traversal| [npm](https://www.npmjs.com/package/@azure/communication-network-traversal)|[NuGet](https://www.NuGet.org/packages/Azure.Communication.NetworkTraversal/) | [PyPi](https://pypi.org/project/azure-communication-networktraversal/) | [Maven](https://search.maven.org/search?q=a:azure-communication-networktraversal) | -|- | - |
51-
| UI Library| [npm](https://www.npmjs.com/package/@azure/communication-react) | - | - | - | - | - | [GitHub](https://github.com/Azure/communication-ui-library), [Storybook](https://azure.github.io/communication-ui-library/?path=/story/overview--page) |
52+
| UI Library| [npm](https://www.npmjs.com/package/@azure/communication-react) | - | - | - | [GitHub](https://github.com/Azure/communication-ui-library-ios) | [GitHub](https://github.com/Azure/communication-ui-library-android) | [GitHub](https://github.com/Azure/communication-ui-library), [Storybook](https://azure.github.io/communication-ui-library/?path=/story/overview--page) |
5253
| Reference Documentation | [docs](https://azure.github.io/azure-sdk-for-js/communication.html) | [docs](https://azure.github.io/azure-sdk-for-net/communication.html)| -| [docs](http://azure.github.io/azure-sdk-for-java/communication.html) | [docs](/objectivec/communication-services/calling/)| [docs](/java/api/com.azure.android.communication.calling)| -|
5354

5455
### SDK platform support details
@@ -63,10 +64,12 @@ Publishing locations for individual SDK packages are detailed below.
6364
Except for Calling, Communication Services packages target .NET Standard 2.0, which supports the platforms listed below.
6465

6566
Support via .NET Framework 4.6.1
67+
6668
- Windows 10, 8.1, 8 and 7
6769
- Windows Server 2012 R2, 2012 and 2008 R2 SP1
6870

6971
Support via .NET Core 2.0:
72+
7073
- Windows 10 (1607+), 7 SP1+, 8.1
7174
- Windows Server 2008 R2 SP1+
7275
- Max OS X 10.12+
@@ -78,13 +81,16 @@ Support via .NET Core 2.0:
7881
- Xamarin Mac 3.8
7982

8083
The Calling package supports UWP apps build with .NET Native or C++/WinRT on:
84+
8185
- Windows 10 10.0.17763
8286
- Windows Server 2019 10.0.17763
8387

8488
## REST APIs
89+
8590
Communication Services APIs are documented alongside other [Azure REST APIs in docs.microsoft.com](/rest/api/azure/). This documentation will tell you how to structure your HTTP messages and offers guidance for using [Postman](../tutorials/postman-tutorial.md). REST interface documentation is also published in Swagger format on [GitHub](https://github.com/Azure/azure-rest-api-specs).
8691

8792
### REST API Throttles
93+
8894
Certain REST APIs and corresponding SDK methods have throttle limits you should be mindful of. Exceeding these throttle limits will trigger a`429 - Too Many Requests` error response. These limits can be increased through [a request to Azure Support](../../azure-portal/supportability/how-to-create-azure-support-request.md).
8995

9096
| API| Throttle|
@@ -124,4 +130,4 @@ For more information, see the following SDK overviews:
124130
To get started with Azure Communication Services:
125131

126132
- [Create an Azure Communication Services resource](../quickstarts/create-communication-resource.md)
127-
- Generate [User Access Tokens](../quickstarts/access-tokens.md)
133+
- Generate [User Access Tokens](../quickstarts/access-tokens.md)

articles/communication-services/concepts/ui-library/includes/mobile-ui-use-cases.md

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Composites enable developers to easily integrate a whole calling experience into
3030
| | Participant roster |
3131
| Call configuration | Microphone device management |
3232
| | Camera device management |
33-
| | Speaker device management |
33+
| | Speaker device management(wired & bluetooth supported) |
3434
| | Local preview available for user to check video |
3535
| Call Controls | Mute/unmute call |
3636
| | Video on/off on call |
@@ -50,6 +50,10 @@ To enable Teams Interop, developers can use the calling composite, which will ta
5050

5151
:::image type="content" source="../../media/mobile-ui/teams-meet.png" alt-text="Pre-meeting experience":::
5252

53+
## View shared content
54+
55+
The Mobile UI Library provides the capability of the calling participants to view the shared content when other participants share their screens during the calling; also, the participant can zoom on the screen, making the pinching gestures over the screen to get a better look over the shared content.
56+
5357
## Theming
5458

5559
The UI Library Calling Composite for iOS and Android provides the capability for developers to update the theme of the all experience by passing a primary color. The Composite uses that primary color to provide appropriate theming across the experience.
@@ -58,7 +62,6 @@ The UI Library Calling Composite for iOS and Android provides the capability for
5862
| -------------------------------------------------------- | --------------------------------------------------------------- |
5963
| :::image type="content" source="../../media/mobile-ui/android-color.png" alt-text="android theming"::: | :::image type="content" source="../../media/mobile-ui/ios-dark.png" alt-text="iOS theming"::: |
6064

61-
6265
## Screen size
6366

6467
The calling composite offers to adapt to any screen size that would bring support from 5" screens to tablets, get the dynamic participants' roster layout, provide clarity on the view, and focus on the conversation.
@@ -67,6 +70,11 @@ The calling composite offers to adapt to any screen size that would bring suppor
6770
|---------|---------|
6871
| :::image type="content" source="../../media/mobile-ui/meet-splitscreen.png" alt-text="split screen"::: | :::image type="content" source="../../media/mobile-ui/tablet-landscape.png" alt-text="tablet mode"::: |
6972

73+
## Localization
74+
75+
Localization is a key to making products that can be used across the world and by people who speak different languages.
76+
77+
Localization is a key to making products that can be used across the world. The Mobile UI Library now provides support for 13 languages: ***English, Spanish, French, German, Italian, Japanese, Korean, Dutch, Portuguese, Russian, Turkish and Chinese*** and RTL capabilities.
7078

7179
## Recommended Architecture
7280

@@ -88,8 +96,8 @@ These client libraries also require the context for the call they will join. Sim
8896

8997
|Platform | Versions|
9098
|---------|---------|
91-
| iOS | iOS 13+ |
92-
| Android | v23+ |
99+
| iOS | iOS 14+ |
100+
| Android | v21+ |
93101

94102
> [!div class="nextstepaction"]
95-
> [Quickstart guides](../../../quickstarts/ui-library/get-started-composites.md)
103+
> [Quickstart guides](../../../quickstarts/ui-library/get-started-composites.md)
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
description: In this tutorial, you learn how to use the Calling composite on Android
3+
author: jorgegarc
4+
5+
ms.author: jorgegarc
6+
ms.date: 04/03/2022
7+
ms.topic: include
8+
ms.service: azure-communication-services
9+
---
10+
11+
[!INCLUDE [Public Preview Notice](../../../../includes/public-preview-include.md)]
12+
13+
Azure Communication UI [open source library](https://github.com/Azure/communication-ui-library-android) for Android and the sample application code can be found [here](https://github.com/Azure-Samples/communication-services-android-quickstarts/tree/main/ui-library-quick-start)
14+
15+
### Available Languages
16+
17+
The following table of `languageCode` with out of the box translations. If you want to localize the composite, pass the `languageCode` into `LocalizationConfiguration` as options into `CallComposite`.
18+
19+
|Language| LanguageCode|
20+
|---------|---------|
21+
|German| LanguageCode.GERMAN|
22+
|Japanese| LanguageCode.JAPANESE|
23+
|English| LanguageCode.ENGLISH_US|
24+
|Chinese (Traditional)| LanguageCode.CHINESE_TRADITIONAL|
25+
|Spanish |LanguageCode.SPANISH|
26+
|Chinese (Simplified) |LanguageCode.CHINESE_SIMPLIFIED|
27+
|Italian |LanguageCode.ITALIAN|
28+
|English (United Kingdom) |LanguageCode.ENGLISH_UK|
29+
|Korean |LanguageCode.KOREAN|
30+
|Turkish |LanguageCode.TURKISH|
31+
|Russian |LanguageCode.RUSSIAN|
32+
|French |LanguageCode.FRENCH|
33+
|Dutch |LanguageCode.DUTCH|
34+
|Portuguese |LanguageCode.BRAZILIAN_PORTUGUESE|
35+
36+
### Localization Provider
37+
38+
`LocalizationConfiguration` is an options wrapper that sets all the strings for Mobile UI Library components using a `languageCode`. By default, all text labels use English strings. If desired `LocalizationConfiguration` can be used to set a different `language`. Out of the box, the UI library includes a set of `language` usable with the UI components and composites.
39+
40+
You can also obtain list of `languageCode` by the static function `LanguageCode.values()`.
41+
42+
:::image type="content" source="media/android-localization.png" alt-text="Android localization":::
43+
44+
#### Usage
45+
46+
To use the `LocalizationConfiguration`, specify a `language` and pass it to the `CallCompositeOptions`. For the example below, we'll localize the composite to French.
47+
48+
```Kotlin
49+
val callComposite: CallComposite = CallCompositeBuilder().localization(LocalizationConfiguration(LanguageCode.FRENCH)).build()
50+
```
51+
52+
### Layout Direction
53+
54+
Certain cultures (Arabic, Hebrew, etc.) may need for localization to have right-to-left layout. You can specify the `layoutDirection` as part of the `LocalizationConfiguration`. The layout of the composite will be mirrored but the text will remain in the direction of the string.
55+
56+
```Koltin
57+
val callComposite: CallComposite = CallCompositeBuilder().localization(LocalizationConfiguration(LanguageCode.FRENCH,LaytoutDirection.RTL)).build()
58+
```
59+
60+
|`LayoutDirection.RTL` | `LayoutDirection.LTR` |
61+
| -------------------------------------------------------- | --------------------------------------------------------------- |
62+
| :::image type="content" source="media/android-rtl.png" alt-text="Android RTL"::: | :::image type="content" source="media/android-ltr.png" alt-text="Android LTR"::: |
63+
64+
### Customizing Translations
65+
66+
To override a particular string, you can find the list of localization keys here for the key-value pair. You can specify the `languageCode` to be one of the supported languages, and when a key isn't provided, will fall back to our supported translation string. If you specified an unsupported language, you should provide translations for all the keys for that language, and will fall back to English strings when a key isn't provided.
67+
68+
Create a `string.xml` file (or other filename) with the key-value pair for selected keys you want to override.
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
---
2+
description: In this tutorial, you learn how to use the Calling composite on iOS
3+
author: jorgegarc
4+
5+
ms.author: jorgegarc
6+
ms.date: 04/03/2022
7+
ms.topic: include
8+
ms.service: azure-communication-services
9+
---
10+
11+
[!INCLUDE [Public Preview Notice](../../../../includes/public-preview-include.md)]
12+
13+
Azure Communication UI [open source library](https://github.com/Azure/communication-ui-library-ios) for Android and the sample application code can be found [here](https://github.com/Azure-Samples/communication-services-ios-quickstarts/tree/main/ui-library-quick-start)
14+
15+
### Available Languages
16+
17+
The following table of `languageCode` with out of the box translations. If you want to localize the composite, pass the `languageCode` into `LocalizationConfiguration` as options into `CallComposite`.
18+
19+
| Language | LanguageCode (Enum) | rawValue |
20+
|:------------------------:|:------------------:|:------------:|
21+
| German | de | de |
22+
| Japanese | ja | ja |
23+
| English | en | en |
24+
| Chinese (Traditional) | zhHant | zh-Hant |
25+
| Spanish | es | es |
26+
| Chinese (Simplified) | zhHans | zh-Hans |
27+
| Italian | it | it |
28+
| English (United Kingdom) | enGB | en-GB |
29+
| Korean | ko | ko |
30+
| Turkish | tr | tr |
31+
| Russian | ru | ru |
32+
| French | fr | fr |
33+
| Dutch | nl | nl |
34+
| Portuguese | pt | pt |
35+
36+
You can also obtain list of `languageCode` by the static function `LocalizationConfiguration.supportedLanguages`.
37+
38+
```swift
39+
let languageCodes: [String] = LocalizationConfiguration.supportedLanguages
40+
print(languageCodes)
41+
42+
// ["de", "ja", "en", "zh-Hant", "es", "zh-Hans", "it", "en-GB", "ko", "tr", "ru", "fr", "nl", "pt"]
43+
```
44+
45+
### LocalizationConfiguration
46+
47+
`LocalizationConfiguration` is an options wrapper that sets all the strings for UI Library components using a `languageCode`. By default, all text labels use our English (`en`) strings. If desired, `LocalizationConfiguration` can be used to set a different `languageCode`. Out of the box, the UI library includes a set of `languageCode` usable with the UI components and composites.
48+
49+
#### Usage
50+
51+
To use the `LocalizationConfiguration`, specify a `languageCode` and pass it to the `CallCompositeOptions`. For the example below, we'll localize the composite to French (`fr`).
52+
53+
```swift
54+
let localizationConfig = LocalizationConfiguration(languageCode: "fr")
55+
let callCompositeOptions = CallCompositeOptions(localization: localizationConfig)
56+
let callComposite = CallComposite(withOptions: callCompositeOptions)
57+
```
58+
59+
:::image type="content" source="media/ios-localization.png" alt-text="iOS localization":::
60+
61+
### Layout Direction
62+
63+
Certain cultures (Arabic, Hebrew, etc.) may need for localization to have right-to-left layout. You can specify the `layoutDirection` as part of the `LocalizationConfiguration`. The layout of the composite will be mirrored but the text will remain in the direction of the string.
64+
65+
```swift
66+
var localizationConfig: LocalizationConfiguration
67+
68+
// Initializer with langaugeCode and layoutDirection
69+
localizationConfig = LocalizationConfiguration(languageCode: LanguageCode.en,
70+
layoutDirection: .rightToLeft)
71+
72+
// Initializer with langaugeCode, localizableFilename, and layoutDirection
73+
localizationConfig = LocalizationConfiguration(languageCode: LanguageCode.en,
74+
localizableFilename: "Localizable",
75+
layoutDirection: .rightToLeft)
76+
77+
// Add localization configuration as option
78+
let callCompositeOptions = CallCompositeOptions(localization: localizationConfig)
79+
let callComposite = CallComposite(withOptions: callCompositeOptions)
80+
```
81+
82+
You can see below the right-to-left layout mirroring, by default without specifying `layoutDirection` will default to false (left-to-right layout).
83+
84+
|`layoutDirection = .leftToRight` (default) | `layoutDirection = .rightToLeft` |
85+
| -------------------------------------------------------- | --------------------------------------------------------------- |
86+
| :::image type="content" source="media/ios-righttoleft-false.png" alt-text="iOS layout direction left-to-right"::: | :::image type="content" source="media/ios-righttoleft-true.png" alt-text="iOS layout direction right-to-left"::: |
87+
88+
### Customizing Translations
89+
90+
There are two options to customize the language translations that we provide. To override a particular string, you can find the list of localization keys here for the key-value pair. You can specify the `languageCode` to be one of the supported languages, and when a key isn't provided, will fall back to our supported translation string. If you specified an unsupported language, you should provide translations for all the keys for that language (using Localizable.strings file), and will fall back to English strings when a key isn't provided.
91+
92+
Let's say you wish to have the `ControlBar` with strings from our English (US) locale but you want to change the label of `JoinCall` button to "Start Meeting" (instead of "Join call") in Setup View.
93+
94+
#### Override using Localization.strings file
95+
96+
Enable Localization in the Project, below for the `languageCode` you want to override. Create a `Localizable.strings` file (or other filename with extension `.strings`) with the key-value pair for selected keys you want to override. In the example below, we're overriding the key `AzureCommunicationUI.SetupView.Button.JoinCall`.
97+
98+
:::image type="content" source="media/ios-setup-project.png" alt-text="iOS setup project":::
99+
100+
To specify you're overriding with Localization.strings, create a `LocalizationConfiguration` object to specify the `languageCode` and `localizationFilename`.
101+
102+
```swift
103+
let localizationConfig = LocalizationConfiguration(languageCode: LanguageCode.fr.rawValue,
104+
localizableFilename: "Localizable")
105+
let callCompositeOptions = CallCompositeOptions(localization: localizationConfig)
106+
let callComposite = CallComposite(withOptions: callCompositeOptions)
107+
```
108+
109+
:::image type="content" source="media/ios-custom-string.png" alt-text="iOS custom string":::
50.4 KB
Loading
30.2 KB
Loading
30.2 KB
Loading

0 commit comments

Comments
 (0)