<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.innovaphone.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Msc</id>
	<title>innovaphone wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.innovaphone.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Msc"/>
	<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Special:Contributions/Msc"/>
	<updated>2026-05-05T13:05:43Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Firmware_Upgrade_V15r1_V16r1&amp;diff=79743</id>
		<title>Howto16r1:Firmware Upgrade V15r1 V16r1</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Firmware_Upgrade_V15r1_V16r1&amp;diff=79743"/>
		<updated>2026-04-30T13:56:52Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Changes visible to the end customers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Applies To ==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* All 16r1 capable innovaphone devices&lt;br /&gt;
: For a general overview of the upgrade process and a list of supported devices with 16r1, see [[Howto:Firmware Upgrade]]&lt;br /&gt;
== Licenses ==&lt;br /&gt;
In case of cloud or rental model, don&#039;t worry about licenses.&lt;br /&gt;
&lt;br /&gt;
If the system is licensed on premise, you&#039;ll need to regenerate the license file for v16 in https://portal.innovaphone.com/ and load into the system before upgrade (The system needs to have the SSC up to date).&lt;br /&gt;
&lt;br /&gt;
== Migration Policy ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red; font-weight: bold&amp;quot;&amp;gt;Before you begin, be sure that your whole installation is running the latest 15r1 service release. Create backups before you start and store them on an external location&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AP Upgrade to Image 140037 or newer ===&lt;br /&gt;
* First, upgrade your application platform to at least image version 140037. After that you can go ahead.&lt;br /&gt;
&lt;br /&gt;
=== Upgrade Sequence ===&lt;br /&gt;
In systems of multiple units, it is important to update the tree from top to bottom. In other words, update the master unit first, and then the machines at the lower levels. If you&#039;re using a DevicesApp update job that updates the entire system at once, you don&#039;t need to do anything here.&lt;br /&gt;
&lt;br /&gt;
=== TechAssist Upgrade Helper ===&lt;br /&gt;
* Before you start, make sure that all TechAssist tests (you will receive the required tests in the last update in the previous major version) labelled &amp;lt;code&amp;gt;Pre Upgrade: xy&amp;lt;/code&amp;gt; are positive, if available&lt;br /&gt;
* When you are finished, make sure that all TechAssist tests (you will receive new tests with the upgrade) are positive&lt;br /&gt;
&lt;br /&gt;
== Changes visible to the end customers ==&lt;br /&gt;
Listed here are changes that should be communicated by resellers to end users prior to a upgrade, as the change will be visible/audible in the behaviour of the application/device.&lt;br /&gt;
&lt;br /&gt;
* 16r1 introduces the feature of [[Reference16r1:Concept_Reconnect_Calls | Reconnect Calls for Seamless Handover &amp;amp; Roaming]]. As a result, calls will not be dropped on network interruptions or PBX reboots. Instead users receive visual (MyApps or phone display) and audio (in-band tone) feedback and the call is reconnected automatically.&lt;br /&gt;
&lt;br /&gt;
== Manual steps needed after upgrade ==&lt;br /&gt;
If the installer is not used for a new installation, some new default settings are not set. Please evaluate per app whether you want to configure the new default settings manually.&lt;br /&gt;
&lt;br /&gt;
=== Connector for Microsoft 365 ===&lt;br /&gt;
If you plan to use the new &#039;&#039;&#039;Contact Search&#039;&#039;&#039; feature of the Connector for Microsoft 365, you need to perform two manual Steps:&lt;br /&gt;
# Create the &#039;&#039;&#039;microsoft365-api&#039;&#039;&#039; app object by using the Settings template&lt;br /&gt;
# Assign the &#039;&#039;&#039;microsoft365-api&#039;&#039;&#039; app object to every user who should be able to use the new Contact Search feature. (Of cause, you can use a template for that)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
For a more detailed guide, please refer to the how-to article: [[Howto16r1:Configure Contact Search by Connector for Microsoft365#Creating the PBX app object using the PBX Manager Plugin]]&lt;br /&gt;
&lt;br /&gt;
=== Remote Control ===&lt;br /&gt;
In order to use the Admin Configuration Panel of the Settings App – AP Remote Control, it is necessary to grant access to the &#039;&#039;&#039;admin&#039;&#039;&#039; API, available in the App tab of the Remote Control App object.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
For badge counts to work, the Working Manager app object must have &#039;&#039;&#039;Websocket&#039;&#039;&#039; and &#039;&#039;&#039;PbxSignal&#039;&#039;&#039; enabled.&lt;br /&gt;
For the Connect integration of the Working app, &#039;&#039;&#039;Websocket&#039;&#039;&#039;, &#039;&#039;&#039;Services&#039;&#039;&#039; and &#039;&#039;&#039;connect&#039;&#039;&#039;(in the Apps tab) must be enabled in the Working User app.&lt;br /&gt;
&lt;br /&gt;
=== Switchboard ===&lt;br /&gt;
For the Connect Integration (Call Notes) to work, the Switchboard App must have the &#039;&#039;&#039;Services&#039;&#039;&#039; (App-tab) and &#039;&#039;&#039;connect&#039;&#039;&#039; or &#039;&#039;&#039;messages&#039;&#039;&#039; (Apps-tab) enabled (the name depends when the PBX was installed).&lt;br /&gt;
&lt;br /&gt;
=== Projects ===&lt;br /&gt;
* Projects requires &#039;&#039;&#039;App platform version 140029&#039;&#039;&#039; or higher, so updating the App Platform before Projects is recommended. &amp;lt;br /&amp;gt;The Store will prohibit the update if the App Plattform does not have the minimum required version.&lt;br /&gt;
* For some extra admin-functionalities the &#039;&#039;&#039;Projects App Object needs to have an admin mode&#039;&#039;&#039; (App-tab). &amp;lt;br /&amp;gt;Easiest way to set this new mode is to the open the Projects App via the Projects Plugin Settings App and to re-apply it (click the OK-button). The same plugin can also be used to distribute this mode via the Config Templates.&lt;br /&gt;
* The &#039;&#039;&#039;App Platform requires the correct Time and a Timezone&#039;&#039;&#039; set under AP Manager/Settings/General. &amp;lt;br /&amp;gt;This is needed for some automatic cleanup of deleted items and automatic task status updates (done around 00:00h on the due date).&lt;br /&gt;
&lt;br /&gt;
=== For legacy support only: Change TLS Profile ===&lt;br /&gt;
The &#039;&#039;Normal&#039;&#039; profile has been updated to allow only TLS 1.3 and TLS 1.2. This setting is compatible with all supported firmware versions. So you don&#039;t need to do any changes.&lt;br /&gt;
However if you need older TLS versions for compatibility with legacy devices, consider changing the TLS profile to &#039;&#039;Legacy&#039;&#039;. In that case please see [[Reference16r1:IP4/General/TLS]] for details.&lt;br /&gt;
&lt;br /&gt;
== New Apps ==&lt;br /&gt;
New Apps will not be installed automatically by the upgrade. The installation description of new apps is usually in the concept article. Please rate per app whether you want to install/use the new app and configure it manually.&lt;br /&gt;
&lt;br /&gt;
; App Charts: [[Reference16r1:Concept_App_Charts]]&lt;br /&gt;
; App Polls: [[Reference16r1:Concept App Polls]]&lt;br /&gt;
; App MQTT Broker: [[Reference16r1:Concept_App_MQTT_Broker]]&lt;br /&gt;
; App Service Conference Scaler: [[Reference16r1:Concept_App_Service_Conference_Scaler]]&lt;br /&gt;
; App Service Conference Transcriptions: [[Reference16r1:Concept_App_Service_Conference_Transcriptions]]&lt;br /&gt;
; App Service Transcriptions: [[Reference16r1:Concept_App_Service_Transcriptions]]&lt;br /&gt;
; App Service Documents: [[Reference16r1:Concept_App_Service_Documents]]&lt;br /&gt;
; App Service Connector for Whatsapp: [[Reference16r1:Concept_App_Service_Connector_for_Whatsapp]]&lt;br /&gt;
; App Service IP: [[Reference16r1:Concept App Service IP]]&lt;br /&gt;
&lt;br /&gt;
== New environment for App Platform ==&lt;br /&gt;
The new [[Reference16r1:Concept_innovaphone_App_Platform_Container|App Platform Container]] provides an Docker container. This container offers a ready-to-use environment for myApps applications and the innovaphone PBX.&lt;br /&gt;
&lt;br /&gt;
== Removed ==&lt;br /&gt;
The following software is no longer included.&lt;br /&gt;
&lt;br /&gt;
* IP110A (can still be used with 15r1 firmware on current PBX versions)&lt;br /&gt;
* IP240A (can still be used with 15r1 firmware on current PBX versions)&lt;br /&gt;
* CA on CF card feature&lt;br /&gt;
&lt;br /&gt;
== Deprecated ==&lt;br /&gt;
The following software is based on legacy technology, with no further development and limited maintenance and support.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Nothing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Previously deprecated and now no longer supported == &lt;br /&gt;
The following software is based on legacy technology, with no further development and no more maintenance and support.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Nothing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
===Long Update-duration===&lt;br /&gt;
When you update, it can be up to 10 minutes before you have access to your app platform again.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Howto:Firmware_Upgrade]]&lt;br /&gt;
* [[Howto15r1:Firmware_Upgrade_V14r2_V15r1]]&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Firmware_Upgrade_V15r1_V16r1&amp;diff=79692</id>
		<title>Howto16r1:Firmware Upgrade V15r1 V16r1</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Firmware_Upgrade_V15r1_V16r1&amp;diff=79692"/>
		<updated>2026-04-28T12:09:13Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* New Apps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Applies To ==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* All 16r1 capable innovaphone devices&lt;br /&gt;
: For a general overview of the upgrade process and a list of supported devices with 16r1, see [[Howto:Firmware Upgrade]]&lt;br /&gt;
== Licenses ==&lt;br /&gt;
In case of cloud or rental model, don&#039;t worry about licenses.&lt;br /&gt;
&lt;br /&gt;
If the system is licensed on premise, you&#039;ll need to regenerate the license file for v16 in https://portal.innovaphone.com/ and load into the system before upgrade (The system needs to have the SSC up to date).&lt;br /&gt;
&lt;br /&gt;
== Migration Policy ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red; font-weight: bold&amp;quot;&amp;gt;Before you begin, be sure that your whole installation is running the latest 15r1 service release. Create backups before you start and store them on an external location&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AP Upgrade to Image 140037 or newer ===&lt;br /&gt;
* First, upgrade your application platform to at least image version 140037. After that you can go ahead.&lt;br /&gt;
&lt;br /&gt;
=== Upgrade Sequence ===&lt;br /&gt;
In systems of multiple units, it is important to update the tree from top to bottom. In other words, update the master unit first, and then the machines at the lower levels. If you&#039;re using a DevicesApp update job that updates the entire system at once, you don&#039;t need to do anything here.&lt;br /&gt;
&lt;br /&gt;
=== TechAssist Upgrade Helper ===&lt;br /&gt;
* Before you start, make sure that all TechAssist tests (you will receive the required tests in the last update in the previous major version) labelled &amp;lt;code&amp;gt;Pre Upgrade: xy&amp;lt;/code&amp;gt; are positive, if available&lt;br /&gt;
* When you are finished, make sure that all TechAssist tests (you will receive new tests with the upgrade) are positive&lt;br /&gt;
&lt;br /&gt;
== Changes visible to the end customers ==&lt;br /&gt;
Listed here are changes that should be communicated by resellers to end users prior to a upgrade, as the change will be visible/audible in the behaviour of the application/device.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Nothing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Manual steps needed after upgrade ==&lt;br /&gt;
If the installer is not used for a new installation, some new default settings are not set. Please evaluate per app whether you want to configure the new default settings manually.&lt;br /&gt;
&lt;br /&gt;
=== Connector for Microsoft 365 ===&lt;br /&gt;
If you plan to use the new &#039;&#039;&#039;Contact Search&#039;&#039;&#039; feature of the Connector for Microsoft 365, you need to perform two manual Steps:&lt;br /&gt;
# Create the &#039;&#039;&#039;microsoft365-api&#039;&#039;&#039; app object by using the Settings template&lt;br /&gt;
# Assign the &#039;&#039;&#039;microsoft365-api&#039;&#039;&#039; app object to every user who should be able to use the new Contact Search feature. (Of cause, you can use a template for that)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
For a more detailed guide, please refer to the how-to article: [[Howto16r1:Configure Contact Search by Connector for Microsoft365#Creating the PBX app object using the PBX Manager Plugin]]&lt;br /&gt;
&lt;br /&gt;
=== Remote Control ===&lt;br /&gt;
In order to use the Admin Configuration Panel of the Settings App – AP Remote Control, it is necessary to grant access to the &#039;&#039;&#039;admin&#039;&#039;&#039; API, available in the App tab of the Remote Control App object.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
For badge counts to work, the Working Manager app object must have &#039;&#039;&#039;Websocket&#039;&#039;&#039; and &#039;&#039;&#039;PbxSignal&#039;&#039;&#039; enabled.&lt;br /&gt;
For the Connect integration of the Working app, &#039;&#039;&#039;Websocket&#039;&#039;&#039;, &#039;&#039;&#039;Services&#039;&#039;&#039; and &#039;&#039;&#039;connect&#039;&#039;&#039;(in the Apps tab) must be enabled in the Working User app.&lt;br /&gt;
&lt;br /&gt;
=== Switchboard ===&lt;br /&gt;
For the Connect Integration (Call Notes) to work, the Switchboard App must have the &#039;&#039;&#039;Services&#039;&#039;&#039; (App-tab) and &#039;&#039;&#039;connect&#039;&#039;&#039; or &#039;&#039;&#039;messages&#039;&#039;&#039; (Apps-tab) enabled (the name depends when the PBX was installed).&lt;br /&gt;
&lt;br /&gt;
=== Projects ===&lt;br /&gt;
* Projects requires &#039;&#039;&#039;App platform version 140029&#039;&#039;&#039; or higher, so updating the App Platform before Projects is recommended. &amp;lt;br /&amp;gt;The Store will prohibit the update if the App Plattform does not have the minimum required version.&lt;br /&gt;
* For some extra admin-functionalities the &#039;&#039;&#039;Projects App Object needs to have an admin mode&#039;&#039;&#039; (App-tab). &amp;lt;br /&amp;gt;Easiest way to set this new mode is to the open the Projects App via the Projects Plugin Settings App and to re-apply it (click the OK-button). The same plugin can also be used to distribute this mode via the Config Templates.&lt;br /&gt;
* The &#039;&#039;&#039;App Platform requires the correct Time and a Timezone&#039;&#039;&#039; set under AP Manager/Settings/General. &amp;lt;br /&amp;gt;This is needed for some automatic cleanup of deleted items and automatic task status updates (done around 00:00h on the due date).&lt;br /&gt;
&lt;br /&gt;
=== For legacy support only: Change TLS Profile ===&lt;br /&gt;
The &#039;&#039;Normal&#039;&#039; profile has been updated to allow only TLS 1.3 and TLS 1.2. This setting is compatible with all supported firmware versions. So you don&#039;t need to do any changes.&lt;br /&gt;
However if you need older TLS versions for compatibility with legacy devices, consider changing the TLS profile to &#039;&#039;Legacy&#039;&#039;. In that case please see [[Reference16r1:IP4/General/TLS]] for details.&lt;br /&gt;
&lt;br /&gt;
== New Apps ==&lt;br /&gt;
New Apps will not be installed automatically by the upgrade. The installation description of new apps is usually in the concept article. Please rate per app whether you want to install/use the new app and configure it manually.&lt;br /&gt;
&lt;br /&gt;
; App Charts: [[Reference16r1:Concept_App_Charts]]&lt;br /&gt;
; App Polls: [[Reference16r1:Concept App Polls]]&lt;br /&gt;
; App MQTT Broker: [[Reference16r1:Concept_App_MQTT_Broker]]&lt;br /&gt;
; App Service Conference Scaler: [[Reference16r1:Concept_App_Service_Conference_Scaler]]&lt;br /&gt;
; App Service Conference Transcriptions: [[Reference16r1:Concept_App_Service_Conference_Transcriptions]]&lt;br /&gt;
; App Service Transcriptions: [[Reference16r1:Concept_App_Service_Transcriptions]]&lt;br /&gt;
; App Service Documents: [[Reference16r1:Concept_App_Service_Documents]]&lt;br /&gt;
; App Service Connector for Whatsapp: [[Reference16r1:Concept_App_Service_Connector_for_Whatsapp]]&lt;br /&gt;
; App Service IP: [[Reference16r1:Concept App Service IP]]&lt;br /&gt;
&lt;br /&gt;
== New environment for App Platform ==&lt;br /&gt;
The new [[Reference16r1:Concept_innovaphone_App_Platform_Container|App Platform Container]] provides an Docker container. This container offers a ready-to-use environment for myApps applications and the innovaphone PBX.&lt;br /&gt;
&lt;br /&gt;
== Removed ==&lt;br /&gt;
The following software is no longer included.&lt;br /&gt;
&lt;br /&gt;
* IP110A (can still be used with 15r1 firmware on current PBX versions)&lt;br /&gt;
* IP240A (can still be used with 15r1 firmware on current PBX versions)&lt;br /&gt;
* CA on CF card feature&lt;br /&gt;
&lt;br /&gt;
== Deprecated ==&lt;br /&gt;
The following software is based on legacy technology, with no further development and limited maintenance and support.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Nothing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Previously deprecated and now no longer supported == &lt;br /&gt;
The following software is based on legacy technology, with no further development and no more maintenance and support.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Nothing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
===Long Update-duration===&lt;br /&gt;
When you update, it can be up to 10 minutes before you have access to your app platform again.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Howto:Firmware_Upgrade]]&lt;br /&gt;
* [[Howto15r1:Firmware_Upgrade_V14r2_V15r1]]&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=79674</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=79674"/>
		<updated>2026-04-28T11:38:19Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Latest News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;!-- Message of the day --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
== Remote Support ==&lt;br /&gt;
[[Image:RemoteControl-click.png|left|60px|RemoteControl.png/|Download Remote Control|link=https://store.innovaphone.com/alpha/download/software/remotecontrolwindowsportable/16r1/remoteControl.exe]]&lt;br /&gt;
innovaphone only carries out scheduled remote maintenance via our ticket system by prior consultation.&amp;lt;br/&amp;gt;&lt;br /&gt;
As Remote Support Tool, we use our own product Remote Control ([https://www.innovaphone.com/en/all-apps/apps-to-work-with/remote-control-app.html more info]).&lt;br /&gt;
&lt;br /&gt;
You can &#039;&#039;&#039;[https://store.innovaphone.com/alpha/download/software/remotecontrolwindowsportable/16r1/remoteControl.exe download]&#039;&#039;&#039; the Remote Control client already or use the support link received from our support team.&amp;lt;br/&amp;gt;&lt;br /&gt;
After installing and opening the client you can &#039;&#039;&#039;pass the shown ID&#039;&#039;&#039; or &#039;&#039;&#039;use the received link&#039;&#039;&#039; to request the support session.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
Searching in wiki works, but is sometimes cumbersome.  However, you can have Google do the job for you.  Try [https://www.google.de/search?q=site%3Ainnovaphone.com+xml+documentation &amp;lt;code&amp;gt;site:innovaphone.com your search terms&amp;lt;/code&amp;gt;] to search the innovaphone sites for matches!&lt;br /&gt;
&lt;br /&gt;
If you still don&#039;t find what you are looking for, [mailto:presales@innovaphone.com drop us a message]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- latest news commented out, may be reactivated once there are new really --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- please insert new message ON TOP and remove extraneous (more than 5) old messages --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;nowiki&amp;gt; ~~~~ is replaced by your name and date automatically &amp;lt;/nowiki&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest News ==&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msc|Msc]] ([[User talk:Msc|talk]]) 13:38, 28 April 2026 (CEST)&amp;lt;/p&amp;gt; [[Support:Firmware V16r1 product/16r1/firmware 1610869 (final) available | Version 16r1 Final]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Cam|Cam]] ([[User talk:Cam|talk]]) 09:56, 16 April 2026 (CEST)&amp;lt;/p&amp;gt; [[Support:Firmware V15r1 product/15r1/firmware 1510715 (sr 12) available | Version 15r1 Service Release 12]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Cam|Cam]] ([[User talk:Cam|talk]]) 09:56, 16 April 2026 (CEST)&amp;lt;/p&amp;gt; [[Support:Firmware V14r2 product/14r2/firmware 1420589 (sr 20) available | Version 14r2 Service Release 20]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Aer|Aer]] ([[User talk:Aer|talk]]) 17:16, 25 March 2026 (CET)&amp;lt;/p&amp;gt; [[Support:Firmware V13r3 product/13r3/firmware 138046 (sr 36) available | Version 13r3 Service Release 36]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Tfu|Tfu]] 10:48, 24 February 2026 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:WinPDM Software 3130114 (4.2.1) released| WinPDM Software 3130113 (4.2.1)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Tfu|Tfu]] ([[User talk:Tfu&amp;amp;action=edit&amp;amp;redlink=1|talk]]) 15:28, 13 March 2025 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP73 1012 (6.1.13) released| Wireless Handset Firmware IP73 1012 (6.1.13) released]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msu|Msu]] ([[User talk:Msu&amp;amp;action=edit&amp;amp;redlink=1|talk]]) 15:54, 18 February 2025 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP64 10317 (4.3.2)/IP65 10122 (4.3.2) released| Wireless Handset Firmware IP64 10317 (4.3.2)/IP65 10122 (4.3.2)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msu|Msu]] ([[User talk:Msu&amp;amp;action=edit&amp;amp;redlink=1|talk]]) 15:54, 18 February 2025 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware D83 10002 (2.0.5) released| Wireless Handset Firmware D83 10002 (2.0.5)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 15:38, 6 February 2023 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP62 3040621 (6.2.7) released| Wireless Handset Firmware IP62 3040621 (6.2.7)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 12:46, 16 June 2021 (CEST))&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:TAPI Service Provider 8188 (hotfix21) available|TAPI Service Provider 8188 (hotfix21)]] is now available from [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 18:21, 12 October 2020 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP61 3022811 (4.7.8)/IP63 3022912 (4.7.8) released| Wireless Handset Firmware IP61 3022811 (4.7.8)/IP63 3022912 (4.7.8)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 21:30, 27 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware and Management Software product/9.00/wireless 100037 (hotfix19) available| Wireless Package hotfix 19]] is now available from the [http://download.innovaphone.com/ice/9.00#wireless V9 download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Articles ==&lt;br /&gt;
&amp;lt;!-- https://www.mediawiki.org/wiki/Extension:Newest_Pages --&amp;gt;&lt;br /&gt;
{{Special:Newestpages/all/20}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em; font-size:1&amp;quot;&amp;gt;&lt;br /&gt;
== More innovaphone Ressources ==&lt;br /&gt;
* [http://www.innovaphone.com Home Page]&lt;br /&gt;
* [http://download.innovaphone.com Download Site ]&lt;br /&gt;
* [http://my.innovaphone.com my.innovaphone ]&lt;br /&gt;
* [http://mantis.innovaphone.com/ Ticketing System ]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Firmware_Upgrade_V15r1_V16r1&amp;diff=79634</id>
		<title>Howto16r1:Firmware Upgrade V15r1 V16r1</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Firmware_Upgrade_V15r1_V16r1&amp;diff=79634"/>
		<updated>2026-04-28T09:44:05Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* New Apps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Applies To ==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* All 16r1 capable innovaphone devices&lt;br /&gt;
: For a general overview of the upgrade process and a list of supported devices with 16r1, see [[Howto:Firmware Upgrade]]&lt;br /&gt;
== Licenses ==&lt;br /&gt;
In case of cloud or rental model, don&#039;t worry about licenses.&lt;br /&gt;
&lt;br /&gt;
If the system is licensed on premise, you&#039;ll need to regenerate the license file for v16 in https://portal.innovaphone.com/ and load into the system before upgrade (The system needs to have the SSC up to date).&lt;br /&gt;
&lt;br /&gt;
== Migration Policy ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red; font-weight: bold&amp;quot;&amp;gt;Before you begin, be sure that your whole installation is running the latest 15r1 service release. Create backups before you start and store them on an external location&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AP Upgrade to Image 140029 or newer ===&lt;br /&gt;
* First, upgrade your application platform to at least image version 140029. After that you can go ahead.&lt;br /&gt;
&lt;br /&gt;
=== Upgrade Sequence ===&lt;br /&gt;
In systems of multiple units, it is important to update the tree from top to bottom. In other words, update the master unit first, and then the machines at the lower levels. If you&#039;re using a DevicesApp update job that updates the entire system at once, you don&#039;t need to do anything here.&lt;br /&gt;
&lt;br /&gt;
=== TechAssist Upgrade Helper ===&lt;br /&gt;
* Before you start, make sure that all TechAssist tests (you will receive the required tests in the last update in the previous major version) labelled &amp;lt;code&amp;gt;Pre Upgrade: xy&amp;lt;/code&amp;gt; are positive, if available&lt;br /&gt;
* When you are finished, make sure that all TechAssist tests (you will receive new tests with the upgrade) are positive&lt;br /&gt;
&lt;br /&gt;
== Changes visible to the end customers ==&lt;br /&gt;
Listed here are changes that should be communicated by resellers to end users prior to a upgrade, as the change will be visible/audible in the behaviour of the application/device.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Nothing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Manual steps needed after upgrade ==&lt;br /&gt;
If the installer is not used for a new installation, some new default settings are not set. Please evaluate per app whether you want to configure the new default settings manually.&lt;br /&gt;
&lt;br /&gt;
=== Connector for Microsoft 365 ===&lt;br /&gt;
If you plan to use the new &#039;&#039;&#039;Contact Search&#039;&#039;&#039; feature of the Connector for Microsoft 365, you need to perform two manual Steps:&lt;br /&gt;
# Create the &#039;&#039;&#039;microsoft365-api&#039;&#039;&#039; app object by using the Settings template&lt;br /&gt;
# Assign the &#039;&#039;&#039;microsoft365-api&#039;&#039;&#039; app object to every user who should be able to use the new Contact Search feature. (Of cause, you can use a template for that)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
For a more detailed guide, please refer to the how-to article: [[Howto16r1:Configure Contact Search by Connector for Microsoft365#Creating the PBX app object using the PBX Manager Plugin]]&lt;br /&gt;
&lt;br /&gt;
=== Remote Control ===&lt;br /&gt;
In order to use the Admin Configuration Panel of the Settings App – AP Remote Control, it is necessary to grant access to the &#039;&#039;&#039;admin&#039;&#039;&#039; API, available in the App tab of the Remote Control App object.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
For badge counts to work, the Working Manager app object must have &#039;&#039;&#039;Websocket&#039;&#039;&#039; and &#039;&#039;&#039;PbxSignal&#039;&#039;&#039; enabled.&lt;br /&gt;
For the Connect integration of the Working app, &#039;&#039;&#039;Websocket&#039;&#039;&#039;, &#039;&#039;&#039;Services&#039;&#039;&#039; and &#039;&#039;&#039;connect&#039;&#039;&#039;(in the Apps tab) must be enabled in the Working User app.&lt;br /&gt;
&lt;br /&gt;
=== Switchboard ===&lt;br /&gt;
For the Connect Integration (Call Notes) to work, the Switchboard App must have the &#039;&#039;&#039;Services&#039;&#039;&#039; (App-tab) and &#039;&#039;&#039;connect&#039;&#039;&#039; or &#039;&#039;&#039;messages&#039;&#039;&#039; (Apps-tab) enabled (the name depends when the PBX was installed).&lt;br /&gt;
&lt;br /&gt;
=== Projects ===&lt;br /&gt;
* Projects requires &#039;&#039;&#039;App platform version 140029&#039;&#039;&#039; or higher, so updating the App Platform before Projects is recommended. &amp;lt;br /&amp;gt;The Store will prohibit the update if the App Plattform does not have the minimum required version.&lt;br /&gt;
* For some extra admin-functionalities the &#039;&#039;&#039;Projects App Object needs to have an admin mode&#039;&#039;&#039; (App-tab). &amp;lt;br /&amp;gt;Easiest way to set this new mode is to the open the Projects App via the Projects Plugin Settings App and to re-apply it (click the OK-button). The same plugin can also be used to distribute this mode via the Config Templates.&lt;br /&gt;
* The &#039;&#039;&#039;App Platform requires the correct Time and a Timezone&#039;&#039;&#039; set under AP Manager/Settings/General. &amp;lt;br /&amp;gt;This is needed for some automatic cleanup of deleted items and automatic task status updates (done around 00:00h on the due date).&lt;br /&gt;
&lt;br /&gt;
=== For legacy support only: Change TLS Profile ===&lt;br /&gt;
The &#039;&#039;Normal&#039;&#039; profile has been updated to allow only TLS 1.3 and TLS 1.2. This setting is compatible with all supported firmware versions. So you don&#039;t need to do any changes.&lt;br /&gt;
However if you need older TLS versions for compatibility with legacy devices, consider changing the TLS profile to &#039;&#039;Legacy&#039;&#039;. In that case please see [[Reference16r1:IP4/General/TLS]] for details.&lt;br /&gt;
&lt;br /&gt;
== New Apps ==&lt;br /&gt;
New Apps will not be installed automatically by the upgrade. The installation description of new apps is usually in the concept article. Please rate per app whether you want to install/use the new app and configure it manually.&lt;br /&gt;
&lt;br /&gt;
; App Charts: [[Reference16r1:Concept_App_Charts]]&lt;br /&gt;
; App Polls: [[Reference16r1:Concept App Polls]]&lt;br /&gt;
; App MQTT Broker: [[Reference16r1:Concept_App_MQTT_Broker]]&lt;br /&gt;
; App Conference Scaler: [[Reference16r1:Concept_Conference_Scaler_App]]&lt;br /&gt;
; App Service Conference Transcriptions: [[Reference16r1:Concept_App_Service_Transcriptions]]&lt;br /&gt;
; App Service Transcriptions: [[Reference16r1:Concept_App_Service_Transcriptions]]&lt;br /&gt;
; App Service Documents: [[Reference16r1:Concept_App_Service_Documents]]&lt;br /&gt;
; App Service Connector for Whatsapp: [[Reference16r1:Concept_App_Service_Connector_for_Whatsapp]]&lt;br /&gt;
; App Service IP: [[Reference16r1:Concept App Service IP]]&lt;br /&gt;
&lt;br /&gt;
== Removed ==&lt;br /&gt;
The following software is no longer included.&lt;br /&gt;
&lt;br /&gt;
* IP110A (can still be used with 15r1 firmware on current PBX versions)&lt;br /&gt;
* IP240A (can still be used with 15r1 firmware on current PBX versions)&lt;br /&gt;
* CA on CF card feature&lt;br /&gt;
&lt;br /&gt;
== Deprecated ==&lt;br /&gt;
The following software is based on legacy technology, with no further development and limited maintenance and support.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Nothing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Previously deprecated and now no longer supported == &lt;br /&gt;
The following software is based on legacy technology, with no further development and no more maintenance and support.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Nothing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
===Long Update-duration===&lt;br /&gt;
When you update, it can be up to 10 minutes before you have access to your app platform again.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Howto:Firmware_Upgrade]]&lt;br /&gt;
* [[Howto15r1:Firmware_Upgrade_V14r2_V15r1]]&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Firmware_Upgrade_V15r1_V16r1&amp;diff=79603</id>
		<title>Howto16r1:Firmware Upgrade V15r1 V16r1</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Firmware_Upgrade_V15r1_V16r1&amp;diff=79603"/>
		<updated>2026-04-27T11:05:19Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Changes in TLS Profiles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Applies To ==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* All 16r1 capable innovaphone devices&lt;br /&gt;
: For a general overview of the upgrade process and a list of supported devices with 16r1, see [[Howto:Firmware Upgrade]]&lt;br /&gt;
== Licenses ==&lt;br /&gt;
In case of cloud or rental model, don&#039;t worry about licenses.&lt;br /&gt;
&lt;br /&gt;
If the system is licensed on premise, you&#039;ll need to regenerate the license file for v16 in https://portal.innovaphone.com/ and load into the system before upgrade (The system needs to have the SSC up to date).&lt;br /&gt;
&lt;br /&gt;
== Migration Policy ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red; font-weight: bold&amp;quot;&amp;gt;Before you begin, be sure that your whole installation is running the latest 15r1 service release. Create backups before you start and store them on an external location&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AP Upgrade to Image 140029 or newer ===&lt;br /&gt;
* First, upgrade your application platform to at least image version 140029. After that you can go ahead.&lt;br /&gt;
&lt;br /&gt;
=== Upgrade Sequence ===&lt;br /&gt;
In systems of multiple units, it is important to update the tree from top to bottom. In other words, update the master unit first, and then the machines at the lower levels. If you&#039;re using a DevicesApp update job that updates the entire system at once, you don&#039;t need to do anything here.&lt;br /&gt;
&lt;br /&gt;
=== TechAssist Upgrade Helper ===&lt;br /&gt;
* Before you start, make sure that all TechAssist tests (you will receive the required tests in the last update in the previous major version) labelled &amp;lt;code&amp;gt;Pre Upgrade: xy&amp;lt;/code&amp;gt; are positive, if available&lt;br /&gt;
* When you are finished, make sure that all TechAssist tests (you will receive new tests with the upgrade) are positive&lt;br /&gt;
&lt;br /&gt;
== Changes visible to the end customers ==&lt;br /&gt;
Listed here are changes that should be communicated by resellers to end users prior to a upgrade, as the change will be visible/audible in the behaviour of the application/device.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Nothing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Manual steps needed after upgrade ==&lt;br /&gt;
If the installer is not used for a new installation, some new default settings are not set. Please evaluate per app whether you want to configure the new default settings manually.&lt;br /&gt;
&lt;br /&gt;
=== Connector for Microsoft 365 ===&lt;br /&gt;
If you plan to use the new &#039;&#039;&#039;Contact Search&#039;&#039;&#039; feature of the Connector for Microsoft 365, you need to perform two manual Steps:&lt;br /&gt;
# Create the &#039;&#039;&#039;microsoft365-api&#039;&#039;&#039; app object by using the Settings template&lt;br /&gt;
# Assign the &#039;&#039;&#039;microsoft365-api&#039;&#039;&#039; app object to every user who should be able to use the new Contact Search feature. (Of cause, you can use a template for that)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
For a more detailed guide, please refer to the how-to article: [[Howto16r1:Configure Contact Search by Connector for Microsoft365#Creating the PBX app object using the PBX Manager Plugin]]&lt;br /&gt;
&lt;br /&gt;
=== Remote Control ===&lt;br /&gt;
In order to use the Admin Configuration Panel of the Settings App – AP Remote Control, it is necessary to grant access to the &#039;&#039;&#039;admin&#039;&#039;&#039; API, available in the App tab of the Remote Control App object.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
For badge counts to work, the Working Manager app object must have &#039;&#039;&#039;Websocket&#039;&#039;&#039; and &#039;&#039;&#039;PbxSignal&#039;&#039;&#039; enabled.&lt;br /&gt;
For the Connect integration of the Working app, &#039;&#039;&#039;Websocket&#039;&#039;&#039;, &#039;&#039;&#039;Services&#039;&#039;&#039; and &#039;&#039;&#039;connect&#039;&#039;&#039;(in the Apps tab) must be enabled in the Working User app.&lt;br /&gt;
&lt;br /&gt;
=== Switchboard ===&lt;br /&gt;
For the Connect Integration (Call Notes) to work, the Switchboard App must have the &#039;&#039;&#039;Services&#039;&#039;&#039; (App-tab) and &#039;&#039;&#039;connect&#039;&#039;&#039; or &#039;&#039;&#039;messages&#039;&#039;&#039; (Apps-tab) enabled (the name depends when the PBX was installed).&lt;br /&gt;
&lt;br /&gt;
=== Projects ===&lt;br /&gt;
* Projects requires &#039;&#039;&#039;App platform version 140029&#039;&#039;&#039; or higher, so updating the App Platform before Projects is recommended. &amp;lt;br /&amp;gt;The Store will prohibit the update if the App Plattform does not have the minimum required version.&lt;br /&gt;
* For some extra admin-functionalities the &#039;&#039;&#039;Projects App Object needs to have an admin mode&#039;&#039;&#039; (App-tab). &amp;lt;br /&amp;gt;Easiest way to set this new mode is to the open the Projects App via the Projects Plugin Settings App and to re-apply it (click the OK-button). The same plugin can also be used to distribute this mode via the Config Templates.&lt;br /&gt;
* The &#039;&#039;&#039;App Platform requires the correct Time and a Timezone&#039;&#039;&#039; set under AP Manager/Settings/General. &amp;lt;br /&amp;gt;This is needed for some automatic cleanup of deleted items and automatic task status updates (done around 00:00h on the due date).&lt;br /&gt;
&lt;br /&gt;
=== For legacy support only: Change TLS Profile ===&lt;br /&gt;
The &#039;&#039;Normal&#039;&#039; profile has been updated to allow only TLS 1.3 and TLS 1.2. This setting is compatible with all supported firmware versions. So you don&#039;t need to do any changes.&lt;br /&gt;
However if you need older TLS versions for compatibility with legacy devices, consider changing the TLS profile to &#039;&#039;Legacy&#039;&#039;. In that case please see [[Reference16r1:IP4/General/TLS]] for details.&lt;br /&gt;
&lt;br /&gt;
== New Apps ==&lt;br /&gt;
New Apps will not be installed automatically by the upgrade. The installation description of new apps is usually in the concept article. Please rate per app whether you want to install/use the new app and configure it manually.&lt;br /&gt;
&lt;br /&gt;
* App Polls: [[Reference16r1:Concept App Polls]]&lt;br /&gt;
* App Service Conference Transcriptions [[Reference16r1:Concept_App_Service_myApps_Assistant]]&lt;br /&gt;
* App Service Connector for Whatsapp: [[Reference16r1:Concept_App_Service_Connector_for_Whatsapp]]&lt;br /&gt;
* App Conference Scaler: [[Reference16r1:Concept_Conference_Scaler_App]]&lt;br /&gt;
* App Service IP: [[Reference16r1:Concept App Service IP]]&lt;br /&gt;
&lt;br /&gt;
== Removed ==&lt;br /&gt;
The following software is no longer included.&lt;br /&gt;
&lt;br /&gt;
* IP110A (can still be used with 15r1 firmware on current PBX versions)&lt;br /&gt;
* IP240A (can still be used with 15r1 firmware on current PBX versions)&lt;br /&gt;
* CA on CF card feature&lt;br /&gt;
&lt;br /&gt;
== Deprecated ==&lt;br /&gt;
The following software is based on legacy technology, with no further development and limited maintenance and support.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Nothing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Previously deprecated and now no longer supported == &lt;br /&gt;
The following software is based on legacy technology, with no further development and no more maintenance and support.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Nothing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
===Long Update-duration===&lt;br /&gt;
When you update, it can be up to 10 minutes before you have access to your app platform again.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Howto:Firmware_Upgrade]]&lt;br /&gt;
* [[Howto15r1:Firmware_Upgrade_V14r2_V15r1]]&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Firmware_Upgrade_V15r1_V16r1&amp;diff=79602</id>
		<title>Howto16r1:Firmware Upgrade V15r1 V16r1</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Firmware_Upgrade_V15r1_V16r1&amp;diff=79602"/>
		<updated>2026-04-27T10:55:34Z</updated>

		<summary type="html">&lt;p&gt;Msc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Applies To ==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* All 16r1 capable innovaphone devices&lt;br /&gt;
: For a general overview of the upgrade process and a list of supported devices with 16r1, see [[Howto:Firmware Upgrade]]&lt;br /&gt;
== Licenses ==&lt;br /&gt;
In case of cloud or rental model, don&#039;t worry about licenses.&lt;br /&gt;
&lt;br /&gt;
If the system is licensed on premise, you&#039;ll need to regenerate the license file for v16 in https://portal.innovaphone.com/ and load into the system before upgrade (The system needs to have the SSC up to date).&lt;br /&gt;
&lt;br /&gt;
== Migration Policy ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red; font-weight: bold&amp;quot;&amp;gt;Before you begin, be sure that your whole installation is running the latest 15r1 service release. Create backups before you start and store them on an external location&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AP Upgrade to Image 140029 or newer ===&lt;br /&gt;
* First, upgrade your application platform to at least image version 140029. After that you can go ahead.&lt;br /&gt;
&lt;br /&gt;
=== Upgrade Sequence ===&lt;br /&gt;
In systems of multiple units, it is important to update the tree from top to bottom. In other words, update the master unit first, and then the machines at the lower levels. If you&#039;re using a DevicesApp update job that updates the entire system at once, you don&#039;t need to do anything here.&lt;br /&gt;
&lt;br /&gt;
=== TechAssist Upgrade Helper ===&lt;br /&gt;
* Before you start, make sure that all TechAssist tests (you will receive the required tests in the last update in the previous major version) labelled &amp;lt;code&amp;gt;Pre Upgrade: xy&amp;lt;/code&amp;gt; are positive, if available&lt;br /&gt;
* When you are finished, make sure that all TechAssist tests (you will receive new tests with the upgrade) are positive&lt;br /&gt;
&lt;br /&gt;
== Changes visible to the end customers ==&lt;br /&gt;
Listed here are changes that should be communicated by resellers to end users prior to a upgrade, as the change will be visible/audible in the behaviour of the application/device.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Nothing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Manual steps needed after upgrade ==&lt;br /&gt;
If the installer is not used for a new installation, some new default settings are not set. Please evaluate per app whether you want to configure the new default settings manually.&lt;br /&gt;
&lt;br /&gt;
=== Connector for Microsoft 365 ===&lt;br /&gt;
If you plan to use the new &#039;&#039;&#039;Contact Search&#039;&#039;&#039; feature of the Connector for Microsoft 365, you need to perform two manual Steps:&lt;br /&gt;
# Create the &#039;&#039;&#039;microsoft365-api&#039;&#039;&#039; app object by using the Settings template&lt;br /&gt;
# Assign the &#039;&#039;&#039;microsoft365-api&#039;&#039;&#039; app object to every user who should be able to use the new Contact Search feature. (Of cause, you can use a template for that)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
For a more detailed guide, please refer to the how-to article: [[Howto16r1:Configure Contact Search by Connector for Microsoft365#Creating the PBX app object using the PBX Manager Plugin]]&lt;br /&gt;
&lt;br /&gt;
=== Remote Control ===&lt;br /&gt;
In order to use the Admin Configuration Panel of the Settings App – AP Remote Control, it is necessary to grant access to the &#039;&#039;&#039;admin&#039;&#039;&#039; API, available in the App tab of the Remote Control App object.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
For badge counts to work, the Working Manager app object must have &#039;&#039;&#039;Websocket&#039;&#039;&#039; and &#039;&#039;&#039;PbxSignal&#039;&#039;&#039; enabled.&lt;br /&gt;
For the Connect integration of the Working app, &#039;&#039;&#039;Websocket&#039;&#039;&#039;, &#039;&#039;&#039;Services&#039;&#039;&#039; and &#039;&#039;&#039;connect&#039;&#039;&#039;(in the Apps tab) must be enabled in the Working User app.&lt;br /&gt;
&lt;br /&gt;
=== Switchboard ===&lt;br /&gt;
For the Connect Integration (Call Notes) to work, the Switchboard App must have the &#039;&#039;&#039;Services&#039;&#039;&#039; (App-tab) and &#039;&#039;&#039;connect&#039;&#039;&#039; or &#039;&#039;&#039;messages&#039;&#039;&#039; (Apps-tab) enabled (the name depends when the PBX was installed).&lt;br /&gt;
&lt;br /&gt;
=== Projects ===&lt;br /&gt;
* Projects requires &#039;&#039;&#039;App platform version 140029&#039;&#039;&#039; or higher, so updating the App Platform before Projects is recommended. &amp;lt;br /&amp;gt;The Store will prohibit the update if the App Plattform does not have the minimum required version.&lt;br /&gt;
* For some extra admin-functionalities the &#039;&#039;&#039;Projects App Object needs to have an admin mode&#039;&#039;&#039; (App-tab). &amp;lt;br /&amp;gt;Easiest way to set this new mode is to the open the Projects App via the Projects Plugin Settings App and to re-apply it (click the OK-button). The same plugin can also be used to distribute this mode via the Config Templates.&lt;br /&gt;
* The &#039;&#039;&#039;App Platform requires the correct Time and a Timezone&#039;&#039;&#039; set under AP Manager/Settings/General. &amp;lt;br /&amp;gt;This is needed for some automatic cleanup of deleted items and automatic task status updates (done around 00:00h on the due date).&lt;br /&gt;
&lt;br /&gt;
=== Changes in TLS Profiles ===&lt;br /&gt;
The &#039;&#039;Normal&#039;&#039; profile has been updated to allow only TLS 1.3 and TLS 1.2. This setting is compatible with all supported firmware versions. So you don&#039;t need to do any changes.&lt;br /&gt;
However if you need older TLS versions for compatibility with legacy devices, consider changing the TLS profile to &#039;&#039;Legacy&#039;&#039;. In that case please see [[Reference16r1:IP4/General/TLS]] for details.&lt;br /&gt;
&lt;br /&gt;
== New Apps ==&lt;br /&gt;
New Apps will not be installed automatically by the upgrade. The installation description of new apps is usually in the concept article. Please rate per app whether you want to install/use the new app and configure it manually.&lt;br /&gt;
&lt;br /&gt;
* App Polls: [[Reference16r1:Concept App Polls]]&lt;br /&gt;
* App Service Conference Transcriptions [[Reference16r1:Concept_App_Service_myApps_Assistant]]&lt;br /&gt;
* App Service Connector for Whatsapp: [[Reference16r1:Concept_App_Service_Connector_for_Whatsapp]]&lt;br /&gt;
* App Conference Scaler: [[Reference16r1:Concept_Conference_Scaler_App]]&lt;br /&gt;
* App Service IP: [[Reference16r1:Concept App Service IP]]&lt;br /&gt;
&lt;br /&gt;
== Removed ==&lt;br /&gt;
The following software is no longer included.&lt;br /&gt;
&lt;br /&gt;
* IP110A (can still be used with 15r1 firmware on current PBX versions)&lt;br /&gt;
* IP240A (can still be used with 15r1 firmware on current PBX versions)&lt;br /&gt;
* CA on CF card feature&lt;br /&gt;
&lt;br /&gt;
== Deprecated ==&lt;br /&gt;
The following software is based on legacy technology, with no further development and limited maintenance and support.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Nothing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Previously deprecated and now no longer supported == &lt;br /&gt;
The following software is based on legacy technology, with no further development and no more maintenance and support.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Nothing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
===Long Update-duration===&lt;br /&gt;
When you update, it can be up to 10 minutes before you have access to your app platform again.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Howto:Firmware_Upgrade]]&lt;br /&gt;
* [[Howto15r1:Firmware_Upgrade_V14r2_V15r1]]&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r2:Concept_myApps_platform_services&amp;diff=79498</id>
		<title>Reference14r2:Concept myApps platform services</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r2:Concept_myApps_platform_services&amp;diff=79498"/>
		<updated>2026-04-17T10:24:38Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* myApps for iOS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps]]&lt;br /&gt;
&lt;br /&gt;
myApps platform services provide various operating system specific services which can be used by other &#039;&#039;Apps&#039;&#039; running in the [[{{NAMESPACE}}:Concept myApps|myApps client]]. Those services typically are not available in the browser&#039;s JavaScript environment and hence must be implemented in native platform code. Therefore, the platform services are installed as native executable on the respective platform.&lt;br /&gt;
&lt;br /&gt;
When myApps is started in a web browser (and hence has no access to the platform services), some Apps will use [https://en.wikipedia.org/wiki/WebRTC WebRTC] services implemented by the browser instead.  For ease of reference, features available in this scenario are also described here.&lt;br /&gt;
&lt;br /&gt;
On windows, the platform services also come with their own web browser in which the myApps web App will be started then.  This browser is based on google&#039;s [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium] open source software.&lt;br /&gt;
= Applies To =&lt;br /&gt;
&lt;br /&gt;
* [[{{NAMESPACE}}:Concept myApps|myApps]]&lt;br /&gt;
* myApps for Windows&lt;br /&gt;
* myApps for macOS&lt;br /&gt;
* myApps for iOS&lt;br /&gt;
* myApps for Android&lt;br /&gt;
&lt;br /&gt;
* myApps Web App (WebRTC)&lt;br /&gt;
version 14r2&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
Not all features are available or required on all platforms.&lt;br /&gt;
 {|&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Feature&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Description&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot;| Availability&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| || || Windows || iOS || Android || macOS || Browser&amp;lt;ref&amp;gt;This refers to the myApps web application running in a browser with no platform services available&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| audio || manage local audio devices to record and playback audio conversations || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; (audio available but devices managed by web browser)&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| video || manage local displays and cameras to capture and render video live stream || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; (video available but devices managed by web browser)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| ringer || manage local ringing device || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| application sharing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp; presenter || share an application || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp; consumer  || view an application shared by the peer || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| hot keys || capture key presses for quick invocation of phone apps (e.g. dial selected number) || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| tel: and sip: URI handler || intercept clicks on tel: and sip: links in web sites to invoke phone apps || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| user activity || set presence state according to user activity ||  &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004;&amp;lt;ref&amp;gt;limited, see [[#User activity|User activity]] below&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| docking || myApps can be docked persistently to the right or left edge of your screens ||  &amp;amp;#10004;  || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| multi-windowing|| Apps can be launched in separate windows||  &amp;amp;#10004;  || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| recording|| Calls can be recorded to recording app||  &amp;amp;#10004;  || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| notifications || ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; display notifications || display notifications with OS standard mechanism ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; push notifications || receive push notifications while myApps is not running  ||  &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&amp;lt;ref&amp;gt;The browser needs to be running in order to receive push notifications.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; chat and apps || display notifications for chat and other apps  ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; calls || display notifications for incoming calls  ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&amp;lt;ref&amp;gt;Call notifications are only displayed locally while the phone or softphone app is started.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| phone book access || access local phone book ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| office presence provider || maps PBX presence state to Microsoft office presence state ||  &amp;amp;#10004;  || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| external application start || start arbitrary external applications for calls || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| app proxy|| a caching proxy that provides app persistence  || &amp;amp;#10004;  || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| auto update || automatically updates myApps platform services to the same version the PBX has || &amp;amp;#10004;  || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004;&amp;lt;ref&amp;gt;The then-current web app is always loaded from the PBX upon startup and hence up-to-date by definition&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| three party conference || initiate 3-pty-conference using Softphone-App || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| exclude VPN || disable use of VPN connections for audio/video/appsharing || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
* innovaphone PBX 14r2 and up&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Recommended hardware requirements&lt;br /&gt;
* Processor: Dual-core 2Ghz or higher&lt;br /&gt;
* RAM: 4 Gb&lt;br /&gt;
&lt;br /&gt;
== myApps for Windows ==&lt;br /&gt;
* Windows 10 and up&lt;br /&gt;
* Windows Server 2016 and later versions&lt;br /&gt;
&lt;br /&gt;
=== 32 &amp;amp; 64 bit Windows ===&lt;br /&gt;
* 32 bit Windows: install the myAppsSetup32.msi from the App Store&lt;br /&gt;
* 64 bit Windows: install the myAppsSetup.msi from the App Store&lt;br /&gt;
** the 64 bit variant still installs into Program Files (x86), as the main myApps.exe is still a 32bit application&lt;br /&gt;
** the 64 bit variant just contains an additional 64 bit binary for the outlook search&lt;br /&gt;
&lt;br /&gt;
=== Windows N editions ===&lt;br /&gt;
&lt;br /&gt;
Windows N editions are missing the &#039;&#039;Media Feature Pack&#039;&#039; which is pre installed on other Windows versions.&lt;br /&gt;
&lt;br /&gt;
Please install the pack from [https://www.microsoft.com/en-us/software-download/mediafeaturepack Microsoft (Windows 10 pack)] before you install myApps. The installer will check if the file &amp;lt;code&amp;gt;C:\Windows\SysWOW64\mfplat.dll&amp;lt;/code&amp;gt; exist on your system.&lt;br /&gt;
&lt;br /&gt;
Make sure to install the correct pack depending on your Windows version! There are different packs for Windows 10 1703, 1803, 1809 and 32bit or 64bit etc.&lt;br /&gt;
&lt;br /&gt;
NB: Sometimes the myApps installation will not work even though the media pack is already installed. This is because the installer has no read access to check if the package is already installed. If the above-mentioned file exists and the installer asks to install the Windows Media Feature Pack nevertheless, you have to start the myApps install with administrative rights.&lt;br /&gt;
&lt;br /&gt;
=== Terminal Server environments ===&lt;br /&gt;
&lt;br /&gt;
Audio driver was removed if myApps discovers that it is running in a terminal server environment like Citrix.&lt;br /&gt;
&lt;br /&gt;
The audio driver is needed for the Softphone App but the Softphone App should not use an audio driver at the server side because the audio devices are plugged locally and there would be a delay sending and receiving audio data with the server.&lt;br /&gt;
&lt;br /&gt;
If a customer wants to use the Softphone App at the server side he needs to make use of the myApps Plugin for virtual desktops solution:&lt;br /&gt;
&lt;br /&gt;
[[{{NAMESPACE}}:MyApps_Plugin_for_Virtual_Desktops]]&lt;br /&gt;
&lt;br /&gt;
== myApps for macOS ==&lt;br /&gt;
* macOS 10.13 or higher&lt;br /&gt;
&lt;br /&gt;
== myApps for iOS ==&lt;br /&gt;
* iOS 13 or higher&lt;br /&gt;
&lt;br /&gt;
== myApps for Android ==&lt;br /&gt;
* Android 6.0 or higher. Android 6.x may need an update of the Chrome browser.&lt;br /&gt;
&lt;br /&gt;
= Licenses =&lt;br /&gt;
* No license needed for myApps platform services&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
myApps platform services is a native executable that is installed using the standard mechanisms on the respective operating system. It provides various advanced services which can be used by the myApps web client code as well as the Apps running in the myApps context. &lt;br /&gt;
&lt;br /&gt;
Also, on Windows, the platform services come with their own, dedicated browser to run myApps in.  This browser is based on [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium].  On iOS, macOS and Android, it is based upon native embedded web view facilities (such as WKWebView) instead.&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
=== RTP service for audio, video and data ===&lt;br /&gt;
The RTP service provides audio, video and data (app sharing) VoIP RTP endpoints (e.g. for softphones).  It supports STUN, TURN, ICE, SRTP, DTLS. Note however that unlike WebRTC, these endpoints do not &#039;&#039;require&#039;&#039; ICE and DTLS. In other words, they can communicate also with non-compliant (i.e. older) VoIP devices.&lt;br /&gt;
&lt;br /&gt;
Note that the available capabilities when not running the myApps platform services depend on the used browser&#039;s WebRTC implementation. See your browser documentation for details.&lt;br /&gt;
&lt;br /&gt;
Apps can request RTP channels using the [https://sdk.innovaphone.com/doc/launcher/Media.htm Media Protocol]&#039;s &#039;&#039;AllocChannel&#039;&#039; message.&lt;br /&gt;
&lt;br /&gt;
===== RTP ports=====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|  audio || 50000 -&amp;gt; 50099&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| video || 50100 -&amp;gt; 50199&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| data || 50200 -&amp;gt; 50299&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTP service will enumerate all local interfaces and create local HOST candidates for ICE.  There is an option however to disregard VPN interfaces (more precisely such interfaces with type of &#039;&#039;IF_TYPE_PPP&#039;&#039; or &#039;&#039;IF_TYPE_TUNNEL&#039;&#039;).  This can eliminate quality issues when RTP data is transmitted through TCP based VPN tunnels.&lt;br /&gt;
&lt;br /&gt;
SRFLX and RELAY candidates are obtained using the STUN and TURN server configuration passed by the App (e.g the &#039;&#039;softphone&#039;&#039; App) as part of the &#039;&#039;AllocChannel&#039;&#039; request.&lt;br /&gt;
&amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;AllocChannel&amp;quot;,&amp;quot;channel&amp;quot;:&amp;quot;81429cba-396d-43de-8a76-ec020ba8796e&amp;quot;,&amp;quot;iceServers&amp;quot;:[{&amp;quot;urls&amp;quot;:&amp;quot;turn:myturn.domaincom:4077?transport=udp&amp;quot;,&amp;quot;username&amp;quot;:&amp;quot;turnuser&amp;quot;,&amp;quot;credential&amp;quot;:&amp;quot;pwd&amp;quot;,&amp;quot;credentialType&amp;quot;:&amp;quot;password&amp;quot;},{&amp;quot;urls&amp;quot;:&amp;quot;stun:mystun.domain.com:4077&amp;quot;}],&amp;quot;dn&amp;quot;:&amp;quot;Foo Bar&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;RemoteRtp&amp;quot;,&amp;quot;kind&amp;quot;:&amp;quot;video&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Codecs =====&lt;br /&gt;
&lt;br /&gt;
The installed myApps launchers provide codecs that can be used by softphone apps for media streams. When running in a web browser the codecs depend on the browser version and operating system. See the documentation of your browser for details.&lt;br /&gt;
&lt;br /&gt;
The following codecs are supported:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!style=&amp;quot;text-align:left;width:100px;&amp;quot;|Codec&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Windows-Launcher&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Android&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|iOS&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|macOS&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Firefox (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Chrome (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Edge (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Safari (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Opera (Browser)&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:left; background-color:lightgray&amp;quot; colspan=&amp;quot;10&amp;quot;|Audio&lt;br /&gt;
|-&lt;br /&gt;
|G711A&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|G711u&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|G722&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|G729&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|-&lt;br /&gt;
|G729A&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|-&lt;br /&gt;
|G729B&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|-&lt;br /&gt;
|G729AB&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=Opus OPUS-NB]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=Opus OPUS-WB]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:left; background-color:lightgray&amp;quot; colspan=&amp;quot;10&amp;quot;|Video&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=VP8 VP8]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=VP9 VP9]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=H264 H264]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:left; background-color:lightgray&amp;quot; colspan=&amp;quot;10&amp;quot;|Application Sharing&lt;br /&gt;
|-&lt;br /&gt;
|Share&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|Watch&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔*&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔*&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;* small presentation only&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;** only for 1:1 calls, not for conferences&lt;br /&gt;
&lt;br /&gt;
===== Video capture =====&lt;br /&gt;
&lt;br /&gt;
The default resolution for video capture is 1280x720 if available.  Otherwise, 640x480, 352x288 or 320x240 will be used.  The frame rate is 30 fps if available, otherwise 15 fps. The resulting average bandwidth could reach 1 Mbps.&lt;br /&gt;
&lt;br /&gt;
===== Application sharing =====&lt;br /&gt;
&lt;br /&gt;
Screen content will be transmitted by the presenter.&lt;br /&gt;
&lt;br /&gt;
===== Device handling =====&lt;br /&gt;
&lt;br /&gt;
The RTP service enumerates microphones, loudspeaker, cameras and ringing devices and notifies apps when devices come and go. It is up to the apps using the devices to store preferences.&lt;br /&gt;
&lt;br /&gt;
The RTP service also enables some extended features (such as hook switch or volume control) for supported USB headsets or Bluetooth headsets connected to myApps.&lt;br /&gt;
The supported headset-SDKs determine which headset vendors are recommended to be used with the myApps softphone app. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this to work, the following vendor specific development kits are integrated in our myApps client. Be aware that the SDK are updated within our Service release :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SDK Vendor !! Supported OS !! SDK Version !! innovaphone Service Release&lt;br /&gt;
|-&lt;br /&gt;
| Jabra|| MacOS || 1.16.4.0 || 14r2sr11&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || 1.12.2.0 || 13r3sr10&lt;br /&gt;
|-&lt;br /&gt;
| Epos &#039;&#039;(formerly Sennheiser)&#039;&#039; || MacOS || 12.4.0.5478 || 14r1sr3&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || n.a. - [[Support:13r3 sr10 MyApps Windows Client - Epos/Sennheiser-Headsets require installed Epos-Connect Software|to be installed separately]]|| 13r3sr10&lt;br /&gt;
|-&lt;br /&gt;
| Poly &#039;&#039;(formerly Plantronics)&#039;&#039; || MacOS || 3.25.53799.37131 || 13r3sr9&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || 3.25.53800.37131 || 13r3sr10&lt;br /&gt;
|-&lt;br /&gt;
| Yealink || MacOS || 3.1.1.20 || 14r1sr3&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || 3.1.1.20 || 14r1sr3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* It is possible to inhibit the start of the Sennheiser SDK (SenncomSDK.exe) using the &amp;lt;code&amp;gt;DISABLEHEADSETS&amp;lt;/code&amp;gt; directive of the installer (see [[#MSI Parameters and install options|  MSI parameters]]  below).&lt;br /&gt;
&lt;br /&gt;
* Starting with V13r3sr10, the Epos-SDK needs to be installed separately using the Epos Connect software to ensure full compatibility between current Epos headset models and native myApps-Windows client. For details [[Support:13r3 sr10 MyApps Windows Client - Epos/Sennheiser-Headsets require installed Epos-Connect Software|refer to this article]].&lt;br /&gt;
&amp;lt;!--Keywords: myapps softphone supported headsets sdk--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ring tones =====&lt;br /&gt;
&lt;br /&gt;
Ring tones can be played. Apps can choose the tone from a pre-defined list of ring tones.&lt;br /&gt;
&lt;br /&gt;
On Windows, custom ring tones can be uploaded as .mp3 files to the &amp;lt;code&amp;gt;ringtones&amp;lt;/code&amp;gt; sub-directory of myApps&#039; roaming directory (which usually is in &amp;lt;code&amp;gt;C:\Users\...\AppData\Roaming\innovaphone\myApps\ringtones&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
On Android, custom ring tones can be added to the system via Android settings.&lt;br /&gt;
&lt;br /&gt;
On iOS, custom ring tones can be uploaded as .mp3 files to the &amp;lt;code&amp;gt;Ringtones&amp;lt;/code&amp;gt; subdirectory of the myApps file share that is available in iTunes if the iPhone has been connected via USB.&lt;br /&gt;
&lt;br /&gt;
On macOS, custom ring tones can be uploaded as .mp3 files to &amp;lt;code&amp;gt;~/Library/Containers/com.innovaphone.client-macos/Data/Documents/Ringtones&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===== Debugging =====&lt;br /&gt;
For extended debugging, turn on the &#039;&#039;Audio&#039;&#039;, &#039;&#039;Media&#039;&#039; and &#039;&#039;AppSharing&#039;&#039; traces in myApps.&lt;br /&gt;
&lt;br /&gt;
=== Hot keys ===&lt;br /&gt;
On Windows and macOS systems, myApps platform services can listen for hot keys and invoke certain functions. Invocation is done by sending API messages to myApps which passes it to an appropriate API provider (in the cases described here, this will be a &#039;&#039;phone&#039;&#039; or &#039;&#039;softphone&#039;&#039; or &#039;&#039;rcc&#039;&#039; App typically.  See [[{{NAMESPACE}}:Concept_myApps#Client_APIs_and_default_apps | Client APIs and default apps]] for more details about this mechanism.&lt;br /&gt;
&lt;br /&gt;
The hot keys can be specified using the &#039;&#039;advanced settings&#039;&#039; user interface (see [[#UI elements| UI elements]] below. Any of the function keys F1 to F11 (optionally combined with up to two modifier keys &#039;&#039;alt&#039;&#039;, &#039;&#039;ctrl&#039;&#039;, &#039;&#039;shift&#039;&#039; or &#039;&#039;win&#039;&#039;) can be chosen for each function. If you do not want to start the call with &amp;quot;Hotkey+Enter&amp;quot; because you would have to wait for the focus, the hotkey can also be pressed twice and the number is dialled directly.&lt;br /&gt;
&lt;br /&gt;
; dial selected number : Initiates a call using the currently selected text as target.&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;PrepareCall&#039;&#039; message with the &#039;&#039;text&#039;&#039; argument set to the selected text and the &#039;&#039;adjust&#039;&#039; argument set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:&amp;quot;mt&amp;quot;:&amp;quot;PrepareCall&amp;quot;,&amp;quot;text&amp;quot;:&amp;quot;13&amp;quot;,&amp;quot;adjust&amp;quot;:true}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; accept call : Accepts a currently alerting call.&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;ConnectCall&#039;&#039; message will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;ConnectCall&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; reject/disconnect call : Rejects a currently alerting call or disconnects an active call.&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;DisconnectCall&#039;&#039; message will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;DisconnectCall&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== URL Handler ===&lt;br /&gt;
&lt;br /&gt;
On Windows systems, two URI-handler are installed with the myApps platform services.  Windows will call up this URI handler when a user clicks on an appropriate link, for example in a web site.&lt;br /&gt;
&lt;br /&gt;
The handler will the send an API message to myApps which passes it to an appropriate API provider (in the cases described here, this will be a &#039;&#039;phone&#039;&#039; or &#039;&#039;softphone&#039;&#039; or &#039;&#039;rcc&#039;&#039; App typically.  See [[{{NAMESPACE}}:Concept_myApps#Client_APIs_and_default_apps | Client APIs and default apps]] for more details about this mechanism.&lt;br /&gt;
&lt;br /&gt;
; tel URI : call a number, e.g. &amp;lt;code&amp;gt;tel:4711&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;PrepareCall&#039;&#039; message with the &#039;&#039;num&#039;&#039; argument set to the selected text and the &#039;&#039;adjust&#039;&#039; argument set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;StartCall&amp;quot;,&amp;quot;num&amp;quot;:&amp;quot;4711&amp;quot;,&amp;quot;adjust&amp;quot;:true}}&amp;lt;/code&amp;gt;&lt;br /&gt;
; sip URI : call a SIP name, e.g. &amp;lt;code&amp;gt;sip:zkl@innovaphone.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;PrepareCall&#039;&#039; message with the &#039;&#039;sip&#039;&#039; argument set to the selected text and the &#039;&#039;adjust&#039;&#039; argument set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;StartCall&amp;quot;,&amp;quot;sip&amp;quot;:&amp;quot;zkl@innovaphone.com&amp;quot;,&amp;quot;adjust&amp;quot;:true}}&amp;lt;/code&amp;gt;&lt;br /&gt;
; im URI : start chat with SIP name, e.g. &amp;lt;code&amp;gt;im:zkl@innovaphone.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;StartChat&#039;&#039; message with the &#039;&#039;sip&#039;&#039; argument set to the selected text will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.chat/com.innovaphone.chat.htm &#039;&#039;com.innovaphone.chat&#039;&#039; API].&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.chat&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;StartChat&amp;quot;,&amp;quot;sip&amp;quot;:&amp;quot;zkl@innovaphone.com&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On macOS systems myApps might be made the default application to handle tel URI e.g. &amp;lt;code&amp;gt;tel:4711&amp;lt;/code&amp;gt; via Apple FaceTime. Open the &amp;quot;FaceTime&amp;quot; menu &amp;quot;Settings...&amp;quot; and select myApps as &amp;quot;Default for phone calls&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
On iOS &#039;&#039;tel&#039;&#039; URIs are always dialed via GSM. Therefore myApps iOS also reacts to URI schemes &#039;&#039;com.innovaphone.tel&#039;&#039;, &#039;&#039;com.innovaphone.sip&#039;&#039; and &#039;&#039;com.innovaphone.im&#039;&#039;, e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;com.innovaphone.tel:4711&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;com.innovaphone.sip:zkl@innovaphone.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;com.innovaphone.im:zkl@innovaphone.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== User activity ===&lt;br /&gt;
On Windows and macOS systems, the myApps platform services can monitor user keyboard/mouse activity and change the user&#039;s presence state after a certain amount of inactivity.  The timeout can be specified using the &#039;&#039;advanced settings&#039;&#039; user interface (see [[#UI elements| UI elements]] below.&lt;br /&gt;
&lt;br /&gt;
myApps will then send a [https://sdk.innovaphone.com/doc/appwebsocket/myApps.htm#SetUserActivity&#039;&#039;SetUserActivity&#039;&#039;] message to the PBX using the &#039;&#039;myApps&#039;&#039; protocol.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;SetUserActivity&amp;quot;,&amp;quot;inactive&amp;quot;:true}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will change the &#039;&#039;status&#039;&#039; property of the &#039;&#039;im:&#039;&#039; contact for the user&#039;s own presence and hence result in a presence update from the PBX to myApps&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;UpdateOwnPresence&amp;quot;,&amp;quot;presence&amp;quot;:[{...},{&amp;quot;contact&amp;quot;:&amp;quot;im:&amp;quot;,&amp;quot;activity&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;status&amp;quot;:&amp;quot;closed&amp;quot;}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
The &#039;&#039;closed&#039;&#039; status is reflected in the grey status color when displaying a contact [[Image:myapps-inactive.png|myapps-inactive.png/|myapps-inactive.png/]].&lt;br /&gt;
&lt;br /&gt;
On iOS and Android, the state is set to &#039;&#039;inactive&#039;&#039; as soon as the App is brought to background.&lt;br /&gt;
When myApps platform services are not available (i.e. when running the web application in a browser solely) a limited user activity monitoring is available: the state is set to active when the web page is not used for more than 5 minutes.&lt;br /&gt;
&lt;br /&gt;
=== Recording ===&lt;br /&gt;
&lt;br /&gt;
The new launcher offers the possibility to record the audio of incoming and outgoing calls. In order to activate that functionality the URL of the recording instance must be configured in either the PBX (PBX-&amp;gt;myApps-&amp;gt;Config: Recording URL) or the softphone App (Settings-&amp;gt;Audio Recording (URL)) &lt;br /&gt;
&lt;br /&gt;
[[Image:PBX-Recording-Settings.png|pbx-recording-settings.png/|pbx-recording-settings.png/]] [[Image:Recording-Softphone-Settings.png|recording-softphone-settings.png/|recording-softphone-settings.png/]]. &lt;br /&gt;
&lt;br /&gt;
As long as that URL is configured the audio data of all calls are stored as pcap-files under that URL.&lt;br /&gt;
If the URL points to a CF device in the PBX, write access must be granted for that URL (PBX-&amp;gt;Services-&amp;gt;HTTP-&amp;gt;Server:Public compact flash access) and if the URL points to the recording app, the files can be accessed via the recording app [[{{NAMESPACE}}:Concept_App_Service_Recordings|recording]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Under PBX-&amp;gt;myApps the administrator can set a certain default behaviour of the audio recording like whether or not the recording should start automatically at the beginning of the call (Recording by Default ON/OFF), only calls with external numbers should be recorded (Record external calls only) or whether or not the user should be able to start/stop the recording himself (Allow user incall recording control). Except for the last parameter these parameters can also be modified by the user in its softphone settings if the administrator doesn&#039;t set the FORCE flag.&lt;br /&gt;
&lt;br /&gt;
If the user was allowed by the admin to control the recording a recording switch is active during the call when the &amp;quot;Media&amp;quot; Panel is opened. There the audio recording may be stopped and continued at will. A red recording notice is shown in the top right corner when the recording actually takes place.&lt;br /&gt;
 &lt;br /&gt;
[[Image:Recording-incall-switch.png|recording-incall-switch.png/|recording-incall-switch.png/]]&lt;br /&gt;
&lt;br /&gt;
=== Notifications ===&lt;br /&gt;
&lt;br /&gt;
The myApps platform services can use the OS specific notification mechanism (e.g. &#039;&#039;desktop notifications&#039;&#039; on Windows) to display messages (e.g. &#039;&#039;incoming new chat message&#039;&#039;) to the user.&lt;br /&gt;
&lt;br /&gt;
Note that the actual rendering of the notification is under control of the OS.  Therefore, myApps must be allowed to show notifications and its appearance can be restricted by OS native settings.&lt;br /&gt;
&lt;br /&gt;
==== Microsoft Windows Notifications ====&lt;br /&gt;
&lt;br /&gt;
Microsoft Windows Server editions (2016, 2019, 2022) are just capable of showing a single &#039;&#039;IncomingCall&#039;&#039; notification at the same time (we couldn&#039;t find a workaround for this limitation).&amp;lt;br/&amp;gt;&lt;br /&gt;
An &#039;&#039;IncomingCall&#039;&#039; notification is visible the whole time instead of being moved to the action center after a certain time.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
A notification about a missed call uses the &#039;&#039;IncomingCall&#039;&#039; type so that this notification is visible until the user returns.&amp;lt;br/&amp;gt;&lt;br /&gt;
Due to the above limitation, on a new arriving call such a missed call notification is transformed to a default notification which will be moved to the action center automatically.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
On non server editions, you can have multiple IncomingCall notifications at the same time (so two parallel incoming calls will be indeed notified at the same time), but the missed call notification handling is the same on both platforms!&lt;br /&gt;
&lt;br /&gt;
 Thus there will be always just &#039;&#039;&#039;one&#039;&#039;&#039; missed call notification visible and previous missed calls can be found inside your action center!&lt;br /&gt;
&lt;br /&gt;
To see myApps notifications, ensure:&lt;br /&gt;
* System -&amp;gt; Notifications &lt;br /&gt;
** enable notifications&lt;br /&gt;
** disable &amp;quot;Do not disturb&amp;quot; or allow myApps as priority application while &amp;quot;Do not disturb&amp;quot; is active&lt;br /&gt;
** enable notifications for myApps in the list of applications&lt;br /&gt;
* System -&amp;gt; Focus &lt;br /&gt;
** if a focus session is active and the &amp;quot;Do not disturb&amp;quot; is activated during a focus session, make sure that myApps is a priority application (see above)&lt;br /&gt;
&lt;br /&gt;
==== macOS Notifications ====&lt;br /&gt;
Notifications are the same as on Windows.&lt;br /&gt;
The difference is, that for macOS, notifications need to be allowed in the system settings.&lt;br /&gt;
Go to Notifications - myApps, select Banner and enable all check marks.&lt;br /&gt;
&lt;br /&gt;
=== Local phonebook access ===&lt;br /&gt;
&#039;&#039;&#039;Contact Search:&#039;&#039;&#039; The myApps platform services implement an &#039;&#039;API provider&#039;&#039; for the [http://sdk.innovaphone.com/web1/com.innovaphone.search/lib1_api_search.htm &#039;&#039;com.innovaphone.search&#039;&#039; API]]. They perform search capabilities on the OS&#039; local phone books which can be used by Apps like the &#039;&#039;phoneapp&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Apps would send a &#039;&#039;Search&#039;&#039; request to the API:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;*&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;4&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;Search&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;contact&amp;quot;,&amp;quot;search&amp;quot;:&amp;quot;john doe&amp;quot;},&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.search&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
Search results are delivered as &#039;&#039;SearchInfo&#039;&#039; messages:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiResult&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;3&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;@local-8125d22e37-519d-4056-bfe5-c52ef2ae8fabb0&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;client&amp;quot;:&amp;quot;@client-f62702dd86-be3f-47fc-b4bc-7a21627b75b2ea&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;SearchInfo&amp;quot;,&amp;quot;relevance&amp;quot;:2000,&amp;quot;adjust&amp;quot;:true,&amp;quot;type&amp;quot;:&amp;quot;contact&amp;quot;,&amp;quot;contact&amp;quot;:{&amp;quot;givenname&amp;quot;:&amp;quot;John&amp;quot;,&amp;quot;sn&amp;quot;:&amp;quot;Doe&amp;quot;,&amp;quot;company&amp;quot;:&amp;quot;ACME&amp;quot;,&amp;quot;position&amp;quot;:&amp;quot;Head of everything&amp;quot;,&amp;quot;telephonenumber&amp;quot;:[&amp;quot;11111&amp;quot;,&amp;quot;22222&amp;quot;],&amp;quot;homephone&amp;quot;:[&amp;quot;+4944444&amp;quot;,&amp;quot;33333&amp;quot;],&amp;quot;mobile&amp;quot;:[&amp;quot;+49 (123) 55555&amp;quot;]}},&amp;quot;api&amp;quot;:&amp;quot;com.innovaphone.search&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reverse Lookup:&#039;&#039;&#039; The myApps platform services implement an &#039;&#039;API provider&#039;&#039; for the [http://sdk.innovaphone.com/web1/com.innovaphone.phonelookup/lib1_api_phonelookup.htm &#039;&#039;com.innovaphone.phonelookup&#039;&#039; API]. They perform search capabilities on the OS&#039; local phone books which can be used by Apps like the &#039;&#039;phoneapp&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Apps would send a &#039;&#039;Lookup&#039;&#039; request to the API: &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;*&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;4&amp;quot;,&amp;quot;msg&amp;quot;:{ mt: &amp;quot;Lookup&amp;quot;, prefixIntl: &amp;quot;000&amp;quot;, prefixNtl: &amp;quot;00&amp;quot;, prefixExt:&amp;quot;0&amp;quot;, area: &amp;quot;7031&amp;quot;, country: &amp;quot;49&amp;quot;, lookup: &amp;quot;0004970311234567&amp;quot; },&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.lookup&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Search results are delivered as &#039;&#039;LookupInfo&#039;&#039; messages:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiResult&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;3&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;@local-8125d22e37-519d-4056-bfe5-c52ef2ae8fabb0&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;client&amp;quot;:&amp;quot;@client-f62702dd86-be3f-47fc-b4bc-7a21627b75b2ea&amp;quot;,&amp;quot;msg&amp;quot;:{mt: &amp;quot;LookupInfo&amp;quot;, dn: &amp;quot;Jake Blues&amp;quot;, contact: { telephonenumber: [&amp;quot;0004970311234567&amp;quot;], givenname: &amp;quot;Jake&amp;quot;, sn: &amp;quot;Blues&amp;quot;, company: &amp;quot;Blues Brothers&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Windows ====&lt;br /&gt;
On Windows, the search and lookup are performed in all of the user&#039;s Outlook contact folders.  As opposed to the search implemented in the &#039;&#039;Contacts&#039;&#039; and &#039;&#039;Users&#039;&#039; App, all items are returned which match any of the search words (i.e. searching for &#039;&#039;a b&#039;&#039; will return items matching either &#039;&#039;a&#039;&#039; or &#039;&#039;b&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
; searched properties : firstname, lastname&lt;br /&gt;
; returned properties : Following Outlook contact phone number properties are returned  (if available):&lt;br /&gt;
&lt;br /&gt;
:* OFFICE_TELEPHONE_NUMBER as &#039;&#039;telephonenumber&#039;&#039;&lt;br /&gt;
:* OFFICE2_TELEPHONE_NUMBER as &#039;&#039;telephonenumber&#039;&#039;&lt;br /&gt;
:* HOME_TELEPHONE_NUMBER as &#039;&#039;homephone&#039;&#039;&lt;br /&gt;
:* HOME2_TELEPHONE_NUMBER as &#039;&#039;homephone&#039;&#039;&lt;br /&gt;
:* MOBILE_TELEPHONE_NUMBER as &#039;&#039;mobile&#039;&#039;&lt;br /&gt;
:* BUSINESS_FAX_NUMBER as &#039;&#039;facsimiletelephonenumber&#039;&#039;&lt;br /&gt;
Note that contact information is cached in the search provider.  Updated contacts may therefore become effective after a while only.&lt;br /&gt;
Outlook search will create its own trace file &amp;lt;code&amp;gt;myAppsOutlookSearch-&amp;lt;/code&amp;gt;&#039;&#039;date-time&#039;&#039;&amp;lt;code&amp;gt;.txt&amp;lt;/code&amp;gt; in the standard trace directory.&lt;br /&gt;
&lt;br /&gt;
This search provider is always installed and can be disabled.  There is no need (nor possibility) to enable it in the &#039;&#039;Apps&#039;&#039; tab of the PBX&#039;s user object.  Also, no &#039;&#039;App&#039;&#039; object needs to be created for it.&lt;br /&gt;
&lt;br /&gt;
==== Android/iOS ====&lt;br /&gt;
The search and lookup are performed in the contacts.&lt;br /&gt;
&lt;br /&gt;
==== macOS ====&lt;br /&gt;
The search and lookup are performed in the contacts. If you wish to disable local contact lookup, go to system settings - Security &amp;amp; Privacy and disable the access to contacts for myapps.&lt;br /&gt;
&lt;br /&gt;
=== Microsoft Office integration ===&lt;br /&gt;
&lt;br /&gt;
The myApps platform services has a &#039;&#039;office presence provider&#039;&#039; that can provide the user&#039;s presence state to Office applications.  See [[{{NAMESPACE}}:Concept_myApps_Office_Integration|myApps Office Integration]] for details.&lt;br /&gt;
&lt;br /&gt;
This feature is installed by default.  However, it can be disabled using the &#039;&#039;OFFICEPRESENCE&#039;&#039; MSI Parameter.  Also, a check-mark is available in the setup dialog.&lt;br /&gt;
&lt;br /&gt;
=== Call an external application for calls ===&lt;br /&gt;
&lt;br /&gt;
Phone Apps (such as the phoneapp or softphone) can initiate the start of an external application when a new call appears (either incoming or outgoing).  The actual spawning of the application is done by the myApps platform service.  Also, the application properties (such as e.g. the executable&#039;s path) is configured in the myApps platform services (see [[#UI elements|Advanced settings]] in the &#039;&#039;UI elements&#039;&#039; section below).&lt;br /&gt;
&lt;br /&gt;
A number of arguments can be passed to the application by substituting $-variables in the &#039;&#039;Parameter&#039;&#039; field:&lt;br /&gt;
&lt;br /&gt;
; $n : phone number as dialed (called party number for outgoing calls) or received (calling party number for incoming calls)&lt;br /&gt;
&lt;br /&gt;
; $N : called or calling party number in &#039;&#039;national&#039;&#039; format (e.g. 07031730090)&lt;br /&gt;
&lt;br /&gt;
; $I : called or calling party number in &#039;&#039;international&#039;&#039; format (e.g. +497031730090)&lt;br /&gt;
&lt;br /&gt;
: note that both $N and $I only work if $n includes both subscriber number and area code (e.g. 07031730090). Otherwise they are equal to $n&lt;br /&gt;
&lt;br /&gt;
; $d : display name of peer (if known)&lt;br /&gt;
&lt;br /&gt;
; $u : URI name of the peer (if available eg with a federation call)&lt;br /&gt;
&lt;br /&gt;
; $c : conference id&lt;br /&gt;
&lt;br /&gt;
: this is a globally unique ID for this call and may be used to relate the call to the &#039;&#039;guid&#039;&#039; found in the CallInfo structure in the [http://wiki.innovaphone.com/index.php?title=Reference10:SOAP_API#CallInfo SOAP-API] and [http://sdk.innovaphone.com/doc/appwebsocket/RCC.htm RCC-API ].  Also, corresponding [[Reference10:Call Detail Record CDR PBX|CDRs]] can be related using the &#039;&#039;event&#039;&#039; tag&#039;s &#039;&#039;conf&#039;&#039; attribute.&lt;br /&gt;
The start of an external application can be requested using the &#039;&#039;com.innovaphone.externalapps&#039;&#039; API.&lt;br /&gt;
&lt;br /&gt;
Some setup examples are [[Howto:Integrate External Apps in innovaphone UC clients|shown here]].&lt;br /&gt;
&lt;br /&gt;
=== Push ===&lt;br /&gt;
&lt;br /&gt;
Mobile operating systems usually inhibit network operation of apps which run in the background or are closed by the user.  This is done in order to reduce battery consumption.  Unfortunately, this also stops such apps to maintain a registration by regularly sending &#039;&#039;keep alive&#039;&#039; messages to a server (in our case to the PBX).  As a result, myApps will be disconnected from the PBX.   When the PBX determines that there is an event for the application which needs a response, it needs to wake up the app using a dedicated channel provided by the operating system.  This mechanism is know as &#039;&#039;push&#039;&#039;. When running on iOS or Android, myApps supports &#039;&#039;push&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;push&#039;&#039; to work, a [[{{NAMESPACE}}:PBX/Objects/Push|&#039;&#039;push object&#039;&#039;]] needs to be configured in the PBX .  Also, it needs to be enabled on the mobile phone for the myApps app.&lt;br /&gt;
This mechanism is quite similar in v12 and v13, so you can refer to [[{{NAMESPACE}}:Concept_Push_Notifications_for_iOS_and_Android|Reference14r2:Concept_Push_Notifications_for_iOS_and_Android]] for more details. &lt;br /&gt;
&lt;br /&gt;
Also, helpful hints can be found in [[Howto:Troubleshoot v13 Push with myApps for Android and iOS]].&lt;br /&gt;
&lt;br /&gt;
=== App Proxy ===&lt;br /&gt;
&lt;br /&gt;
myApps runs further &#039;&#039;Apps&#039;&#039; (such as e.g. the &#039;&#039;phoneapp&#039;&#039;) as a web page in an IFRAME of the browser myApps is running in.  The App&#039;s page code is loaded either from the PBX or from an &#039;&#039;application platform&#039;&#039; (AP).   This however would mean that the App&#039;s IFRAME would remain empty (a dead white screen) when the PBX or AP is not available. To make sure the App can start-up anyway, the myApps platform services feature the so-called &#039;&#039;App Proxy&#039;&#039;.  This is a caching proxy that caches all the App code so it is available even in case of network failure. When myApps runs in the context of the platform services, Apps are therefore not loaded from the App source directly, but from the local App proxy. &lt;br /&gt;
&lt;br /&gt;
The cached files are stored in the PCs local file system in the &amp;lt;code&amp;gt;C:\Users\...\AppData\Local\innovaphone\myApps\appproxy&amp;lt;/path&amp;gt;&amp;lt;/code&amp;gt;.  There is no configuration required.  However, if myApps seems to run with outdated or corrupt cached copies of the App, you can safely delete the entire directory.&lt;br /&gt;
&lt;br /&gt;
=== Auto update ===&lt;br /&gt;
&lt;br /&gt;
On Windows and on macOS, the myApps platform services can auto-update themselves to a common version.  This is controlled by the [[{{NAMESPACE}}:PBX/Config/myApps#Launcher_Software_Update | &#039;&#039;Launcher Software Update&#039;&#039;]] settings under &#039;&#039;PBX/Config/myApps&#039;&#039; in the PBX. &lt;br /&gt;
&lt;br /&gt;
When myApps is started or the user logs in or myApps needs to re-connect to the PBX, the platform services will use the [http://sdk.innovaphone.com/web1/com.innovaphone.client/lib1_api_client.htm com.innovaphone.client API] to learn the desired version (&#039;&#039;launcherUpdateBuild&#039;&#039;, which is part of the API&#039;s &#039;&#039;model&#039;&#039;). If this differs from the current version, the platform services will try to download the respective new version. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;mt&amp;quot;: &amp;quot;ApiUpdate&amp;quot;,&lt;br /&gt;
    &amp;quot;apis&amp;quot;: {&lt;br /&gt;
        &amp;quot;com.innovaphone.client&amp;quot;: {&lt;br /&gt;
            &amp;quot;@client&amp;quot;: {&lt;br /&gt;
                &amp;quot;title&amp;quot;: &amp;quot;innovaphone myApps&amp;quot;,&lt;br /&gt;
                &amp;quot;model&amp;quot;: {&lt;br /&gt;
                    &amp;quot;launcher&amp;quot;: true,&lt;br /&gt;
                    &amp;quot;launcherUpdateBuild&amp;quot;: &amp;quot;134906&amp;quot;,&lt;br /&gt;
                    &amp;quot;appStoreUrl&amp;quot;: &amp;quot;http://store.innovaphone.com/release/download/&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The installation of the downloaded version is done by the &#039;&#039;innovaphonemyAppsUpdateService&#039;&#039;. This service is installed and enabled during the initial installation of the myApps platform services.  To disable auto-update, either leave the &#039;&#039;Launcher Software Update&#039;&#039; settings empty or set the service&#039;s start mode to &#039;&#039;disabled&#039;&#039; in the Windows &#039;&#039;services control panel&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note that on Windows the update service does not work on terminal servers. Administrators must do myApps base services updates using standard windows mechanisms.&lt;br /&gt;
&lt;br /&gt;
Note that on macOS if myApps has been installed from the Apple Store it is assumed that auto update from the PBX is not desired and disabled therefore.&lt;br /&gt;
&lt;br /&gt;
On Android/iOS/macOS updates can be downloaded from the respective app store.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;Devices&#039;&#039; app can not update software installed on Windows PCs directly. However, when the PBX is updated using an &#039;&#039;update job&#039;&#039; in the &#039;&#039;Devices&#039;&#039; App, the &#039;&#039;Launcher Software Update&#039;&#039; settings will be updated accordingly and hence the myApps base services will ultimately also be updated to the same version.&lt;br /&gt;
&lt;br /&gt;
==== Auto update flow on Windows ====&lt;br /&gt;
&lt;br /&gt;
* On start of myApps, myApps checks if an update is available and ready for installation&lt;br /&gt;
** if yes, the update is installed directly, without user interaction (a popup is shown during the installation)&lt;br /&gt;
** if not, myApps starts&lt;br /&gt;
* if an update is available while myApps is already running, an update notification will be shown which let&#039;s the user choose to install the update now or later (the notification will then popup again after one hour)&lt;br /&gt;
&lt;br /&gt;
==UI elements ==&lt;br /&gt;
There are a few user interfaces provided by the platform services:&lt;br /&gt;
===tray-icon (Windows only) ===&lt;br /&gt;
::[[Image:myapps-tray.png|myapps-tray.png/|myapps-tray.png/]]&lt;br /&gt;
:Allows to&lt;br /&gt;
:* terminate myApps&lt;br /&gt;
:* toggle the &#039;&#039;autostart&#039;&#039; state&lt;br /&gt;
:* toggle the &#039;&#039;show in task bar&#039;&#039; state&lt;br /&gt;
:* open the trace folder&lt;br /&gt;
:&lt;br /&gt;
=== PBX connect form===&lt;br /&gt;
:: [[Image:myapps-connect.png|myapps-connect.png/|myapps-connect.png/]]&lt;br /&gt;
: Allows the user to specify the connect data for the PBX (i.e. IP address or DNS name)&lt;br /&gt;
:&lt;br /&gt;
=== Advanced settings===&lt;br /&gt;
::[[Image:myapps-settings0.png|myapps-settings0.png/|myapps-settings0.png/]]&lt;br /&gt;
::[[Image:myapps-settings.png|myapps-settings.png/|myapps-settings.png/]] [[Image:myapps-settings2.png|myapps-settings2.png/|myapps-settings2.png/]] [[Image:myapps-settings3.png|myapps-settings3.png/|myapps-settings3.png/]]&lt;br /&gt;
&lt;br /&gt;
: Allows to modify various platform dependant settings (such as e.g. the hotkey selection on Windows)&lt;br /&gt;
&lt;br /&gt;
== Interfaces ==&lt;br /&gt;
=== Provided APIs ===&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.search/lib1_api_search.htm com.innovaphone.search] : access to local phone book entries by the [[#Local phonebook access|Local phonebook access]] component.&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.launcher/com.innovaphone.launcher.htm com.innovaphone.launcher] : display of OS specific user notifications and receipt of related user actions&lt;br /&gt;
; com.innovaphone.notificationhandler : reports back click on a notification.&lt;br /&gt;
; com.innovaphone.externalapps : to start external applications, see [[#Call an external application for calls|Call an external application for calls]]  above&lt;br /&gt;
&lt;br /&gt;
=== Used APIs ===&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm com.innovaphone.phone] : used to initiate new or manipulate existing calls by the [[#Hot keys|Hot keys]] and [[#URL handler|URL handler]] components.&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.chat/com.innovaphone.chat.htm com.innovaphone.chat] : used to start a new chat by the [[#URL handler|URL handler]] component.&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.client/lib1_api_client.htm com.innovaphone.client] : the model is used to learn the update settings, see [[#Auto update|Auto update]] above&lt;br /&gt;
&lt;br /&gt;
=== Protocols ===&lt;br /&gt;
&lt;br /&gt;
; [https://sdk.innovaphone.com/doc/launcher/Media.htm Media Protocol] : used by apps to allocate RTP channels, see [[#RTP service for audio.2C video and data|RTP service for audio, video and data]] above&lt;br /&gt;
&lt;br /&gt;
== Related App Services ==&lt;br /&gt;
&lt;br /&gt;
none&lt;br /&gt;
&lt;br /&gt;
== Known limitations ==&lt;br /&gt;
; Incoming call as banner on myApps for iOS : Since iOS 14 the iOS CallKit presents incoming calls as a banner leaving the original green answer button of myApps visible. Use only the blue button of the banner to accept the call or change iPhone Settings, App &amp;quot;Phone&amp;quot;, &amp;quot;Incoming Calls&amp;quot; to &amp;quot;Full Screen&amp;quot; to hide the myApps user interface again during call answering.&lt;br /&gt;
&lt;br /&gt;
; Call answer in speakerphone mode even with active Bluetooth headset on myApps for iOS : This causes unwanted speakerphone operation if the smartphone is used with a Bluetooth car audio system. The behaviour can be changed by selecting &#039;&#039;Bluetooth Headset&#039;&#039; in this setting:&lt;br /&gt;
:&#039;&#039;iOS Settings-&amp;gt;Accessibility-&amp;gt;Touch-&amp;gt;Call Audio Routing: Automatic / Bluetooth Headset / Speaker&#039;&#039;&lt;br /&gt;
:&#039;&#039;iOS Einstellungen-&amp;gt;Bedienungshilfen-&amp;gt;Tippen-&amp;gt;Anrufaudioausgabe: Automatisch / Bluetooth-Headset / Lautsprecher&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; Windows Server 2016 (Windows 10 Build 1607) : windows just shows the first notification. Further notifications aren&#039;t displayed until the previous ones are removed from the notification center. Current windows builds do not show this behaviour anymore.&lt;br /&gt;
&lt;br /&gt;
; Problems on Mac computers with Yealink USB headsets&lt;br /&gt;
: we have received reports that myApps quits unexpectedly on some Mac computers when a Yealink headset is plugged in.  Unfortunately, we could not find out the cause yet.  If you use Yealink USB headsets and have a similar issue, please open a support ticket and send myApps traces.&lt;br /&gt;
&lt;br /&gt;
; Poly / Plantronics headset buttons only functional if myApps is started with Rosetta&lt;br /&gt;
: myApps macOS supports Apple M1/M2 hardware natively. However, the Poly / Plantronics headset SDK is only available for Intel platform and thus myApps needs to be started via Apple&#039;s Intel emulator Rosetta if a Poly / Plantronics headset is used. This is done with right-click on the myApps executable, &#039;&#039;Information&#039;&#039;, &#039;&#039;Open with Rosetta&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
; Windows surface devices may not work correctly&lt;br /&gt;
: Chromium does not get touch keyboard events. USB Keyboards may not be recognized either.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services are installed on Windows using the .msi file found in the &#039;&#039;myApps Windows&#039;&#039; package from [https://store.innovaphone.com/release/download.htm store.innovaphone.com].&lt;br /&gt;
&lt;br /&gt;
myApps can update itself automatically, see [[#Auto update|Auto update]] above.&lt;br /&gt;
&lt;br /&gt;
=== MSI Parameters and install options ===&lt;br /&gt;
&lt;br /&gt;
The MSI installer of myApps for Windows supports the following parameters and can be edited with [https://docs.microsoft.com/en-us/windows/win32/msi/orca-exe Microsoft Orca]. You can add your parameters in the table &#039;&#039;property&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
; SERVER (REG_SZ): the PBX&#039;s server URL&lt;br /&gt;
; OFFICEPRESENCE (REG_DWORD): &#039;&#039;&#039;false&#039;&#039;&#039; to disable presence integration in Microsoft Office&lt;br /&gt;
: this is also available as a check-mark when running the install manually&lt;br /&gt;
&lt;br /&gt;
; DISABLEHEADSETS (REG_DWORD): &#039;&#039;&#039;true&#039;&#039;&#039; to disable headsets support, see [[#Device handling|Device handling]] above&lt;br /&gt;
&lt;br /&gt;
; EXTERNALAPPS (REG_SZ): pre-define external applications, see [[#Call an external application for calls|Call an external application for calls]] above&lt;br /&gt;
: e.g. &amp;lt;code&amp;gt;&amp;quot;{&amp;quot;&amp;quot;externalApps&amp;quot;&amp;quot;:[{&amp;quot;&amp;quot;id&amp;quot;&amp;quot;:0,&amp;quot;&amp;quot;name&amp;quot;&amp;quot;:&amp;quot;&amp;quot;Wireshark&amp;quot;&amp;quot;,&amp;quot;&amp;quot;path&amp;quot;&amp;quot;:&amp;quot;&amp;quot;C:\\Program Files\\Wireshark\\Wireshark.exe&amp;quot;&amp;quot;,&amp;quot;&amp;quot;param&amp;quot;&amp;quot;:&amp;quot;&amp;quot;test $I&amp;quot;&amp;quot;}]}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; FORCERESTART (REG_DWORD): &#039;&#039;&#039;true&#039;&#039;&#039; (or any string ...) kills myApps during the installation and restarts it for the currently logged in user, if it was running&lt;br /&gt;
&lt;br /&gt;
; DISABLELOCALHOST (REG_DWORD): &#039;&#039;&#039;true&#039;&#039;&#039; to disable use of &#039;&#039;&#039;localhost&#039;&#039;&#039; string to access the local webserver. Use &#039;&#039;&#039;127.0.0.1&#039;&#039;&#039; instead&lt;br /&gt;
&lt;br /&gt;
; EXCLUDEINTERFACES (REG_SZ): some VPN interfaces are not detected by Windows as IF_TYPE_PPP or IF_TYPE_TUNNEL and therefore the &#039;&#039;&#039;media outside VPN&#039;&#039;&#039; setting is not taking effect. With this option interfaces can be pre-defined that will not be used for media. Interfaces must be comma separated&lt;br /&gt;
: e.g. &amp;lt;code&amp;gt;EXCLUDEINTERFACES=&amp;quot;172,192.168,10.10&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Current settings are stored in the registry at &amp;lt;code&amp;gt;Computer\HKEY_CURRENT_USER\Software\innovaphone\myApps&amp;lt;/code&amp;gt; or at &amp;lt;code&amp;gt;Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\innovaphone\myApps&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Boolean values like OfficePresence are stored in registry entries with type REG_DWORD and values 1 or 0. 0 disables the setting and 1 enables it.&lt;br /&gt;
&lt;br /&gt;
== iOS ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services are installed on iOS by loading &#039;&#039;innovaphone myApps&#039;&#039; from the &#039;&#039;App Store&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Configuration via MDM ===&lt;br /&gt;
&lt;br /&gt;
the PBX&#039;s server URL can be pre-configured by specifying this dictionary in the MDM&lt;br /&gt;
    &amp;lt;code&amp;gt;&amp;lt;plist&amp;gt;&lt;br /&gt;
        &amp;lt;dict&amp;gt;&lt;br /&gt;
            &amp;lt;key&amp;gt;server&amp;lt;/key&amp;gt;&lt;br /&gt;
            &amp;lt;string&amp;gt;pbx.example.com&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;/dict&amp;gt;&lt;br /&gt;
    &amp;lt;/plist&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== macOS ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services might be installed directly from the Apple store. An installer package &amp;lt;code&amp;gt;myapps.pkg&amp;lt;/code&amp;gt; and a disk image &amp;lt;code&amp;gt;myapps.dmg&amp;lt;/code&amp;gt; is also available from the innovaphone app store. Install &amp;lt;code&amp;gt;myapps.pkg&amp;lt;/code&amp;gt; by double-click on the file and follow the instructions of the installer. myApps becomes available in the Applications folder and can be opened by double-click. Or download and open &amp;lt;code&amp;gt;myapps.dmg&amp;lt;/code&amp;gt; and double klick myApps. If desired integrate it into the app dock by right click, &#039;&#039;Options, Keep in the dock&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If installed from the innovaphone app store, myApps can update itself automatically, see [[#Auto update|Auto update]] above.&lt;br /&gt;
&lt;br /&gt;
If installed from the Apple store, macOS notifies about updates on the Apple store. myApps [[#Auto update|Auto update]] is disabled then.&lt;br /&gt;
&lt;br /&gt;
If a clean-install of the client is necessary, the folder &amp;quot;/Users/username/Library/Containers/myapps&amp;quot; needs to be deleted. To be on the safe side also delete it from the trash bin.&lt;br /&gt;
&lt;br /&gt;
=== Configuration via MDM ===&lt;br /&gt;
&lt;br /&gt;
the PBX&#039;s server URL can be pre-configured by specifying this dictionary in the MDM&lt;br /&gt;
    &amp;lt;code&amp;gt;&amp;lt;plist&amp;gt;&lt;br /&gt;
        &amp;lt;dict&amp;gt;&lt;br /&gt;
            &amp;lt;key&amp;gt;server&amp;lt;/key&amp;gt;&lt;br /&gt;
            &amp;lt;string&amp;gt;pbx.example.com&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;/dict&amp;gt;&lt;br /&gt;
    &amp;lt;/plist&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preferences ===&lt;br /&gt;
&lt;br /&gt;
macOS supports preference settings that can be set via a shell command or via Mac remote management&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;gt; defaults write com.innovaphone.client-ios-14r1 server &amp;quot;PBX-server-URL&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following parameters and can be set through this method:&lt;br /&gt;
&lt;br /&gt;
; server: the PBX&#039;s server URL&lt;br /&gt;
&lt;br /&gt;
=== Setting myApps as Default App for SIP-URLs ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|defaults write com.apple.LaunchServices/com.apple.launchservices.secure LSHandlers -array-add &#039;{&lt;br /&gt;
   LSHandlerURLScheme = sip;&lt;br /&gt;
   LSHandlerRoleAll = &amp;quot;&amp;lt;CFBundleIdentifier&amp;gt;&amp;quot;;&lt;br /&gt;
}&#039;&lt;br /&gt;
|}&lt;br /&gt;
To find the “CFBundleIdentifier”, proceed as follows:&lt;br /&gt;
&lt;br /&gt;
* In the Finder under “Applications”, search for the desired myApps client that you want to set as the default app.&lt;br /&gt;
&lt;br /&gt;
* Right-click on “Show package contents” -&amp;gt; you will find the “CFBundleIdentifier” in the Info.plist file.&lt;br /&gt;
&lt;br /&gt;
A restart of the MAC is required.&lt;br /&gt;
&lt;br /&gt;
=== Using Sennheiser headsets ===&lt;br /&gt;
If you use Sennheiser headsets, you should also install the then-current &amp;lt;code&amp;gt;DSEA_SDK_v&amp;lt;/code&amp;gt;&#039;&#039;version&#039;&#039;&amp;lt;code&amp;gt;.pkg&amp;lt;/code&amp;gt; package, after you installed the myApps client.  Without that, audio will still work, but not the controls on the headset.  You will need to keep that up-to-date yourself, as it is not updated by myApps&#039;s auto-update function.&lt;br /&gt;
&lt;br /&gt;
== Android ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services are installed on Android by loading &#039;&#039;innovaphone myApps&#039;&#039; from the &#039;&#039;Play Store&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Configuration via MDM ===&lt;br /&gt;
&lt;br /&gt;
the PBX&#039;s server URL can be pre-configured by specifying a property &amp;quot;server&amp;quot; with string value &amp;quot;pbx.example.com&amp;quot; in the MDM.&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
&lt;br /&gt;
== Server configuration ==&lt;br /&gt;
When opening myApps for the first time, the user is prompted for the Server. Usually only the hostname (DNS host name or IP address) needs to be configured.&lt;br /&gt;
&lt;br /&gt;
But there are more options for special PBX configurations.&lt;br /&gt;
&lt;br /&gt;
; Non-standard HTTPS port&lt;br /&gt;
: If the PBX uses a non-standard HTTPS port, it must be appended to the host name separated by a colon (&amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;).&lt;br /&gt;
: Example: &amp;lt;code&amp;gt;pbx.example.com:4444&amp;lt;/code&amp;gt; (expands to &amp;lt;code&amp;gt;https://pbx.example.com:4444/PBX0/APPCLIENT/appclient.htm&amp;lt;/code&amp;gt;)&lt;br /&gt;
; DynPBX module name&lt;br /&gt;
: If the PBX is a DynPBX, the module id must be appended to PBX0 separated - (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;).&lt;br /&gt;
: Example: &amp;lt;code&amp;gt;pbx.example.com/PBX0-1&amp;lt;/code&amp;gt; (expands to &amp;lt;code&amp;gt;https://pbx.example.com/PBX0-1/APPCLIENT/appclient.htm&amp;lt;/code&amp;gt;)&lt;br /&gt;
; Softphone physical location&lt;br /&gt;
: If user defined physical location shall be used for softphone, you can append it using a parameter &amp;lt;code&amp;gt;#phys=&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Example: &amp;lt;code&amp;gt;pbx.example.com#phys=slave&amp;lt;/code&amp;gt; (expands to &amp;lt;code&amp;gt;https://pbx.example.com/PBX0/APPCLIENT/appclient.htm#phys=slave&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Example 1: PBX pbx.example.com with standard configuration&lt;br /&gt;
 pbx.example.com&lt;br /&gt;
&lt;br /&gt;
Example 2: PBX slave.example with DynPBX module ID 1, HTTPS port 4444 and physical location master&lt;br /&gt;
 slave.example.com:4444/PBX0-1#phys=master&lt;br /&gt;
&lt;br /&gt;
=== HTTP proxy support ===&lt;br /&gt;
&lt;br /&gt;
myApps platform services do support operation via HTTP proxy now. If one or more proxies have been configured in the network settings of the operating system for the active network connection, HTTP CONNECT tunnels are established.&lt;br /&gt;
&lt;br /&gt;
On Windows user name and password can be specified for the tunnel servers as generic credentials in the credentials manager (Anmeldeinformationsverwaltung). The name of the credentials must be the tunnel server hostname.&lt;br /&gt;
&lt;br /&gt;
On Android user name and password can be specified through Android &#039;&#039;Settings, Accounts&#039;&#039; by adding a myApps &#039;&#039;HTTP Proxy Credentials&#039;&#039; account. The name of the account must be the tunnel server hostname.&lt;br /&gt;
&lt;br /&gt;
== Platform specific settings ==&lt;br /&gt;
When myApps runs under the myApps platform services, it will show various platform specific settings as part of its &#039;&#039;burger menu&#039;&#039;, so the user can set them.  See &#039;&#039;Advanced settings&#039;&#039; in [[#UI elements|UI elements]] above.&lt;br /&gt;
&lt;br /&gt;
Some options can also be set globally for all myApps clients in the PBX&#039;s [[{{NAMESPACE}}:PBX/Config/myApps#Client_Settings|PBX/Config/myApps &#039;&#039;Client Settings&#039;&#039;]]&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Option&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Description&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Where to set&lt;br /&gt;
&lt;br /&gt;
!&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot;| Availability&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| || || User menu || PBX &#039;&#039;Client Settings&#039;&#039; || Windows || iOS || Android || macOS&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Autostart || Launch myApps on login || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Appear offline after || controls after which idle time a user is considered &#039;&#039;inactive&#039;&#039;. See [[#User activity|User activity]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Hotkeys || Hotkeys for call dial, accept, reject. See [[#Hot keys|Hot keys]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Docking || Docking mode (left, right, none). See [[#???|??]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Desktop notifications|| Turn on/off platform notifications. See [[#Notifications|  Notifications]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| VPN || Disable VPN address for ICE candidate selection. See [[#RTP ports| RTP ports]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Show in taskbar|| Show myApps in the taskbar in addition to it&#039;s tray icon.  || &amp;amp;#10004; ||&amp;amp;#10007; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Log flags || turn on/off certain trace levels. See [[#Troubleshooting|Troubleshooting]] below.  || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| External applications || define the applications available for Apps to be started. See [[#Call an external application for calls|Call an external application for calls]] above.  || &amp;amp;#10004; ||&amp;amp;#10007; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Ring in headset || send ring tone for incoming to headset instead of loudspeaker.  || &amp;amp;#10004; ||&amp;amp;#10007; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|}&lt;br /&gt;
== Start parameters for Windows ==&lt;br /&gt;
&lt;br /&gt;
On Windows, it is not possible to pass start parameters from the [https://www.chromium.org/developers Chromium documentation] to the myApps process.&lt;br /&gt;
&lt;br /&gt;
== OS Settings for Windows ==&lt;br /&gt;
Windows settings can influence the display of &#039;&#039;Desktop notifications&#039;&#039;. See [https://support.microsoft.com/en-us/help/4028678/windows-10-change-notification-settings Change notification settings in Windows 10/11] for details.&lt;br /&gt;
&lt;br /&gt;
=== Windows 11 ===&lt;br /&gt;
&lt;br /&gt;
* Windows 11 has a feature &amp;quot;do not disturb&amp;quot;. This hides notifications if enabled.&lt;br /&gt;
* Windows 11 has a feature &amp;quot;focus&amp;quot;. This enables &amp;quot;do not disturb&amp;quot; and thus hides notifications too.&lt;br /&gt;
* Windows 11 has priority settings for notifications. Ensure that VoIP notifications for calls are allowed any maybe also include myApps as an App which is allowed to show notifications.&lt;br /&gt;
&lt;br /&gt;
== OS settings for Android ==&lt;br /&gt;
; Events : The appearance of notifications can be controlled here.&lt;br /&gt;
&lt;br /&gt;
; Call accounts : For proper incoming call signaling, the call account &#039;&#039;myApps&#039;&#039; needs to be enabled. Note that on Samsung smartphones the call account switch likely toggles back and a few tries may need to be done until it persists. Please double-check the state.&lt;br /&gt;
&lt;br /&gt;
; Preferred Calling Account : Choose which calling account (myApps/SIM/..) should be used for outgoing calls initiated from within the native phone app / phone book.&lt;br /&gt;
&lt;br /&gt;
; Background data, unlimited data usage : Grant background data use to enable &#039;&#039;myApps&#039;&#039; to connect to the PBX immediately on an incoming call.&lt;br /&gt;
&lt;br /&gt;
; Overlaying : This setting is not needed if call account &#039;&#039;myApps&#039;&#039; has been enabled. Should there be a reason for not enabling call account &#039;&#039;myApps&#039;&#039;, the permission for overlaying needs to be granted on Android 10 or higher for proper call signaling.&lt;br /&gt;
&lt;br /&gt;
Note: If no SIM card is installed some Android smartphones exhibit a problem dialing from the smartphone contacts. The contacts app shows a choice &#039;&#039;Select SIM card for this call&#039;&#039; but all possible dialers are greyed out. In this case make myApps the default phone app in Android settings &#039;&#039;Apps, Default apps, Telephony&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== OS settings for iOS ==&lt;br /&gt;
; Notifications : The appearance of notifications can be controlled in iOS &#039;&#039;Settings, myApps&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== OS settings for macOS ==&lt;br /&gt;
&lt;br /&gt;
; Notifications : The appearance of notifications can be controlled in macOS &#039;&#039;Preferences, Notifications, myApps&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
myApps platform services can write various traces for debugging.  Trace can be turned on and off selectively in the [[#Advanced settings|Advanced settings]].&lt;br /&gt;
&lt;br /&gt;
The following trace flags can be set:&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;Recommended trace options are: &#039;&#039;&#039;App, Browser, ICE, TURN, Signaling and Audio&#039;&#039;&#039;. Please do not activate other flags unless innovaphone support says otherwise&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!style=&amp;quot;text-align: left; font-weight: bold&amp;quot; |  Abbreviation&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align: left; font-weight: bold&amp;quot; |code&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| App||0x000000001|| logs from the App Service itself&lt;br /&gt;
|-&lt;br /&gt;
| DNS||0x000000008|| logs DNS requests and results&lt;br /&gt;
|-&lt;br /&gt;
| HTTP client||0x000000080|| http client logs&lt;br /&gt;
|-&lt;br /&gt;
| TLS||0x000000400|| TLS logs&lt;br /&gt;
|-&lt;br /&gt;
| TCP||0x000000800|| TCP logs&lt;br /&gt;
|-&lt;br /&gt;
| LDS||0x000001000|| local domain sockets&lt;br /&gt;
|-&lt;br /&gt;
| WebSocket client||0x000004000|| logs outgoing websocket connections&lt;br /&gt;
|-&lt;br /&gt;
| App WebSocket||0x000008000|| logs app websocket connections (e.g. from PBX objects to an App Service or from the UI to the App Service)&lt;br /&gt;
|-&lt;br /&gt;
| UDP||0x000200000|| UDP logs&lt;br /&gt;
|-&lt;br /&gt;
| DTLS||0x000400000|| logs DTLS handshake and messages&lt;br /&gt;
|-&lt;br /&gt;
| Media||0x000800000|| logs media events&lt;br /&gt;
|-&lt;br /&gt;
| Media channel||0x001000000|| logs RTP/SCTP media connections&lt;br /&gt;
|-&lt;br /&gt;
| ICE||0x002000000|| logs ICE messages between peers&lt;br /&gt;
|-&lt;br /&gt;
| TURN||0x004000000|| logs TURN messages between peers&lt;br /&gt;
|-&lt;br /&gt;
| AppSharing||0x008000000|| logs AppSharing connection&lt;br /&gt;
|-&lt;br /&gt;
| Audio||0x010000000|| logs Audio connection and headset events&lt;br /&gt;
|-&lt;br /&gt;
| Video||0x020000000|| logs video connection and webcam events&lt;br /&gt;
|-&lt;br /&gt;
| Browser||0x040000000|| logs Chromium events&lt;br /&gt;
|-&lt;br /&gt;
| AppProxy||0x080000000|| logs requests which are proxied between the local webserver and the remote server&lt;br /&gt;
|-&lt;br /&gt;
| Webserver ||0x200000000|| enables webserver specific logs&lt;br /&gt;
|-&lt;br /&gt;
| Browser Console ||0x400000000|| logs browser console events&lt;br /&gt;
|-&lt;br /&gt;
| Signaling||0x800000000|| enables logs in the signaling module for debugging calls&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;code&#039;&#039; can be or&#039;ed and used as value for the &#039;&#039;Log flags&#039;&#039; field in [[{{NAMESPACE}}:PBX/Config/myApps#Client_Settings|PBX/Config/myApps/Client Settings]].&lt;br /&gt;
&lt;br /&gt;
; Windows :On Windows, traces are written to the &amp;lt;code&amp;gt;C:\Users\[UserName]\AppData\Local\innovaphone\myApps&amp;lt;/code&amp;gt; directory. If you start myApps with --log-size as parameter, you can define the maximum size of a log file (e.g. --log-size=100000000 would be 100MB for each file)&lt;br /&gt;
&lt;br /&gt;
:* myApps-&#039;&#039;date-time&#039;&#039;.txt : main log file for the platform services&lt;br /&gt;
&lt;br /&gt;
:* myAppsOutlookSearch-&#039;&#039;date-time&#039;&#039;.txt : log file for the Outlook phone book access&lt;br /&gt;
&lt;br /&gt;
:* myAppsHookController-&#039;&#039;date-time&#039;&#039;.txt : log file for the hot-key interceptor (see [[#Hot keys|Hot keys]])&lt;br /&gt;
&lt;br /&gt;
; :myApps update installation traces are written to the &amp;lt;code&amp;gt;%windir%\temp\&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
:* myAppsInstall.txt: MSI installation file&lt;br /&gt;
&lt;br /&gt;
; :myApps update service traces are written to the &amp;lt;code&amp;gt;%ALLUSERSPROFILE%\innovaphone\myAppsUpdateService&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
:* myAppsUpdateService-&#039;&#039;date-time&#039;&#039;.txt: myApps update service traces&lt;br /&gt;
&lt;br /&gt;
;Android : traces can be sent by e-mail.&lt;br /&gt;
&lt;br /&gt;
: also, an Android device might also be connected to a PC via an USB cable to get the traces. The files can be found in &amp;lt;code&amp;gt;Android/data/com.innovaphone.clientandroid/files&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; iOS : traces can be sent by e-mail.&lt;br /&gt;
&lt;br /&gt;
; macOS : traces can be sent by e-mail.&lt;br /&gt;
&lt;br /&gt;
: also, the files can be found in &amp;lt;code&amp;gt;~/Library/Containers/com.innovaphone.client-ios/Data/Documents/&amp;lt;/code&amp;gt;. Press &#039;&#039;Alt+N&#039;&#039; followed by space to get tilde &#039;&#039;~&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= Known Problems =&lt;br /&gt;
[[:Category:Problem myApps platform services|Known Problems]]&lt;br /&gt;
&lt;br /&gt;
= Related Articles =&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myApps]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myApps_Redundancy|Reference14r2:Concept_myApps_Redundancy]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myApps_Office_Integration|Reference14r2:Concept_myApps_Office_Integration]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myAPPs_Search_in_local-Outlook_Contacts|Reference14r2:Concept_myAPPs_Search_in_local-Outlook_Contacts]]&lt;br /&gt;
* [[{{NAMESPACE}}:Call_Detail_Record_CDR_PBX|Reference14r2:Call_Detail_Record_CDR_PBX]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept Push Notifications for myPBX iOS and Android|Reference14r2:Concept Push Notifications for myPBX iOS and Android]]&lt;br /&gt;
* [[Howto:Troubleshoot v13 Push with myApps for Android and iOS]]&lt;br /&gt;
* [[{{NAMESPACE}}:PBX/Config/myApps]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept myApps platform services]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79384</id>
		<title>Reference16r1:Concept Accessibility</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79384"/>
		<updated>2026-04-01T17:39:35Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Current Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Inclusivity is an important objective for innovaphone and should naturally be supported by its solutions. An increasingly common requirement is the accessibility of deployed software solutions. Accessibility is a broad concept. &lt;br /&gt;
&lt;br /&gt;
Its implementation must be evaluated individually for each solution component:&lt;br /&gt;
* The most frequent requirement for communication solutions is support for screen readers to read out defined screen content or display it on a Braille display. Since version 14r2, the myApps client offers such support.&lt;br /&gt;
* For individual apps, this support must be implemented accordingly.&lt;br /&gt;
&lt;br /&gt;
Our procedure:&lt;br /&gt;
* innovaphone plans a step-by-step implementation of accessibility features in the most important apps, starting with the Phone App and the Softphone App.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notice:&#039;&#039;&#039; For partner apps, the implementation must be carried out by the app developer.&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
&lt;br /&gt;
Our long-term goal is to achieve comprehensive conformity with the WCAG standard and have this conformity externally audited. We are proceeding step-by-step, implementing different aspects of the standard in one app after another. You can see the current progress below.&lt;br /&gt;
&lt;br /&gt;
;myApps client&lt;br /&gt;
:✔️ Keyboard navigation and operation&lt;br /&gt;
:✔️ Screen reader support&lt;br /&gt;
:✔️ Substantial WCAG compliance with minor gaps &lt;br /&gt;
:🛠️ Presence symbols additional to color and text&lt;br /&gt;
:🛠️ Optimize highlight color in light color scheme&lt;br /&gt;
:🛠️ More optimizations for keyboard workflow using screenreader&lt;br /&gt;
&lt;br /&gt;
;Softphone App&lt;br /&gt;
:✔️ Keyboard navigation and operation&lt;br /&gt;
:✔️ Screen reader support&lt;br /&gt;
:🛠️ Substantial WCAG compliance (e.g. color contrast)&lt;br /&gt;
&lt;br /&gt;
;Phone App&lt;br /&gt;
:✔️ Keyboard navigation and operation&lt;br /&gt;
:✔️ Screen reader support&lt;br /&gt;
:🛠️ Substantial WCAG compliance (e.g. color contrast)&lt;br /&gt;
&lt;br /&gt;
;RCC App&lt;br /&gt;
:✔️ Keyboard shortcuts&lt;br /&gt;
:🛠️ Keyboard navigation and operation&lt;br /&gt;
:🛠️ Screen reader support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(next steps are subject to change based on prioritization)&lt;br /&gt;
&lt;br /&gt;
==myApps==&lt;br /&gt;
&lt;br /&gt;
Starting from 14r2, screen reader compatibility is available in the myApps client itself. The myApps web client is fully operable via keyboard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This relates to the myApps web client itself. For information about possible accessibility features in individual apps or other products see below.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Screen reader support ===&lt;br /&gt;
The myApps client offers full support for screen readers by providing additional markup.&lt;br /&gt;
&lt;br /&gt;
This is based on general web technology so it should be compatible with any screen reader.&lt;br /&gt;
&lt;br /&gt;
For testing we use:&lt;br /&gt;
* [https://www.nvaccess.org/ NVDA]&lt;br /&gt;
* Jaws&lt;br /&gt;
&lt;br /&gt;
===Keyboard control===&lt;br /&gt;
&lt;br /&gt;
While navigating using the keyboard the current element is highlighted using a dashed outline.&lt;br /&gt;
&lt;br /&gt;
;TAB: Go to next element&lt;br /&gt;
;SHIFT-TAB: Go to previous element&lt;br /&gt;
;SPACE: Activate current element&lt;br /&gt;
;ESC: Close or exit action&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Focused elements are visually emphasized. All UI elements include textual descriptions that are read out by the screen reader.&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_visual.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_display.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally we added some hotkeys for navigation that work while the myApps webclient has the focus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Those hotkeys only work while the myApps client has the focus.&lt;br /&gt;
&lt;br /&gt;
;ALT+1: Home&lt;br /&gt;
;ALT+2: First running app&lt;br /&gt;
;ALT+3: Second running app&lt;br /&gt;
;...:&lt;br /&gt;
;ALT+0: All apps&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_hotkey.png | 600px]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79383</id>
		<title>Reference16r1:Concept Accessibility</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79383"/>
		<updated>2026-04-01T16:38:17Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Current Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Inclusivity is an important objective for innovaphone and should naturally be supported by its solutions. An increasingly common requirement is the accessibility of deployed software solutions. Accessibility is a broad concept. &lt;br /&gt;
&lt;br /&gt;
Its implementation must be evaluated individually for each solution component:&lt;br /&gt;
* The most frequent requirement for communication solutions is support for screen readers to read out defined screen content or display it on a Braille display. Since version 14r2, the myApps client offers such support.&lt;br /&gt;
* For individual apps, this support must be implemented accordingly.&lt;br /&gt;
&lt;br /&gt;
Our procedure:&lt;br /&gt;
* innovaphone plans a step-by-step implementation of accessibility features in the most important apps, starting with the Phone App and the Softphone App.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notice:&#039;&#039;&#039; For partner apps, the implementation must be carried out by the app developer.&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
&lt;br /&gt;
Our long-term goal is to achieve comprehensive conformity with the WCAG standard and have this conformity externally audited. We are proceeding step-by-step, implementing different aspects of the standard in one app after another. You can see the current progress below.&lt;br /&gt;
&lt;br /&gt;
;myApps client&lt;br /&gt;
:✔️ Keyboard navigation and operation&lt;br /&gt;
:✔️ Screen reader support&lt;br /&gt;
:✔️ Substantial WCAG compliance with minor gaps &lt;br /&gt;
:🛠️ Presence symbols additional to color and text&lt;br /&gt;
:🛠️ Optimize highlight color in light color scheme&lt;br /&gt;
:🛠️ More optimizations for keyboard workflow using screenreader&lt;br /&gt;
&lt;br /&gt;
;Softphone App&lt;br /&gt;
:✔️ Keyboard navigation and operation&lt;br /&gt;
:✔️ Screen reader support&lt;br /&gt;
&lt;br /&gt;
;Phone App&lt;br /&gt;
:✔️ Keyboard navigation and operation&lt;br /&gt;
:✔️ Screen reader support&lt;br /&gt;
&lt;br /&gt;
;RCC App&lt;br /&gt;
:✔️ Keyboard shortcuts&lt;br /&gt;
:🛠️ Keyboard navigation and operation&lt;br /&gt;
:🛠️ Screen reader support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(next steps are subject to change based on prioritization)&lt;br /&gt;
&lt;br /&gt;
==myApps==&lt;br /&gt;
&lt;br /&gt;
Starting from 14r2, screen reader compatibility is available in the myApps client itself. The myApps web client is fully operable via keyboard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This relates to the myApps web client itself. For information about possible accessibility features in individual apps or other products see below.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Screen reader support ===&lt;br /&gt;
The myApps client offers full support for screen readers by providing additional markup.&lt;br /&gt;
&lt;br /&gt;
This is based on general web technology so it should be compatible with any screen reader.&lt;br /&gt;
&lt;br /&gt;
For testing we use:&lt;br /&gt;
* [https://www.nvaccess.org/ NVDA]&lt;br /&gt;
* Jaws&lt;br /&gt;
&lt;br /&gt;
===Keyboard control===&lt;br /&gt;
&lt;br /&gt;
While navigating using the keyboard the current element is highlighted using a dashed outline.&lt;br /&gt;
&lt;br /&gt;
;TAB: Go to next element&lt;br /&gt;
;SHIFT-TAB: Go to previous element&lt;br /&gt;
;SPACE: Activate current element&lt;br /&gt;
;ESC: Close or exit action&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Focused elements are visually emphasized. All UI elements include textual descriptions that are read out by the screen reader.&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_visual.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_display.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally we added some hotkeys for navigation that work while the myApps webclient has the focus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Those hotkeys only work while the myApps client has the focus.&lt;br /&gt;
&lt;br /&gt;
;ALT+1: Home&lt;br /&gt;
;ALT+2: First running app&lt;br /&gt;
;ALT+3: Second running app&lt;br /&gt;
;...:&lt;br /&gt;
;ALT+0: All apps&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_hotkey.png | 600px]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79382</id>
		<title>Reference16r1:Concept Accessibility</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79382"/>
		<updated>2026-04-01T16:37:56Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Current Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Inclusivity is an important objective for innovaphone and should naturally be supported by its solutions. An increasingly common requirement is the accessibility of deployed software solutions. Accessibility is a broad concept. &lt;br /&gt;
&lt;br /&gt;
Its implementation must be evaluated individually for each solution component:&lt;br /&gt;
* The most frequent requirement for communication solutions is support for screen readers to read out defined screen content or display it on a Braille display. Since version 14r2, the myApps client offers such support.&lt;br /&gt;
* For individual apps, this support must be implemented accordingly.&lt;br /&gt;
&lt;br /&gt;
Our procedure:&lt;br /&gt;
* innovaphone plans a step-by-step implementation of accessibility features in the most important apps, starting with the Phone App and the Softphone App.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notice:&#039;&#039;&#039; For partner apps, the implementation must be carried out by the app developer.&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
&lt;br /&gt;
Our long-term goal is to achieve comprehensive conformity with the WCAG standard and have this conformity externally audited. We are proceeding step-by-step, implementing different aspects of the standard in one app after another. You can see the current progress below.&lt;br /&gt;
&lt;br /&gt;
;myApps client&lt;br /&gt;
:✔️ Keyboard navigation and operation&lt;br /&gt;
:✔️ Screen reader support&lt;br /&gt;
:✔️ Substantial WCAG compliance with minor gaps &lt;br /&gt;
:🛠️ Presence symbols additional to color and text&lt;br /&gt;
:🛠️ Optimize highlight color in light color scheme&lt;br /&gt;
:🛠️ More optimizations for keyboard workflow using screenreader&lt;br /&gt;
&lt;br /&gt;
;Softphone App&lt;br /&gt;
:✔️ Keyboard navigation and operation&lt;br /&gt;
:✔️ Screen reader support&lt;br /&gt;
&lt;br /&gt;
;Phone App&lt;br /&gt;
:✔️ Keyboard navigation and operation&lt;br /&gt;
:✔️ Screen reader support&lt;br /&gt;
&lt;br /&gt;
;RCC App&lt;br /&gt;
:✔️ Keyboard shortcuts&lt;br /&gt;
:🛠️ Keyboard navigation and operation&lt;br /&gt;
&lt;br /&gt;
(next steps are subject to change based on prioritization)&lt;br /&gt;
&lt;br /&gt;
==myApps==&lt;br /&gt;
&lt;br /&gt;
Starting from 14r2, screen reader compatibility is available in the myApps client itself. The myApps web client is fully operable via keyboard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This relates to the myApps web client itself. For information about possible accessibility features in individual apps or other products see below.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Screen reader support ===&lt;br /&gt;
The myApps client offers full support for screen readers by providing additional markup.&lt;br /&gt;
&lt;br /&gt;
This is based on general web technology so it should be compatible with any screen reader.&lt;br /&gt;
&lt;br /&gt;
For testing we use:&lt;br /&gt;
* [https://www.nvaccess.org/ NVDA]&lt;br /&gt;
* Jaws&lt;br /&gt;
&lt;br /&gt;
===Keyboard control===&lt;br /&gt;
&lt;br /&gt;
While navigating using the keyboard the current element is highlighted using a dashed outline.&lt;br /&gt;
&lt;br /&gt;
;TAB: Go to next element&lt;br /&gt;
;SHIFT-TAB: Go to previous element&lt;br /&gt;
;SPACE: Activate current element&lt;br /&gt;
;ESC: Close or exit action&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Focused elements are visually emphasized. All UI elements include textual descriptions that are read out by the screen reader.&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_visual.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_display.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally we added some hotkeys for navigation that work while the myApps webclient has the focus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Those hotkeys only work while the myApps client has the focus.&lt;br /&gt;
&lt;br /&gt;
;ALT+1: Home&lt;br /&gt;
;ALT+2: First running app&lt;br /&gt;
;ALT+3: Second running app&lt;br /&gt;
;...:&lt;br /&gt;
;ALT+0: All apps&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_hotkey.png | 600px]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79381</id>
		<title>Reference16r1:Concept Accessibility</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79381"/>
		<updated>2026-04-01T16:37:38Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Current Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Inclusivity is an important objective for innovaphone and should naturally be supported by its solutions. An increasingly common requirement is the accessibility of deployed software solutions. Accessibility is a broad concept. &lt;br /&gt;
&lt;br /&gt;
Its implementation must be evaluated individually for each solution component:&lt;br /&gt;
* The most frequent requirement for communication solutions is support for screen readers to read out defined screen content or display it on a Braille display. Since version 14r2, the myApps client offers such support.&lt;br /&gt;
* For individual apps, this support must be implemented accordingly.&lt;br /&gt;
&lt;br /&gt;
Our procedure:&lt;br /&gt;
* innovaphone plans a step-by-step implementation of accessibility features in the most important apps, starting with the Phone App and the Softphone App.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notice:&#039;&#039;&#039; For partner apps, the implementation must be carried out by the app developer.&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
&lt;br /&gt;
Our long-term goal is to achieve comprehensive conformity with the WCAG standard and have this conformity externally audited. We are proceeding step-by-step, implementing different aspects of the standard in one app after another. You can see the current progress below.&lt;br /&gt;
&lt;br /&gt;
;myApps client&lt;br /&gt;
:✔️ Keyboard navigation and operation&lt;br /&gt;
:✔️ Screen reader support&lt;br /&gt;
:✔️ Substantial WCAG compliance with minor gaps &lt;br /&gt;
:🛠️ Presence symbols additional to color and text&lt;br /&gt;
:🛠️ Optimize highlight color in light color scheme&lt;br /&gt;
:🛠️ More optimizations for keyboard workflow using screenreader&lt;br /&gt;
&lt;br /&gt;
;Softphone App&lt;br /&gt;
:✔️ Keyboard navigation and operation&lt;br /&gt;
:✔️ Screen reader support&lt;br /&gt;
&lt;br /&gt;
;Phone App&lt;br /&gt;
:✔️ Keyboard navigation and operation&lt;br /&gt;
:✔️ Screen reader support&lt;br /&gt;
&lt;br /&gt;
;RCC App&lt;br /&gt;
:✔️ Keyboard shortcuts&lt;br /&gt;
:🛠️ Keyboard navigation and operation&lt;br /&gt;
:❌ Screen reader support&lt;br /&gt;
&lt;br /&gt;
(next steps are subject to change based on prioritization)&lt;br /&gt;
&lt;br /&gt;
==myApps==&lt;br /&gt;
&lt;br /&gt;
Starting from 14r2, screen reader compatibility is available in the myApps client itself. The myApps web client is fully operable via keyboard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This relates to the myApps web client itself. For information about possible accessibility features in individual apps or other products see below.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Screen reader support ===&lt;br /&gt;
The myApps client offers full support for screen readers by providing additional markup.&lt;br /&gt;
&lt;br /&gt;
This is based on general web technology so it should be compatible with any screen reader.&lt;br /&gt;
&lt;br /&gt;
For testing we use:&lt;br /&gt;
* [https://www.nvaccess.org/ NVDA]&lt;br /&gt;
* Jaws&lt;br /&gt;
&lt;br /&gt;
===Keyboard control===&lt;br /&gt;
&lt;br /&gt;
While navigating using the keyboard the current element is highlighted using a dashed outline.&lt;br /&gt;
&lt;br /&gt;
;TAB: Go to next element&lt;br /&gt;
;SHIFT-TAB: Go to previous element&lt;br /&gt;
;SPACE: Activate current element&lt;br /&gt;
;ESC: Close or exit action&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Focused elements are visually emphasized. All UI elements include textual descriptions that are read out by the screen reader.&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_visual.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_display.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally we added some hotkeys for navigation that work while the myApps webclient has the focus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Those hotkeys only work while the myApps client has the focus.&lt;br /&gt;
&lt;br /&gt;
;ALT+1: Home&lt;br /&gt;
;ALT+2: First running app&lt;br /&gt;
;ALT+3: Second running app&lt;br /&gt;
;...:&lt;br /&gt;
;ALT+0: All apps&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_hotkey.png | 600px]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79380</id>
		<title>Reference16r1:Concept Accessibility</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79380"/>
		<updated>2026-04-01T16:37:29Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Current Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Inclusivity is an important objective for innovaphone and should naturally be supported by its solutions. An increasingly common requirement is the accessibility of deployed software solutions. Accessibility is a broad concept. &lt;br /&gt;
&lt;br /&gt;
Its implementation must be evaluated individually for each solution component:&lt;br /&gt;
* The most frequent requirement for communication solutions is support for screen readers to read out defined screen content or display it on a Braille display. Since version 14r2, the myApps client offers such support.&lt;br /&gt;
* For individual apps, this support must be implemented accordingly.&lt;br /&gt;
&lt;br /&gt;
Our procedure:&lt;br /&gt;
* innovaphone plans a step-by-step implementation of accessibility features in the most important apps, starting with the Phone App and the Softphone App.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notice:&#039;&#039;&#039; For partner apps, the implementation must be carried out by the app developer.&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
&lt;br /&gt;
Our long-term goal is to achieve comprehensive conformity with the WCAG standard and have this conformity externally audited. We are proceeding step-by-step, implementing different aspects of the standard in one app after another. You can see the current progress below.&lt;br /&gt;
&lt;br /&gt;
;myApps client&lt;br /&gt;
:✔️ Keyboard navigation and operation&lt;br /&gt;
:✔️ Screen reader support&lt;br /&gt;
:✔️ Substantial WCAG compliance with minor gaps &lt;br /&gt;
:🛠️ Presence symbols additional to color and text&lt;br /&gt;
:🛠️ Optimize highlight color in light color scheme&lt;br /&gt;
:🛠️ More optimizations for keyboard workflow using screenreader&lt;br /&gt;
&lt;br /&gt;
;Softphone App&lt;br /&gt;
;✔️ Keyboard navigation and operation&lt;br /&gt;
:✔️ Screen reader support&lt;br /&gt;
&lt;br /&gt;
;Phone App&lt;br /&gt;
:✔️ Keyboard navigation and operation&lt;br /&gt;
:✔️ Screen reader support&lt;br /&gt;
&lt;br /&gt;
;RCC App&lt;br /&gt;
:✔️ Keyboard shortcuts&lt;br /&gt;
:🛠️ Keyboard navigation and operation&lt;br /&gt;
:❌ Screen reader support&lt;br /&gt;
&lt;br /&gt;
(next steps are subject to change based on prioritization)&lt;br /&gt;
&lt;br /&gt;
==myApps==&lt;br /&gt;
&lt;br /&gt;
Starting from 14r2, screen reader compatibility is available in the myApps client itself. The myApps web client is fully operable via keyboard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This relates to the myApps web client itself. For information about possible accessibility features in individual apps or other products see below.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Screen reader support ===&lt;br /&gt;
The myApps client offers full support for screen readers by providing additional markup.&lt;br /&gt;
&lt;br /&gt;
This is based on general web technology so it should be compatible with any screen reader.&lt;br /&gt;
&lt;br /&gt;
For testing we use:&lt;br /&gt;
* [https://www.nvaccess.org/ NVDA]&lt;br /&gt;
* Jaws&lt;br /&gt;
&lt;br /&gt;
===Keyboard control===&lt;br /&gt;
&lt;br /&gt;
While navigating using the keyboard the current element is highlighted using a dashed outline.&lt;br /&gt;
&lt;br /&gt;
;TAB: Go to next element&lt;br /&gt;
;SHIFT-TAB: Go to previous element&lt;br /&gt;
;SPACE: Activate current element&lt;br /&gt;
;ESC: Close or exit action&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Focused elements are visually emphasized. All UI elements include textual descriptions that are read out by the screen reader.&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_visual.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_display.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally we added some hotkeys for navigation that work while the myApps webclient has the focus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Those hotkeys only work while the myApps client has the focus.&lt;br /&gt;
&lt;br /&gt;
;ALT+1: Home&lt;br /&gt;
;ALT+2: First running app&lt;br /&gt;
;ALT+3: Second running app&lt;br /&gt;
;...:&lt;br /&gt;
;ALT+0: All apps&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_hotkey.png | 600px]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79379</id>
		<title>Reference16r1:Concept Accessibility</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79379"/>
		<updated>2026-04-01T16:36:43Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Current Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Inclusivity is an important objective for innovaphone and should naturally be supported by its solutions. An increasingly common requirement is the accessibility of deployed software solutions. Accessibility is a broad concept. &lt;br /&gt;
&lt;br /&gt;
Its implementation must be evaluated individually for each solution component:&lt;br /&gt;
* The most frequent requirement for communication solutions is support for screen readers to read out defined screen content or display it on a Braille display. Since version 14r2, the myApps client offers such support.&lt;br /&gt;
* For individual apps, this support must be implemented accordingly.&lt;br /&gt;
&lt;br /&gt;
Our procedure:&lt;br /&gt;
* innovaphone plans a step-by-step implementation of accessibility features in the most important apps, starting with the Phone App and the Softphone App.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notice:&#039;&#039;&#039; For partner apps, the implementation must be carried out by the app developer.&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
&lt;br /&gt;
Our long-term goal is to achieve comprehensive conformity with the WCAG standard and have this conformity externally audited. We are proceeding step-by-step, implementing different aspects of the standard in one app after another. You can see the current progress below.&lt;br /&gt;
&lt;br /&gt;
;myApps client&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
:✔️ Keyboard navigation and operation&lt;br /&gt;
:✔️ substantial WCAG compliance with minor gaps &lt;br /&gt;
:🛠️ Presence symbols additional to color and text&lt;br /&gt;
:🛠️ Optimize highlight color in light color scheme&lt;br /&gt;
:🛠️ More optimizations for keyboard workflow using screenreader&lt;br /&gt;
&lt;br /&gt;
;Softphone App&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
;✔️ Keyboard navigation and operation&lt;br /&gt;
&lt;br /&gt;
;Phone App&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
:✔️ Keyboard navigation and operation&lt;br /&gt;
&lt;br /&gt;
;RCC App&lt;br /&gt;
:✔️ Keyboard shortcuts&lt;br /&gt;
:🛠️ Keyboard navigation and operation&lt;br /&gt;
:❌ screen reader support&lt;br /&gt;
&lt;br /&gt;
(next steps are subject to change based on prioritization)&lt;br /&gt;
&lt;br /&gt;
==myApps==&lt;br /&gt;
&lt;br /&gt;
Starting from 14r2, screen reader compatibility is available in the myApps client itself. The myApps web client is fully operable via keyboard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This relates to the myApps web client itself. For information about possible accessibility features in individual apps or other products see below.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Screen reader support ===&lt;br /&gt;
The myApps client offers full support for screen readers by providing additional markup.&lt;br /&gt;
&lt;br /&gt;
This is based on general web technology so it should be compatible with any screen reader.&lt;br /&gt;
&lt;br /&gt;
For testing we use:&lt;br /&gt;
* [https://www.nvaccess.org/ NVDA]&lt;br /&gt;
* Jaws&lt;br /&gt;
&lt;br /&gt;
===Keyboard control===&lt;br /&gt;
&lt;br /&gt;
While navigating using the keyboard the current element is highlighted using a dashed outline.&lt;br /&gt;
&lt;br /&gt;
;TAB: Go to next element&lt;br /&gt;
;SHIFT-TAB: Go to previous element&lt;br /&gt;
;SPACE: Activate current element&lt;br /&gt;
;ESC: Close or exit action&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Focused elements are visually emphasized. All UI elements include textual descriptions that are read out by the screen reader.&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_visual.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_display.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally we added some hotkeys for navigation that work while the myApps webclient has the focus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Those hotkeys only work while the myApps client has the focus.&lt;br /&gt;
&lt;br /&gt;
;ALT+1: Home&lt;br /&gt;
;ALT+2: First running app&lt;br /&gt;
;ALT+3: Second running app&lt;br /&gt;
;...:&lt;br /&gt;
;ALT+0: All apps&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_hotkey.png | 600px]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79378</id>
		<title>Reference16r1:Concept Accessibility</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79378"/>
		<updated>2026-04-01T16:36:20Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Current Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Inclusivity is an important objective for innovaphone and should naturally be supported by its solutions. An increasingly common requirement is the accessibility of deployed software solutions. Accessibility is a broad concept. &lt;br /&gt;
&lt;br /&gt;
Its implementation must be evaluated individually for each solution component:&lt;br /&gt;
* The most frequent requirement for communication solutions is support for screen readers to read out defined screen content or display it on a Braille display. Since version 14r2, the myApps client offers such support.&lt;br /&gt;
* For individual apps, this support must be implemented accordingly.&lt;br /&gt;
&lt;br /&gt;
Our procedure:&lt;br /&gt;
* innovaphone plans a step-by-step implementation of accessibility features in the most important apps, starting with the Phone App and the Softphone App.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notice:&#039;&#039;&#039; For partner apps, the implementation must be carried out by the app developer.&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
&lt;br /&gt;
Our long-term goal is to achieve comprehensive conformity with the WCAG standard and have this conformity externally audited. We are proceeding step-by-step, implementing different aspects of the standard in one app after another. You can see the current progress below.&lt;br /&gt;
&lt;br /&gt;
;myApps client&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
;✔️ Keyboard navigation and operation&lt;br /&gt;
:✔️ substantial WCAG compliance with minor gaps &lt;br /&gt;
:🛠️ Presence symbols additional to color and text&lt;br /&gt;
:🛠️ Optimize highlight color in light color scheme&lt;br /&gt;
:🛠️ More optimizations for keyboard workflow using screenreader&lt;br /&gt;
&lt;br /&gt;
;Softphone App&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
;✔️ Keyboard navigation and operation&lt;br /&gt;
&lt;br /&gt;
;Phone App&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
;✔️ Keyboard navigation and operation&lt;br /&gt;
&lt;br /&gt;
;RCC App&lt;br /&gt;
;✔️ Keyboard shortcuts&lt;br /&gt;
;🛠️ Keyboard navigation and operation&lt;br /&gt;
:❌ screen reader support&lt;br /&gt;
&lt;br /&gt;
(next steps are subject to change based on prioritization)&lt;br /&gt;
&lt;br /&gt;
==myApps==&lt;br /&gt;
&lt;br /&gt;
Starting from 14r2, screen reader compatibility is available in the myApps client itself. The myApps web client is fully operable via keyboard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This relates to the myApps web client itself. For information about possible accessibility features in individual apps or other products see below.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Screen reader support ===&lt;br /&gt;
The myApps client offers full support for screen readers by providing additional markup.&lt;br /&gt;
&lt;br /&gt;
This is based on general web technology so it should be compatible with any screen reader.&lt;br /&gt;
&lt;br /&gt;
For testing we use:&lt;br /&gt;
* [https://www.nvaccess.org/ NVDA]&lt;br /&gt;
* Jaws&lt;br /&gt;
&lt;br /&gt;
===Keyboard control===&lt;br /&gt;
&lt;br /&gt;
While navigating using the keyboard the current element is highlighted using a dashed outline.&lt;br /&gt;
&lt;br /&gt;
;TAB: Go to next element&lt;br /&gt;
;SHIFT-TAB: Go to previous element&lt;br /&gt;
;SPACE: Activate current element&lt;br /&gt;
;ESC: Close or exit action&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Focused elements are visually emphasized. All UI elements include textual descriptions that are read out by the screen reader.&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_visual.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_display.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally we added some hotkeys for navigation that work while the myApps webclient has the focus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Those hotkeys only work while the myApps client has the focus.&lt;br /&gt;
&lt;br /&gt;
;ALT+1: Home&lt;br /&gt;
;ALT+2: First running app&lt;br /&gt;
;ALT+3: Second running app&lt;br /&gt;
;...:&lt;br /&gt;
;ALT+0: All apps&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_hotkey.png | 600px]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79377</id>
		<title>Reference16r1:Concept Accessibility</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79377"/>
		<updated>2026-04-01T16:23:07Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Current Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Inclusivity is an important objective for innovaphone and should naturally be supported by its solutions. An increasingly common requirement is the accessibility of deployed software solutions. Accessibility is a broad concept. &lt;br /&gt;
&lt;br /&gt;
Its implementation must be evaluated individually for each solution component:&lt;br /&gt;
* The most frequent requirement for communication solutions is support for screen readers to read out defined screen content or display it on a Braille display. Since version 14r2, the myApps client offers such support.&lt;br /&gt;
* For individual apps, this support must be implemented accordingly.&lt;br /&gt;
&lt;br /&gt;
Our procedure:&lt;br /&gt;
* innovaphone plans a step-by-step implementation of accessibility features in the most important apps, starting with the Phone App and the Softphone App.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notice:&#039;&#039;&#039; For partner apps, the implementation must be carried out by the app developer.&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
&lt;br /&gt;
Our long-term goal is to achieve comprehensive conformity with the WCAG standard and have this conformity externally audited. We are proceeding step-by-step, implementing different aspects of the standard in one app after another. You can see the current progress below.&lt;br /&gt;
&lt;br /&gt;
;myApps client&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
:✔️ substantial WCAG compliance with minor gaps &lt;br /&gt;
:🛠️ Presence symbols additional to color and text&lt;br /&gt;
:🛠️ Optimize highlight color in light color scheme&lt;br /&gt;
:🛠️ More optimizations for keyboard workflow using screenreader&lt;br /&gt;
&lt;br /&gt;
;Softphone App&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
&lt;br /&gt;
;Phone App&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
&lt;br /&gt;
;RCC App&lt;br /&gt;
:❌ screen reader support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(next steps are subject to change based on prioritization)&lt;br /&gt;
&lt;br /&gt;
==myApps==&lt;br /&gt;
&lt;br /&gt;
Starting from 14r2, screen reader compatibility is available in the myApps client itself. The myApps web client is fully operable via keyboard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This relates to the myApps web client itself. For information about possible accessibility features in individual apps or other products see below.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Screen reader support ===&lt;br /&gt;
The myApps client offers full support for screen readers by providing additional markup.&lt;br /&gt;
&lt;br /&gt;
This is based on general web technology so it should be compatible with any screen reader.&lt;br /&gt;
&lt;br /&gt;
For testing we use:&lt;br /&gt;
* [https://www.nvaccess.org/ NVDA]&lt;br /&gt;
* Jaws&lt;br /&gt;
&lt;br /&gt;
===Keyboard control===&lt;br /&gt;
&lt;br /&gt;
While navigating using the keyboard the current element is highlighted using a dashed outline.&lt;br /&gt;
&lt;br /&gt;
;TAB: Go to next element&lt;br /&gt;
;SHIFT-TAB: Go to previous element&lt;br /&gt;
;SPACE: Activate current element&lt;br /&gt;
;ESC: Close or exit action&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Focused elements are visually emphasized. All UI elements include textual descriptions that are read out by the screen reader.&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_visual.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_display.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally we added some hotkeys for navigation that work while the myApps webclient has the focus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Those hotkeys only work while the myApps client has the focus.&lt;br /&gt;
&lt;br /&gt;
;ALT+1: Home&lt;br /&gt;
;ALT+2: First running app&lt;br /&gt;
;ALT+3: Second running app&lt;br /&gt;
;...:&lt;br /&gt;
;ALT+0: All apps&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_hotkey.png | 600px]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79376</id>
		<title>Reference16r1:Concept Accessibility</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79376"/>
		<updated>2026-04-01T16:02:37Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Current Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Inclusivity is an important objective for innovaphone and should naturally be supported by its solutions. An increasingly common requirement is the accessibility of deployed software solutions. Accessibility is a broad concept. &lt;br /&gt;
&lt;br /&gt;
Its implementation must be evaluated individually for each solution component:&lt;br /&gt;
* The most frequent requirement for communication solutions is support for screen readers to read out defined screen content or display it on a Braille display. Since version 14r2, the myApps client offers such support.&lt;br /&gt;
* For individual apps, this support must be implemented accordingly.&lt;br /&gt;
&lt;br /&gt;
Our procedure:&lt;br /&gt;
* innovaphone plans a step-by-step implementation of accessibility features in the most important apps, starting with the Phone App and the Softphone App.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notice:&#039;&#039;&#039; For partner apps, the implementation must be carried out by the app developer.&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
&lt;br /&gt;
Our long-term goal is to achieve comprehensive conformity with the WCAG standard and have this conformity externally audited. We are proceeding step-by-step, implementing different aspects of the standard in one app after another. You can see the current progress below.&lt;br /&gt;
&lt;br /&gt;
;myApps client&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
:✔️ substantial WCAG compliance with minor gaps &lt;br /&gt;
:🛠️ Presence symbols additional to color and text&lt;br /&gt;
:🛠️ Optimize highlight color in light color scheme&lt;br /&gt;
:🛠️ Optimizations for keyboard workflow using screenreader&lt;br /&gt;
&lt;br /&gt;
;Softphone App&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
&lt;br /&gt;
;Phone App&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
&lt;br /&gt;
;RCC App&lt;br /&gt;
:❌ screen reader support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(next steps are subject to change based on prioritization)&lt;br /&gt;
&lt;br /&gt;
==myApps==&lt;br /&gt;
&lt;br /&gt;
Starting from 14r2, screen reader compatibility is available in the myApps client itself. The myApps web client is fully operable via keyboard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This relates to the myApps web client itself. For information about possible accessibility features in individual apps or other products see below.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Screen reader support ===&lt;br /&gt;
The myApps client offers full support for screen readers by providing additional markup.&lt;br /&gt;
&lt;br /&gt;
This is based on general web technology so it should be compatible with any screen reader.&lt;br /&gt;
&lt;br /&gt;
For testing we use:&lt;br /&gt;
* [https://www.nvaccess.org/ NVDA]&lt;br /&gt;
* Jaws&lt;br /&gt;
&lt;br /&gt;
===Keyboard control===&lt;br /&gt;
&lt;br /&gt;
While navigating using the keyboard the current element is highlighted using a dashed outline.&lt;br /&gt;
&lt;br /&gt;
;TAB: Go to next element&lt;br /&gt;
;SHIFT-TAB: Go to previous element&lt;br /&gt;
;SPACE: Activate current element&lt;br /&gt;
;ESC: Close or exit action&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Focused elements are visually emphasized. All UI elements include textual descriptions that are read out by the screen reader.&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_visual.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_display.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally we added some hotkeys for navigation that work while the myApps webclient has the focus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Those hotkeys only work while the myApps client has the focus.&lt;br /&gt;
&lt;br /&gt;
;ALT+1: Home&lt;br /&gt;
;ALT+2: First running app&lt;br /&gt;
;ALT+3: Second running app&lt;br /&gt;
;...:&lt;br /&gt;
;ALT+0: All apps&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_hotkey.png | 600px]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79375</id>
		<title>Reference16r1:Concept Accessibility</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79375"/>
		<updated>2026-04-01T15:57:26Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Current Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Inclusivity is an important objective for innovaphone and should naturally be supported by its solutions. An increasingly common requirement is the accessibility of deployed software solutions. Accessibility is a broad concept. &lt;br /&gt;
&lt;br /&gt;
Its implementation must be evaluated individually for each solution component:&lt;br /&gt;
* The most frequent requirement for communication solutions is support for screen readers to read out defined screen content or display it on a Braille display. Since version 14r2, the myApps client offers such support.&lt;br /&gt;
* For individual apps, this support must be implemented accordingly.&lt;br /&gt;
&lt;br /&gt;
Our procedure:&lt;br /&gt;
* innovaphone plans a step-by-step implementation of accessibility features in the most important apps, starting with the Phone App and the Softphone App.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notice:&#039;&#039;&#039; For partner apps, the implementation must be carried out by the app developer.&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
&lt;br /&gt;
Our long-term goal is to achieve comprehensive conformity with the WCAG standard and have this conformity externally audited. We are proceeding step-by-step, implementing different aspects of the standard in one app after another. You can see the current progress below.&lt;br /&gt;
&lt;br /&gt;
;myApps client&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
:✔️ substantial WCAG compliance with minor gaps &lt;br /&gt;
:🛠️ Presence symbols additional to color and text&lt;br /&gt;
:🛠️ Optimize highlight color in light color scheme&lt;br /&gt;
&lt;br /&gt;
;Softphone App&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
&lt;br /&gt;
;Phone App&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
&lt;br /&gt;
;RCC App&lt;br /&gt;
:❌ screen reader support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(next steps are subject to change based on prioritization)&lt;br /&gt;
&lt;br /&gt;
==myApps==&lt;br /&gt;
&lt;br /&gt;
Starting from 14r2, screen reader compatibility is available in the myApps client itself. The myApps web client is fully operable via keyboard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This relates to the myApps web client itself. For information about possible accessibility features in individual apps or other products see below.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Screen reader support ===&lt;br /&gt;
The myApps client offers full support for screen readers by providing additional markup.&lt;br /&gt;
&lt;br /&gt;
This is based on general web technology so it should be compatible with any screen reader.&lt;br /&gt;
&lt;br /&gt;
For testing we use:&lt;br /&gt;
* [https://www.nvaccess.org/ NVDA]&lt;br /&gt;
* Jaws&lt;br /&gt;
&lt;br /&gt;
===Keyboard control===&lt;br /&gt;
&lt;br /&gt;
While navigating using the keyboard the current element is highlighted using a dashed outline.&lt;br /&gt;
&lt;br /&gt;
;TAB: Go to next element&lt;br /&gt;
;SHIFT-TAB: Go to previous element&lt;br /&gt;
;SPACE: Activate current element&lt;br /&gt;
;ESC: Close or exit action&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Focused elements are visually emphasized. All UI elements include textual descriptions that are read out by the screen reader.&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_visual.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_display.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally we added some hotkeys for navigation that work while the myApps webclient has the focus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Those hotkeys only work while the myApps client has the focus.&lt;br /&gt;
&lt;br /&gt;
;ALT+1: Home&lt;br /&gt;
;ALT+2: First running app&lt;br /&gt;
;ALT+3: Second running app&lt;br /&gt;
;...:&lt;br /&gt;
;ALT+0: All apps&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_hotkey.png | 600px]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79374</id>
		<title>Reference16r1:Concept Accessibility</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79374"/>
		<updated>2026-04-01T15:55:01Z</updated>

		<summary type="html">&lt;p&gt;Msc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Inclusivity is an important objective for innovaphone and should naturally be supported by its solutions. An increasingly common requirement is the accessibility of deployed software solutions. Accessibility is a broad concept. &lt;br /&gt;
&lt;br /&gt;
Its implementation must be evaluated individually for each solution component:&lt;br /&gt;
* The most frequent requirement for communication solutions is support for screen readers to read out defined screen content or display it on a Braille display. Since version 14r2, the myApps client offers such support.&lt;br /&gt;
* For individual apps, this support must be implemented accordingly.&lt;br /&gt;
&lt;br /&gt;
Our procedure:&lt;br /&gt;
* innovaphone plans a step-by-step implementation of accessibility features in the most important apps, starting with the Phone App and the Softphone App.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notice:&#039;&#039;&#039; For partner apps, the implementation must be carried out by the app developer.&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
&lt;br /&gt;
Our long-term goal is to achieve comprehensive conformity with the WCAG standard and have this conformity externally audited. We are proceeding step-by-step, implementing different aspects of the standard in one app after another. You can see the current progress below.&lt;br /&gt;
&lt;br /&gt;
=== Finished ===&lt;br /&gt;
;myApps client&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
:✔️ substantial WCAG compliance with minor gaps &lt;br /&gt;
&lt;br /&gt;
;Softphone App&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
&lt;br /&gt;
;Phone App&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
&lt;br /&gt;
=== Next steps ===&lt;br /&gt;
&#039;&#039;(subject to change based on prioritization)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;myApps client and apps with presence&lt;br /&gt;
:🛠️ Presence symbols additional to color and text&lt;br /&gt;
&lt;br /&gt;
;RCC App&lt;br /&gt;
:❌ screen reader support&lt;br /&gt;
&lt;br /&gt;
==myApps==&lt;br /&gt;
&lt;br /&gt;
Starting from 14r2, screen reader compatibility is available in the myApps client itself. The myApps web client is fully operable via keyboard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This relates to the myApps web client itself. For information about possible accessibility features in individual apps or other products see below.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Screen reader support ===&lt;br /&gt;
The myApps client offers full support for screen readers by providing additional markup.&lt;br /&gt;
&lt;br /&gt;
This is based on general web technology so it should be compatible with any screen reader.&lt;br /&gt;
&lt;br /&gt;
For testing we use:&lt;br /&gt;
* [https://www.nvaccess.org/ NVDA]&lt;br /&gt;
* Jaws&lt;br /&gt;
&lt;br /&gt;
===Keyboard control===&lt;br /&gt;
&lt;br /&gt;
While navigating using the keyboard the current element is highlighted using a dashed outline.&lt;br /&gt;
&lt;br /&gt;
;TAB: Go to next element&lt;br /&gt;
;SHIFT-TAB: Go to previous element&lt;br /&gt;
;SPACE: Activate current element&lt;br /&gt;
;ESC: Close or exit action&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Focused elements are visually emphasized. All UI elements include textual descriptions that are read out by the screen reader.&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_visual.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_display.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally we added some hotkeys for navigation that work while the myApps webclient has the focus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Those hotkeys only work while the myApps client has the focus.&lt;br /&gt;
&lt;br /&gt;
;ALT+1: Home&lt;br /&gt;
;ALT+2: First running app&lt;br /&gt;
;ALT+3: Second running app&lt;br /&gt;
;...:&lt;br /&gt;
;ALT+0: All apps&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_hotkey.png | 600px]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79373</id>
		<title>Reference16r1:Concept Accessibility</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Accessibility&amp;diff=79373"/>
		<updated>2026-04-01T15:42:32Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Next steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Inclusivity is an important objective for innovaphone and should naturally be supported by its solutions. An increasingly common requirement is the accessibility of deployed software solutions. Accessibility is a broad concept. &lt;br /&gt;
&lt;br /&gt;
Its implementation must be evaluated individually for each solution component:&lt;br /&gt;
* The most frequent requirement for communication solutions is support for screen readers to read out defined screen content or display it on a Braille display. Since version 14r2, the myApps client offers such support.&lt;br /&gt;
* For individual apps, this support must be implemented accordingly.&lt;br /&gt;
&lt;br /&gt;
Our procedure:&lt;br /&gt;
* innovaphone plans a step-by-step implementation of accessibility features in the most important apps, starting with the Phone App and the Softphone App.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notice:&#039;&#039;&#039; For partner apps, the implementation must be carried out by the app developer.&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
&lt;br /&gt;
Our long-term goal is to achieve comprehensive conformity with the WCAG standard and have this conformity externally audited. We are proceeding step-by-step, implementing different aspects of the standard in one app after another. You can see the current progress below.&lt;br /&gt;
&lt;br /&gt;
=== Finished ===&lt;br /&gt;
;myApps client&lt;br /&gt;
:✔️ screen reader support&lt;br /&gt;
&lt;br /&gt;
=== Next steps ===&lt;br /&gt;
&#039;&#039;(subject to change based on prioritization)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;RCC App&lt;br /&gt;
:❌ screen reader support&lt;br /&gt;
&lt;br /&gt;
==myApps==&lt;br /&gt;
&lt;br /&gt;
Starting from 14r2, screen reader compatibility is available in the myApps client itself. The myApps web client is fully operable via keyboard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This relates to the myApps web client itself. For information about possible accessibility features in individual apps or other products see below.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Screen reader support ===&lt;br /&gt;
The myApps client offers full support for screen readers by providing additional markup.&lt;br /&gt;
&lt;br /&gt;
This is based on general web technology so it should be compatible with any screen reader.&lt;br /&gt;
&lt;br /&gt;
For testing we use:&lt;br /&gt;
* [https://www.nvaccess.org/ NVDA]&lt;br /&gt;
* Jaws&lt;br /&gt;
&lt;br /&gt;
===Keyboard control===&lt;br /&gt;
&lt;br /&gt;
While navigating using the keyboard the current element is highlighted using a dashed outline.&lt;br /&gt;
&lt;br /&gt;
;TAB: Go to next element&lt;br /&gt;
;SHIFT-TAB: Go to previous element&lt;br /&gt;
;SPACE: Activate current element&lt;br /&gt;
;ESC: Close or exit action&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Focused elements are visually emphasized. All UI elements include textual descriptions that are read out by the screen reader.&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_visual.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_display.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally we added some hotkeys for navigation that work while the myApps webclient has the focus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Those hotkeys only work while the myApps client has the focus.&lt;br /&gt;
&lt;br /&gt;
;ALT+1: Home&lt;br /&gt;
;ALT+2: First running app&lt;br /&gt;
;ALT+3: Second running app&lt;br /&gt;
;...:&lt;br /&gt;
;ALT+0: All apps&lt;br /&gt;
&lt;br /&gt;
[[File:Myapps_accessibility_keyboard_control_hotkey.png | 600px]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_myApps_Redundancy&amp;diff=79246</id>
		<title>Reference16r1:Concept myApps Redundancy</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_myApps_Redundancy&amp;diff=79246"/>
		<updated>2026-03-24T11:39:57Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* General concept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps Redundancy]]&lt;br /&gt;
[[Category:Concept_myApps]]&lt;br /&gt;
&lt;br /&gt;
The myApps client handles the failure of a single PBX by failover to a secondary PBX.&lt;br /&gt;
&lt;br /&gt;
== Applies to ==&lt;br /&gt;
* innovaphone devices with a PBX from version 16r1&lt;br /&gt;
* innovaphone myApps (all platforms)&lt;br /&gt;
&lt;br /&gt;
== General concept ==&lt;br /&gt;
The innovaphone PBX has implemented a mechanism, that by adding a single PBX to an installation, from the failure of any single PBX can be recovered.&lt;br /&gt;
* For a single PBX a standby PBX can be configured&lt;br /&gt;
* For a slave PBX a standby-slave PBX or otherwise the master can act as standby&lt;br /&gt;
* For a master PBX any slave PBX can act as standby&lt;br /&gt;
&lt;br /&gt;
The myApps client can connect to any PBX in the system. If it does not match the PBX on which the user is configured on, the client follows a number of redirects until it ends up at the user&#039;s PBX.&lt;br /&gt;
* Standby PBXes (including standby-slaves) redirect to their active PBX.&lt;br /&gt;
* Slave PBXes redirect to their master PBX.&lt;br /&gt;
* The master PBX redirects to the slave PBX of the user.&lt;br /&gt;
&lt;br /&gt;
=== Handling of standby cases ===&lt;br /&gt;
&lt;br /&gt;
If the current PBX has no registration to the PBX it would redirect to, it acts as a standby and keeps the myApps connection.&lt;br /&gt;
&lt;br /&gt;
If a slave should act as a standby for the master, the myApps client must be logged on to the slave. This forwards the login to the master. In the event of a failover, the slave takes over.&lt;br /&gt;
&lt;br /&gt;
For cases in which the initial PBX is unavailable the myApps client tries to connect to two PBXes in an alternating manner:&lt;br /&gt;
;Primary PBX: This is the PBX where the client tries to connect first.&lt;br /&gt;
;Secondary PBX: This is the PBX, where the client tries to connect, when the connection to the primary PBX failed.&lt;br /&gt;
&lt;br /&gt;
=== Handling of connection loss ===&lt;br /&gt;
If the connection to the current PBX is lost:&lt;br /&gt;
* myApps tries to re-connect to the current PBX first.&lt;br /&gt;
* If the current PBX is unavailable it restarts connecting to the primary and secondary PBX in an alternating manner.&lt;br /&gt;
&lt;br /&gt;
== Determination of primary and secondary PBX ==&lt;br /&gt;
On each successful connection in a non-standby case, myApps determines the primary and secondary PBX automatically and stores the information for handling standby cases.&lt;br /&gt;
&lt;br /&gt;
=== Primary PBX ===&lt;br /&gt;
&lt;br /&gt;
The PBX configured in the myApps client is used as the primary PBX.&lt;br /&gt;
&lt;br /&gt;
=== Secondary PBX ===&lt;br /&gt;
&lt;br /&gt;
There are different cases to be considered to determine the secondary PBX:&lt;br /&gt;
* In case the client was redirected to the PBX the user is configured on&lt;br /&gt;
** the explicit standby of this PBX is used as secondary PBX (if existing)&lt;br /&gt;
** this PBX is used as secondary PBX (otherwise)&lt;br /&gt;
* In case the client was not redirected but stayed on the primary PBX&lt;br /&gt;
** the explicit standby of the primary PBX is used as secondary PBX (if existing)&lt;br /&gt;
** the implicit standby of the primary PBX (the master for slave PBXes) is used as secondary PBX (if exisiting)&lt;br /&gt;
** no secondary PBX is used (otherwise)&lt;br /&gt;
&lt;br /&gt;
== Published information for the softphone app ==&lt;br /&gt;
The myApps client publishes the determined configuration along with other connection details in the API model of com.innovaphone.client inside the &amp;lt;code&amp;gt;connInfo&amp;lt;/code&amp;gt; object. &lt;br /&gt;
&lt;br /&gt;
This information is used by the softphone app. See [[{{NAMESPACE}}:Concept_Softphone_Redundancy]] for details.&lt;br /&gt;
&lt;br /&gt;
Example: &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;connInfo&amp;quot;: {&lt;br /&gt;
    &amp;quot;up&amp;quot;: true,&lt;br /&gt;
    &amp;quot;standby&amp;quot;: false,&lt;br /&gt;
    &amp;quot;cur&amp;quot;: &amp;quot;slave.example.com/PBX0&amp;quot;,&lt;br /&gt;
    &amp;quot;pri&amp;quot;: &amp;quot;master.example.com/PBX0&amp;quot;,&lt;br /&gt;
    &amp;quot;sec&amp;quot;: &amp;quot;slave.example.com/PBX0&amp;quot;,&lt;br /&gt;
    &amp;quot;phys&amp;quot;: &amp;quot;master&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Values:&lt;br /&gt;
;up: true, if the connection is up. false if myApps is offline.&lt;br /&gt;
;standby: true, if the myApps client is connected to a standby PBX. false, if the myApps client is connected to the user&#039;s PBX.&lt;br /&gt;
;cur: the current PBX in the format host/pbx-module&lt;br /&gt;
;pri: the primary PBX in the format host/pbx-module&lt;br /&gt;
;sec: the secondary PBX in the format host/pbx-module&lt;br /&gt;
;phys: the physical location, if configured explicitly&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
For configuration in the myApps launcher, see [[{{NAMESPACE}}:Concept_myApps_platform_services#Server_configuration]].&lt;br /&gt;
&lt;br /&gt;
In the browser the PBX specified by the URL is used as the primary PBX. An explicit physical location can be set using a URL parameter, see [[{{NAMESPACE}}:Concept_myApps#Supported_URL_Parameters]].&lt;br /&gt;
&lt;br /&gt;
== Tracing ==&lt;br /&gt;
Trace flags&lt;br /&gt;
;Browser Console&lt;br /&gt;
: to see the connection flow including redirects and determined configuration&lt;br /&gt;
&lt;br /&gt;
For trace flags for the softphone app see [[{{NAMESPACE}}:Concept_Softphone_Redundancy#Tracing]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_myApps_Redundancy&amp;diff=79244</id>
		<title>Reference16r1:Concept myApps Redundancy</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_myApps_Redundancy&amp;diff=79244"/>
		<updated>2026-03-24T11:29:30Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Secondary PBX */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps Redundancy]]&lt;br /&gt;
[[Category:Concept_myApps]]&lt;br /&gt;
&lt;br /&gt;
The myApps client handles the failure of a single PBX by failover to a secondary PBX.&lt;br /&gt;
&lt;br /&gt;
== Applies to ==&lt;br /&gt;
* innovaphone devices with a PBX from version 16r1&lt;br /&gt;
* innovaphone myApps (all platforms)&lt;br /&gt;
&lt;br /&gt;
== General concept ==&lt;br /&gt;
The innovaphone PBX has implemented a mechanism, that by adding a single PBX to an installation, from the failure of any single PBX can be recovered.&lt;br /&gt;
* For a single PBX a standby PBX can be configured&lt;br /&gt;
* For a slave PBX the master can act as standby&lt;br /&gt;
* For a master PBX any slave PBX can act as standby&lt;br /&gt;
&lt;br /&gt;
The myApps client can connect to any PBX in the system. If it does not match the PBX on which the user is configured on, the client follows a number of redirects until it ends up at the user&#039;s PBX.&lt;br /&gt;
* Slave PBXes redirect to their master PBX.&lt;br /&gt;
* The master PBX redirects to the slave PBX of the user.&lt;br /&gt;
&lt;br /&gt;
=== Handling of standby cases ===&lt;br /&gt;
&lt;br /&gt;
If the current PBX has no registration to the PBX it would redirect to, it acts as a standby and keeps the myApps connection.&lt;br /&gt;
&lt;br /&gt;
If a slave should act as a standby for the master, the myApps client must be logged on to the slave. This forwards the login to the master. In the event of a failover, the slave takes over.&lt;br /&gt;
&lt;br /&gt;
For cases in which the initial PBX is unavailable the myApps client tries to connect to two PBXes in an alternating manner:&lt;br /&gt;
;Primary PBX: This is the PBX where the client tries to connect first.&lt;br /&gt;
;Secondary PBX: This is the PBX, where the client tries to connect, when the connection to the primary PBX failed.&lt;br /&gt;
&lt;br /&gt;
=== Handling of connection loss ===&lt;br /&gt;
If the connection to the current PBX is lost:&lt;br /&gt;
* myApps tries to re-connect to the current PBX first.&lt;br /&gt;
* If the current PBX is unavailable it restarts connecting to the primary and secondary PBX in an alternating manner.&lt;br /&gt;
&lt;br /&gt;
== Determination of primary and secondary PBX ==&lt;br /&gt;
On each successful connection in a non-standby case, myApps determines the primary and secondary PBX automatically and stores the information for handling standby cases.&lt;br /&gt;
&lt;br /&gt;
=== Primary PBX ===&lt;br /&gt;
&lt;br /&gt;
The PBX configured in the myApps client is used as the primary PBX.&lt;br /&gt;
&lt;br /&gt;
=== Secondary PBX ===&lt;br /&gt;
&lt;br /&gt;
There are different cases to be considered to determine the secondary PBX:&lt;br /&gt;
* In case the client was redirected to the PBX the user is configured on&lt;br /&gt;
** the explicit standby of this PBX is used as secondary PBX (if existing)&lt;br /&gt;
** this PBX is used as secondary PBX (otherwise)&lt;br /&gt;
* In case the client was not redirected but stayed on the primary PBX&lt;br /&gt;
** the explicit standby of the primary PBX is used as secondary PBX (if existing)&lt;br /&gt;
** the implicit standby of the primary PBX (the master for slave PBXes) is used as secondary PBX (if exisiting)&lt;br /&gt;
** no secondary PBX is used (otherwise)&lt;br /&gt;
&lt;br /&gt;
== Published information for the softphone app ==&lt;br /&gt;
The myApps client publishes the determined configuration along with other connection details in the API model of com.innovaphone.client inside the &amp;lt;code&amp;gt;connInfo&amp;lt;/code&amp;gt; object. &lt;br /&gt;
&lt;br /&gt;
This information is used by the softphone app. See [[{{NAMESPACE}}:Concept_Softphone_Redundancy]] for details.&lt;br /&gt;
&lt;br /&gt;
Example: &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;connInfo&amp;quot;: {&lt;br /&gt;
    &amp;quot;up&amp;quot;: true,&lt;br /&gt;
    &amp;quot;standby&amp;quot;: false,&lt;br /&gt;
    &amp;quot;cur&amp;quot;: &amp;quot;slave.example.com/PBX0&amp;quot;,&lt;br /&gt;
    &amp;quot;pri&amp;quot;: &amp;quot;master.example.com/PBX0&amp;quot;,&lt;br /&gt;
    &amp;quot;sec&amp;quot;: &amp;quot;slave.example.com/PBX0&amp;quot;,&lt;br /&gt;
    &amp;quot;phys&amp;quot;: &amp;quot;master&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Values:&lt;br /&gt;
;up: true, if the connection is up. false if myApps is offline.&lt;br /&gt;
;standby: true, if the myApps client is connected to a standby PBX. false, if the myApps client is connected to the user&#039;s PBX.&lt;br /&gt;
;cur: the current PBX in the format host/pbx-module&lt;br /&gt;
;pri: the primary PBX in the format host/pbx-module&lt;br /&gt;
;sec: the secondary PBX in the format host/pbx-module&lt;br /&gt;
;phys: the physical location, if configured explicitly&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
For configuration in the myApps launcher, see [[{{NAMESPACE}}:Concept_myApps_platform_services#Server_configuration]].&lt;br /&gt;
&lt;br /&gt;
In the browser the PBX specified by the URL is used as the primary PBX. An explicit physical location can be set using a URL parameter, see [[{{NAMESPACE}}:Concept_myApps#Supported_URL_Parameters]].&lt;br /&gt;
&lt;br /&gt;
== Tracing ==&lt;br /&gt;
Trace flags&lt;br /&gt;
;Browser Console&lt;br /&gt;
: to see the connection flow including redirects and determined configuration&lt;br /&gt;
&lt;br /&gt;
For trace flags for the softphone app see [[{{NAMESPACE}}:Concept_Softphone_Redundancy#Tracing]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_myApps_Redundancy&amp;diff=79243</id>
		<title>Reference16r1:Concept myApps Redundancy</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_myApps_Redundancy&amp;diff=79243"/>
		<updated>2026-03-24T11:24:05Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Secondary PBX */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps Redundancy]]&lt;br /&gt;
[[Category:Concept_myApps]]&lt;br /&gt;
&lt;br /&gt;
The myApps client handles the failure of a single PBX by failover to a secondary PBX.&lt;br /&gt;
&lt;br /&gt;
== Applies to ==&lt;br /&gt;
* innovaphone devices with a PBX from version 16r1&lt;br /&gt;
* innovaphone myApps (all platforms)&lt;br /&gt;
&lt;br /&gt;
== General concept ==&lt;br /&gt;
The innovaphone PBX has implemented a mechanism, that by adding a single PBX to an installation, from the failure of any single PBX can be recovered.&lt;br /&gt;
* For a single PBX a standby PBX can be configured&lt;br /&gt;
* For a slave PBX the master can act as standby&lt;br /&gt;
* For a master PBX any slave PBX can act as standby&lt;br /&gt;
&lt;br /&gt;
The myApps client can connect to any PBX in the system. If it does not match the PBX on which the user is configured on, the client follows a number of redirects until it ends up at the user&#039;s PBX.&lt;br /&gt;
* Slave PBXes redirect to their master PBX.&lt;br /&gt;
* The master PBX redirects to the slave PBX of the user.&lt;br /&gt;
&lt;br /&gt;
=== Handling of standby cases ===&lt;br /&gt;
&lt;br /&gt;
If the current PBX has no registration to the PBX it would redirect to, it acts as a standby and keeps the myApps connection.&lt;br /&gt;
&lt;br /&gt;
If a slave should act as a standby for the master, the myApps client must be logged on to the slave. This forwards the login to the master. In the event of a failover, the slave takes over.&lt;br /&gt;
&lt;br /&gt;
For cases in which the initial PBX is unavailable the myApps client tries to connect to two PBXes in an alternating manner:&lt;br /&gt;
;Primary PBX: This is the PBX where the client tries to connect first.&lt;br /&gt;
;Secondary PBX: This is the PBX, where the client tries to connect, when the connection to the primary PBX failed.&lt;br /&gt;
&lt;br /&gt;
=== Handling of connection loss ===&lt;br /&gt;
If the connection to the current PBX is lost:&lt;br /&gt;
* myApps tries to re-connect to the current PBX first.&lt;br /&gt;
* If the current PBX is unavailable it restarts connecting to the primary and secondary PBX in an alternating manner.&lt;br /&gt;
&lt;br /&gt;
== Determination of primary and secondary PBX ==&lt;br /&gt;
On each successful connection in a non-standby case, myApps determines the primary and secondary PBX automatically and stores the information for handling standby cases.&lt;br /&gt;
&lt;br /&gt;
=== Primary PBX ===&lt;br /&gt;
&lt;br /&gt;
The PBX configured in the myApps client is used as the primary PBX.&lt;br /&gt;
&lt;br /&gt;
=== Secondary PBX ===&lt;br /&gt;
&lt;br /&gt;
There are different cases to be considered to determine the secondary PBX:&lt;br /&gt;
* In case the client was redirected to the PBX the user is configured on&lt;br /&gt;
** the explicit standby of this PBX is used as secondary PBX (if existing)&lt;br /&gt;
** this PBX is used as secondary PBX (otherwise)&lt;br /&gt;
* In case the client was not redirected but stayed on the primary PBX&lt;br /&gt;
** the explicit standby of this PBX is used as secondary PBX (if existing)&lt;br /&gt;
** the implicit standby of this PBX (the master PBX for slave PBXes) is used as secondary PBX (if exisiting)&lt;br /&gt;
** no secondary PBX is determined (otherwise)&lt;br /&gt;
&lt;br /&gt;
== Published information for the softphone app ==&lt;br /&gt;
The myApps client publishes the determined configuration along with other connection details in the API model of com.innovaphone.client inside the &amp;lt;code&amp;gt;connInfo&amp;lt;/code&amp;gt; object. &lt;br /&gt;
&lt;br /&gt;
This information is used by the softphone app. See [[{{NAMESPACE}}:Concept_Softphone_Redundancy]] for details.&lt;br /&gt;
&lt;br /&gt;
Example: &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;connInfo&amp;quot;: {&lt;br /&gt;
    &amp;quot;up&amp;quot;: true,&lt;br /&gt;
    &amp;quot;standby&amp;quot;: false,&lt;br /&gt;
    &amp;quot;cur&amp;quot;: &amp;quot;slave.example.com/PBX0&amp;quot;,&lt;br /&gt;
    &amp;quot;pri&amp;quot;: &amp;quot;master.example.com/PBX0&amp;quot;,&lt;br /&gt;
    &amp;quot;sec&amp;quot;: &amp;quot;slave.example.com/PBX0&amp;quot;,&lt;br /&gt;
    &amp;quot;phys&amp;quot;: &amp;quot;master&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Values:&lt;br /&gt;
;up: true, if the connection is up. false if myApps is offline.&lt;br /&gt;
;standby: true, if the myApps client is connected to a standby PBX. false, if the myApps client is connected to the user&#039;s PBX.&lt;br /&gt;
;cur: the current PBX in the format host/pbx-module&lt;br /&gt;
;pri: the primary PBX in the format host/pbx-module&lt;br /&gt;
;sec: the secondary PBX in the format host/pbx-module&lt;br /&gt;
;phys: the physical location, if configured explicitly&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
For configuration in the myApps launcher, see [[{{NAMESPACE}}:Concept_myApps_platform_services#Server_configuration]].&lt;br /&gt;
&lt;br /&gt;
In the browser the PBX specified by the URL is used as the primary PBX. An explicit physical location can be set using a URL parameter, see [[{{NAMESPACE}}:Concept_myApps#Supported_URL_Parameters]].&lt;br /&gt;
&lt;br /&gt;
== Tracing ==&lt;br /&gt;
Trace flags&lt;br /&gt;
;Browser Console&lt;br /&gt;
: to see the connection flow including redirects and determined configuration&lt;br /&gt;
&lt;br /&gt;
For trace flags for the softphone app see [[{{NAMESPACE}}:Concept_Softphone_Redundancy#Tracing]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_myApps_Redundancy&amp;diff=79242</id>
		<title>Reference16r1:Concept myApps Redundancy</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_myApps_Redundancy&amp;diff=79242"/>
		<updated>2026-03-24T11:18:26Z</updated>

		<summary type="html">&lt;p&gt;Msc: Created page with &amp;quot;myApps Redundancy Category:Concept_myApps  The myApps client handles the failure of a single PBX by failover to a secondary PBX.  == Applies to == * innovaphone devices with a PBX from version 16r1 * innovaphone myApps (all platforms)  == General concept == The innovaphone PBX has implemented a mechanism, that by adding a single PBX to an installation, from the failure of any single PBX can be recovered. * For a single PBX a standby PBX can be co...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps Redundancy]]&lt;br /&gt;
[[Category:Concept_myApps]]&lt;br /&gt;
&lt;br /&gt;
The myApps client handles the failure of a single PBX by failover to a secondary PBX.&lt;br /&gt;
&lt;br /&gt;
== Applies to ==&lt;br /&gt;
* innovaphone devices with a PBX from version 16r1&lt;br /&gt;
* innovaphone myApps (all platforms)&lt;br /&gt;
&lt;br /&gt;
== General concept ==&lt;br /&gt;
The innovaphone PBX has implemented a mechanism, that by adding a single PBX to an installation, from the failure of any single PBX can be recovered.&lt;br /&gt;
* For a single PBX a standby PBX can be configured&lt;br /&gt;
* For a slave PBX the master can act as standby&lt;br /&gt;
* For a master PBX any slave PBX can act as standby&lt;br /&gt;
&lt;br /&gt;
The myApps client can connect to any PBX in the system. If it does not match the PBX on which the user is configured on, the client follows a number of redirects until it ends up at the user&#039;s PBX.&lt;br /&gt;
* Slave PBXes redirect to their master PBX.&lt;br /&gt;
* The master PBX redirects to the slave PBX of the user.&lt;br /&gt;
&lt;br /&gt;
=== Handling of standby cases ===&lt;br /&gt;
&lt;br /&gt;
If the current PBX has no registration to the PBX it would redirect to, it acts as a standby and keeps the myApps connection.&lt;br /&gt;
&lt;br /&gt;
If a slave should act as a standby for the master, the myApps client must be logged on to the slave. This forwards the login to the master. In the event of a failover, the slave takes over.&lt;br /&gt;
&lt;br /&gt;
For cases in which the initial PBX is unavailable the myApps client tries to connect to two PBXes in an alternating manner:&lt;br /&gt;
;Primary PBX: This is the PBX where the client tries to connect first.&lt;br /&gt;
;Secondary PBX: This is the PBX, where the client tries to connect, when the connection to the primary PBX failed.&lt;br /&gt;
&lt;br /&gt;
=== Handling of connection loss ===&lt;br /&gt;
If the connection to the current PBX is lost:&lt;br /&gt;
* myApps tries to re-connect to the current PBX first.&lt;br /&gt;
* If the current PBX is unavailable it restarts connecting to the primary and secondary PBX in an alternating manner.&lt;br /&gt;
&lt;br /&gt;
== Determination of primary and secondary PBX ==&lt;br /&gt;
On each successful connection in a non-standby case, myApps determines the primary and secondary PBX automatically and stores the information for handling standby cases.&lt;br /&gt;
&lt;br /&gt;
=== Primary PBX ===&lt;br /&gt;
&lt;br /&gt;
The PBX configured in the myApps client is used as the primary PBX.&lt;br /&gt;
&lt;br /&gt;
=== Secondary PBX ===&lt;br /&gt;
&lt;br /&gt;
There are different cases to be considered to determine the secondary PBX:&lt;br /&gt;
* In case the client was redirected to the PBX the user is configured on&lt;br /&gt;
** the explicit standby of this PBX is used as secondary PBX (if existing)&lt;br /&gt;
** this PBX is used as secondary PBX (otherwise)&lt;br /&gt;
* In case the client was not redirected, the normal rules for standby PBXes apply, which means if there is an explicit standby available for this PBX, it is used as secondary PBX. If no standby is available, but this is a slave PBX, the master is used.&lt;br /&gt;
&lt;br /&gt;
== Published information for the softphone app ==&lt;br /&gt;
The myApps client publishes the determined configuration along with other connection details in the API model of com.innovaphone.client inside the &amp;lt;code&amp;gt;connInfo&amp;lt;/code&amp;gt; object. &lt;br /&gt;
&lt;br /&gt;
This information is used by the softphone app. See [[{{NAMESPACE}}:Concept_Softphone_Redundancy]] for details.&lt;br /&gt;
&lt;br /&gt;
Example: &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;connInfo&amp;quot;: {&lt;br /&gt;
    &amp;quot;up&amp;quot;: true,&lt;br /&gt;
    &amp;quot;standby&amp;quot;: false,&lt;br /&gt;
    &amp;quot;cur&amp;quot;: &amp;quot;slave.example.com/PBX0&amp;quot;,&lt;br /&gt;
    &amp;quot;pri&amp;quot;: &amp;quot;master.example.com/PBX0&amp;quot;,&lt;br /&gt;
    &amp;quot;sec&amp;quot;: &amp;quot;slave.example.com/PBX0&amp;quot;,&lt;br /&gt;
    &amp;quot;phys&amp;quot;: &amp;quot;master&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Values:&lt;br /&gt;
;up: true, if the connection is up. false if myApps is offline.&lt;br /&gt;
;standby: true, if the myApps client is connected to a standby PBX. false, if the myApps client is connected to the user&#039;s PBX.&lt;br /&gt;
;cur: the current PBX in the format host/pbx-module&lt;br /&gt;
;pri: the primary PBX in the format host/pbx-module&lt;br /&gt;
;sec: the secondary PBX in the format host/pbx-module&lt;br /&gt;
;phys: the physical location, if configured explicitly&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
For configuration in the myApps launcher, see [[{{NAMESPACE}}:Concept_myApps_platform_services#Server_configuration]].&lt;br /&gt;
&lt;br /&gt;
In the browser the PBX specified by the URL is used as the primary PBX. An explicit physical location can be set using a URL parameter, see [[{{NAMESPACE}}:Concept_myApps#Supported_URL_Parameters]].&lt;br /&gt;
&lt;br /&gt;
== Tracing ==&lt;br /&gt;
Trace flags&lt;br /&gt;
;Browser Console&lt;br /&gt;
: to see the connection flow including redirects and determined configuration&lt;br /&gt;
&lt;br /&gt;
For trace flags for the softphone app see [[{{NAMESPACE}}:Concept_Softphone_Redundancy#Tracing]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_myApps_platform_services&amp;diff=78881</id>
		<title>Reference16r1:Concept myApps platform services</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_myApps_platform_services&amp;diff=78881"/>
		<updated>2026-02-10T12:35:14Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* myApps for IP270 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps]]&lt;br /&gt;
&lt;br /&gt;
myApps platform services provide various operating system specific services which can be used by other &#039;&#039;Apps&#039;&#039; running in the [[{{NAMESPACE}}:Concept myApps|myApps client]]. Those services typically are not available in the browser&#039;s JavaScript environment and hence must be implemented in native platform code. Therefore, the platform services are installed as native executable on the respective platform.&lt;br /&gt;
&lt;br /&gt;
When myApps is started in a web browser (and hence has no access to the platform services), some Apps will use [https://en.wikipedia.org/wiki/WebRTC WebRTC] services implemented by the browser instead.  For ease of reference, features available in this scenario are also described here.&lt;br /&gt;
&lt;br /&gt;
On windows, the platform services also come with their own web browser in which the myApps web App will be started then.  This browser is based on google&#039;s [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium] open source software.&lt;br /&gt;
= Applies To =&lt;br /&gt;
&lt;br /&gt;
* [[{{NAMESPACE}}:Concept myApps|myApps]]&lt;br /&gt;
* myApps for Windows&lt;br /&gt;
* myApps for macOS&lt;br /&gt;
* myApps for iOS&lt;br /&gt;
* myApps for Android&lt;br /&gt;
* myApps Web App (WebRTC)&lt;br /&gt;
* myApps for IP270&lt;br /&gt;
version 16r1&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
Not all features are available or required on all platforms.&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot;| Availability&lt;br /&gt;
|-&lt;br /&gt;
| || || Windows || iOS || Android || macOS || Browser&amp;lt;ref&amp;gt;This refers to the myApps web application running in a browser with no platform services available&amp;lt;/ref&amp;gt;&lt;br /&gt;
|IP270&lt;br /&gt;
|-&lt;br /&gt;
| [[#Device handling|Audio Devices]] || manage local audio devices to record and playback audio conversations || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; (audio available but devices managed by web browser) || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Video || manage local displays and cameras to capture and render video live stream || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; (video available but devices managed by web browser) || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Ringer || manage local ringing device || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Application sharing|Application sharing]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; presenter || share an application || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; consumer  || view an application shared by the peer || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Hot keys|Hot keys]] || capture key presses for quick invocation of phone apps (e.g. dial selected number) || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#URL Handler|tel: and sip: URI handler]] || intercept clicks on tel: and sip: links in web sites to invoke phone apps || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#User activity|User activity]] || set presence state according to user activity ||  &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004;&amp;lt;ref&amp;gt;limited, see [[#User activity|User activity]] below&amp;lt;/ref&amp;gt; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Docking || myApps can be docked persistently to the right or left edge of your screens ||  &amp;amp;#10004;  || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Multi-windowing || Apps can be launched in separate windows||  &amp;amp;#10004;  || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Recording|Recording]] || Calls can be recorded to recording app||  &amp;amp;#10004;  || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Notifications|Notifications]] || ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; display notifications || display notifications with OS standard mechanism ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; push notifications || receive push notifications while myApps is not running  ||  &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&amp;lt;ref&amp;gt;The browser needs to be running in order to receive push notifications.&amp;lt;/ref&amp;gt; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; chat and apps || display notifications for chat and other apps  ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; calls || display notifications for incoming calls  ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&amp;lt;ref&amp;gt;Call notifications are only displayed locally while the phone or softphone app is started.&amp;lt;/ref&amp;gt; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Local phonebook access|Local phonebook]] || access local phone book ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Microsoft Office Integration|Office presence provider]] || maps PBX presence state to Microsoft office presence state ||  &amp;amp;#10004;  || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Call an external application for calls|External application start]] || start arbitrary external applications for calls || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#App Proxy|App Proxy]]|| a caching proxy that provides app persistence  || &amp;amp;#10004;  || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Auto update|Auto update]] || automatically updates myApps platform services to the same version the PBX has || &amp;amp;#10004;  || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004;&amp;lt;ref&amp;gt;The then-current web app is always loaded from the PBX upon startup and hence up-to-date by definition&amp;lt;/ref&amp;gt; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Three party conference || initiate 3-pty-conference using Softphone-App || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Exclude VPN || disable use of VPN connections for audio and appsharing || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Screen lock || myApps screen lock against unauthorised use || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
* innovaphone PBX 16r1 and up&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Recommended hardware requirements&lt;br /&gt;
* Processor: Dual-core 2Ghz or higher&lt;br /&gt;
* RAM: 4 Gb&lt;br /&gt;
&lt;br /&gt;
== myApps for Windows ==&lt;br /&gt;
* Windows 11 and up&lt;br /&gt;
* Windows Server 2016 and later versions&lt;br /&gt;
&lt;br /&gt;
=== 32 &amp;amp; 64 bit Windows ===&lt;br /&gt;
* 32 bit Windows: install the myAppsSetup32.msi from the App Store&lt;br /&gt;
* 64 bit Windows: install the myAppsSetup.msi from the App Store&lt;br /&gt;
** the 64 bit variant still installs into Program Files (x86), as the main myApps.exe is still a 32bit application&lt;br /&gt;
** the 64 bit variant just contains an additional 64 bit binary for the outlook search&lt;br /&gt;
&lt;br /&gt;
=== Windows N editions ===&lt;br /&gt;
&lt;br /&gt;
Windows N editions are missing the &#039;&#039;Media Feature Pack&#039;&#039; which is pre installed on other Windows versions.&lt;br /&gt;
&lt;br /&gt;
Please install the pack from [https://www.microsoft.com/en-us/software-download/mediafeaturepack Microsoft (Windows 10 pack)] before you install myApps. The installer will check if the file &amp;lt;code&amp;gt;C:\Windows\SysWOW64\mfplat.dll&amp;lt;/code&amp;gt; exist on your system.&lt;br /&gt;
&lt;br /&gt;
Make sure to install the correct pack depending on your Windows version! There are different packs for Windows 10 1703, 1803, 1809 and 32bit or 64bit etc.&lt;br /&gt;
&lt;br /&gt;
NB: Sometimes the myApps installation will not work even though the media pack is already installed. This is because the installer has no read access to check if the package is already installed. If the above-mentioned file exists and the installer asks to install the Windows Media Feature Pack nevertheless, you have to start the myApps install with administrative rights.&lt;br /&gt;
&lt;br /&gt;
=== Terminal Server environments ===&lt;br /&gt;
&lt;br /&gt;
Audio driver was removed if myApps discovers that it is running in a terminal server environment like Citrix.&lt;br /&gt;
&lt;br /&gt;
The audio driver is needed for the Softphone App but the Softphone App should not use an audio driver at the server side because the audio devices are plugged locally and there would be a delay sending and receiving audio data with the server.&lt;br /&gt;
&lt;br /&gt;
If a customer wants to use the Softphone App at the server side he needs to make use of the myApps Plugin for virtual desktops solution:&lt;br /&gt;
&lt;br /&gt;
[[{{NAMESPACE}}:MyApps_Plugin_for_Virtual_Desktops|Reference15r1:MyApps_Plugin_for_Virtual_Desktops]]&lt;br /&gt;
&lt;br /&gt;
== myApps for macOS ==&lt;br /&gt;
* macOS 13 or higher&lt;br /&gt;
&lt;br /&gt;
== myApps for iOS ==&lt;br /&gt;
* iOS 16 or higher&lt;br /&gt;
&lt;br /&gt;
== myApps for Android ==&lt;br /&gt;
* Android 13 or higher.&lt;br /&gt;
&lt;br /&gt;
== myApps for IP270 ==&lt;br /&gt;
Exclusively used in IP270.&lt;br /&gt;
&lt;br /&gt;
= Licenses =&lt;br /&gt;
* No license needed for myApps platform services&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
myApps platform services is a native executable that is installed using the standard mechanisms on the respective operating system. It provides various advanced services which can be used by the myApps web client code as well as the Apps running in the myApps context. &lt;br /&gt;
&lt;br /&gt;
Also, on Windows, the platform services come with their own, dedicated browser to run myApps in.  This browser is based on [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium].  On iOS, macOS and Android, it is based upon native embedded web view facilities (such as WKWebView) instead.&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
=== RTP service for audio and appsharing ===&lt;br /&gt;
The RTP service provides audio and appsharing as a video stream. VoIP RTP endpoints (e.g. for softphones).  It supports STUN, TURN, ICE, SRTP, DTLS. Note however that unlike WebRTC, these endpoints do not &#039;&#039;require&#039;&#039; ICE and DTLS. In other words, they can communicate also with non-compliant (i.e. older) VoIP devices.&lt;br /&gt;
&lt;br /&gt;
Note that the available capabilities when not running the myApps platform services depend on the used browser&#039;s WebRTC implementation. See your browser documentation for details.&lt;br /&gt;
&lt;br /&gt;
Apps can request RTP channels using the [https://sdk.innovaphone.com/doc/launcher/Media.htm Media Protocol]&#039;s &#039;&#039;AllocChannel&#039;&#039; message.&lt;br /&gt;
&lt;br /&gt;
==== RTP ports ====&lt;br /&gt;
{|&lt;br /&gt;
|  audio || 50000 -&amp;gt; 50099&lt;br /&gt;
|-&lt;br /&gt;
| video (app sharing) || 50100 -&amp;gt; 50199&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The RTP service will enumerate all local interfaces and create local HOST candidates for ICE.  There is an option however to disregard VPN interfaces (more precisely such interfaces with type of &#039;&#039;IF_TYPE_PPP&#039;&#039; or &#039;&#039;IF_TYPE_TUNNEL&#039;&#039;).  This can eliminate quality issues when RTP data is transmitted through TCP based VPN tunnels.&lt;br /&gt;
&lt;br /&gt;
SRFLX and RELAY candidates are obtained using the STUN and TURN server configuration passed by the App (e.g the &#039;&#039;softphone&#039;&#039; App) as part of the &#039;&#039;AllocChannel&#039;&#039; request.&lt;br /&gt;
&amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;AllocChannel&amp;quot;,&amp;quot;channel&amp;quot;:&amp;quot;81429cba-396d-43de-8a76-ec020ba8796e&amp;quot;,&amp;quot;iceServers&amp;quot;:[{&amp;quot;urls&amp;quot;:&amp;quot;turn:myturn.domaincom:4077?transport=udp&amp;quot;,&amp;quot;username&amp;quot;:&amp;quot;turnuser&amp;quot;,&amp;quot;credential&amp;quot;:&amp;quot;pwd&amp;quot;,&amp;quot;credentialType&amp;quot;:&amp;quot;password&amp;quot;},{&amp;quot;urls&amp;quot;:&amp;quot;stun:mystun.domain.com:4077&amp;quot;}],&amp;quot;dn&amp;quot;:&amp;quot;Foo Bar&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;RemoteRtp&amp;quot;,&amp;quot;kind&amp;quot;:&amp;quot;video&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Codecs ====&lt;br /&gt;
The installed myApps launchers provide codecs that can be used by softphone apps for media streams. When running in a web browser the codecs depend on the browser version and operating system. See the documentation of your browser for details.&lt;br /&gt;
&lt;br /&gt;
The following codecs are supported:&lt;br /&gt;
{|&lt;br /&gt;
!style=&amp;quot;text-align:left;width:100px;&amp;quot;|Codec&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Windows-Launcher&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Android&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|iOS&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|macOS&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Firefox (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Chrome (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Edge (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Safari (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Opera (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|IP270&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:left; background-color:lightgray&amp;quot; colspan=&amp;quot;11&amp;quot;|Audio&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|G711A&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|G711u&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|G722&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=Opus OPUS-NB]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=Opus OPUS-WB]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;11&amp;quot; style=&amp;quot;text-align:left; background-color:lightgray&amp;quot; |Video&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=VP8 VP8]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=VP9 VP9]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=H264 H264]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:left; background-color:lightgray&amp;quot; colspan=&amp;quot;11&amp;quot;|Application Sharing&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Share&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|-&lt;br /&gt;
|Watch&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔*&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔*&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔*&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;* small presentation only&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;** only for 1:1 calls, not for conferences&lt;br /&gt;
&lt;br /&gt;
==== Video capture ====&lt;br /&gt;
The default resolution for video capture is 1920x1080 if available.  Otherwise, 1280x720, 640x480, 352x288 or 320x240 will be used.  The frame rate is 30 fps if available, otherwise 15 fps. The resulting average bandwidth could reach 1 Mbps.&lt;br /&gt;
&lt;br /&gt;
==== Application sharing ====&lt;br /&gt;
Screen content will be transmitted as video stream by the presenter&lt;br /&gt;
&lt;br /&gt;
==== Device handling ====&lt;br /&gt;
The RTP service enumerates microphones, loudspeaker, cameras and ringing devices and notifies apps when devices come and go. It is up to the apps using the devices to store preferences.&lt;br /&gt;
&lt;br /&gt;
The RTP service also enables some extended features (such as hook switch or volume control) for supported USB headsets or Bluetooth headsets connected to myApps.&lt;br /&gt;
The supported headset-SDKs determine which headset vendors are recommended to be used with the myApps softphone app. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this to work, the following vendor specific development kits are integrated in our myApps client. Be aware that the SDK are updated within our Service release :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SDK Vendor !! Supported OS !! SDK Version !! innovaphone Service Release&lt;br /&gt;
|-&lt;br /&gt;
| Jabra|| MacOS || 1.12.2.0 || 13r3sr9&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || 1.12.2.0 || 13r3sr10&lt;br /&gt;
|-&lt;br /&gt;
| Epos &#039;&#039;(formerly Sennheiser)&#039;&#039; || MacOS || 12.4.0.5478 || 14r1sr3&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || n.a. - [[Support:13r3 sr10 MyApps Windows Client - Epos/Sennheiser-Headsets require installed Epos-Connect Software|to be installed separately]]|| 13r3sr10&lt;br /&gt;
|-&lt;br /&gt;
| Poly &#039;&#039;(formerly Plantronics)&#039;&#039; || MacOS || 3.25.53799.37131 || 13r3sr9&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || 3.25.53800.37131 || 13r3sr10&lt;br /&gt;
|-&lt;br /&gt;
| Yealink || MacOS || 3.1.1.20 || 14r1sr3&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || 3.1.1.20 || 14r1sr3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* It is possible to inhibit the start of the Sennheiser SDK (SenncomSDK.exe) using the &amp;lt;code&amp;gt;DISABLEHEADSETS&amp;lt;/code&amp;gt; directive of the installer (see [[#MSI Parameters and install options|  MSI parameters]]  below).&lt;br /&gt;
&lt;br /&gt;
* Starting with V13r3sr10, the Epos-SDK needs to be installed separately using the Epos Connect software to ensure full compatibility between current Epos headset models and native myApps-Windows client. For details [[Support:13r3 sr10 MyApps Windows Client - Epos/Sennheiser-Headsets require installed Epos-Connect Software|refer to this article]].&lt;br /&gt;
&amp;lt;!--Keywords: myapps softphone supported headsets sdk--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
myApps-IP270 supports use of [[Reference9:Concept USB Headset|USB devices known for innovpahone desk phones]].&lt;br /&gt;
&lt;br /&gt;
==== Ring tones ====&lt;br /&gt;
Ring tones can be played. Apps can choose the tone from a pre-defined list of ring tones.&lt;br /&gt;
&lt;br /&gt;
On Windows, custom ring tones can be uploaded as .mp3 files to the &amp;lt;code&amp;gt;ringtones&amp;lt;/code&amp;gt; sub-directory of myApps&#039; roaming directory (which usually is in &amp;lt;code&amp;gt;%appdata%\innovaphone\myApps\ringtones&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
On Android, custom ring tones can be added to the system via Android settings.&lt;br /&gt;
&lt;br /&gt;
On iOS, custom ring tones can be uploaded as .mp3 files to the &amp;lt;code&amp;gt;Ringtones&amp;lt;/code&amp;gt; subdirectory of the myApps file share that is available in iTunes if the iPhone has been connected via USB.&lt;br /&gt;
&lt;br /&gt;
On macOS, custom ring tones can be uploaded as .mp3 files to &amp;lt;code&amp;gt;~/Library/Containers/com.innovaphone.client-macos/Data/Documents/Ringtones&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Debugging ====&lt;br /&gt;
For extended debugging, turn on the &#039;&#039;Audio&#039;&#039;, &#039;&#039;Media&#039;&#039; and &#039;&#039;AppSharing&#039;&#039; traces in myApps.&lt;br /&gt;
=== Hot keys ===&lt;br /&gt;
On Windows and macOS systems, myApps platform services can listen for hot keys and invoke certain functions. Invocation is done by sending API messages to myApps which passes it to an appropriate API provider (in the cases described here, this will be a &#039;&#039;phone&#039;&#039; or &#039;&#039;softphone&#039;&#039; or &#039;&#039;rcc&#039;&#039; App typically.  See [[{{NAMESPACE}}:Concept_myApps#Client_APIs_and_default_apps | Client APIs and default apps]] for more details about this mechanism.&lt;br /&gt;
&lt;br /&gt;
The hot keys can be specified using the &#039;&#039;advanced settings&#039;&#039; user interface (see [[#UI elements| UI elements]] below. Any of the function keys F1 to F11 (optionally combined with up to two modifier keys &#039;&#039;alt&#039;&#039;, &#039;&#039;ctrl&#039;&#039;, &#039;&#039;shift&#039;&#039; or &#039;&#039;win&#039;&#039;) can be chosen for each function. If you do not want to start the call with &amp;quot;Hotkey+Enter&amp;quot; because you would have to wait for the focus, the hotkey can also be pressed twice and the number is dialled directly.&lt;br /&gt;
&lt;br /&gt;
; dial selected number : Initiates a call using the currently selected text as target.&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;PrepareCall&#039;&#039; message with the &#039;&#039;text&#039;&#039; argument set to the selected text and the &#039;&#039;adjust&#039;&#039; argument set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:&amp;quot;mt&amp;quot;:&amp;quot;PrepareCall&amp;quot;,&amp;quot;text&amp;quot;:&amp;quot;13&amp;quot;,&amp;quot;adjust&amp;quot;:true}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; accept call : Accepts a currently alerting call.&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;ConnectCall&#039;&#039; message will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;ConnectCall&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; reject/disconnect call : Rejects a currently alerting call or disconnects an active call.&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;DisconnectCall&#039;&#039; message will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;DisconnectCall&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== URL Handler ===&lt;br /&gt;
&lt;br /&gt;
On Windows systems, two URI-handler are installed with the myApps platform services.  Windows will call up this URI handler when a user clicks on an appropriate link, for example in a web site.&lt;br /&gt;
&lt;br /&gt;
The handler will the send an API message to myApps which passes it to an appropriate API provider (in the cases described here, this will be a &#039;&#039;phone&#039;&#039; or &#039;&#039;softphone&#039;&#039; or &#039;&#039;rcc&#039;&#039; App typically.  See [[{{NAMESPACE}}:Concept_myApps#Client_APIs_and_default_apps | Client APIs and default apps]] for more details about this mechanism.&lt;br /&gt;
&lt;br /&gt;
; tel URI : call a number, e.g. &amp;lt;code&amp;gt;tel:4711&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;PrepareCall&#039;&#039; message with the &#039;&#039;num&#039;&#039; argument set to the selected text and the &#039;&#039;adjust&#039;&#039; argument set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;StartCall&amp;quot;,&amp;quot;num&amp;quot;:&amp;quot;4711&amp;quot;,&amp;quot;adjust&amp;quot;:true}}&amp;lt;/code&amp;gt;&lt;br /&gt;
; sip URI : call a SIP name, e.g. &amp;lt;code&amp;gt;sip:zkl@innovaphone.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;PrepareCall&#039;&#039; message with the &#039;&#039;sip&#039;&#039; argument set to the selected text and the &#039;&#039;adjust&#039;&#039; argument set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;StartCall&amp;quot;,&amp;quot;sip&amp;quot;:&amp;quot;zkl@innovaphone.com&amp;quot;,&amp;quot;adjust&amp;quot;:true}}&amp;lt;/code&amp;gt;&lt;br /&gt;
; im URI : start chat with SIP name, e.g. &amp;lt;code&amp;gt;im:zkl@innovaphone.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;StartChat&#039;&#039; message with the &#039;&#039;sip&#039;&#039; argument set to the selected text will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.chat/com.innovaphone.chat.htm &#039;&#039;com.innovaphone.chat&#039;&#039; API].&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.chat&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;StartChat&amp;quot;,&amp;quot;sip&amp;quot;:&amp;quot;zkl@innovaphone.com&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On macOS systems myApps might be made the default application to handle tel URI e.g. &amp;lt;code&amp;gt;tel:4711&amp;lt;/code&amp;gt; via Apple FaceTime. Open the &amp;quot;FaceTime&amp;quot; menu &amp;quot;Settings...&amp;quot; and select myApps as &amp;quot;Default for phone calls&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
On iOS &#039;&#039;tel&#039;&#039; URIs are always dialed via GSM. Therefore myApps iOS also reacts to URI schemes &#039;&#039;com.innovaphone.tel&#039;&#039;, &#039;&#039;com.innovaphone.sip&#039;&#039; and &#039;&#039;com.innovaphone.im&#039;&#039;, e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;com.innovaphone.tel:4711&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;com.innovaphone.sip:zkl@innovaphone.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;com.innovaphone.im:zkl@innovaphone.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== User activity ===&lt;br /&gt;
On Windows and macOS systems, the myApps platform services can monitor user keyboard/mouse activity and change the user&#039;s presence state after a certain amount of inactivity.  The timeout can be specified using the &#039;&#039;advanced settings&#039;&#039; user interface (see [[#UI elements| UI elements]] below.&lt;br /&gt;
&lt;br /&gt;
myApps will then send a [https://sdk.innovaphone.com/doc/appwebsocket/myApps.htm#SetUserActivity&#039;&#039;SetUserActivity&#039;&#039;] message to the PBX using the &#039;&#039;myApps&#039;&#039; protocol.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;SetUserActivity&amp;quot;,&amp;quot;inactive&amp;quot;:true}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will change the &#039;&#039;status&#039;&#039; property of the &#039;&#039;im:&#039;&#039; contact for the user&#039;s own presence and hence result in a presence update from the PBX to myApps&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;UpdateOwnPresence&amp;quot;,&amp;quot;presence&amp;quot;:[{...},{&amp;quot;contact&amp;quot;:&amp;quot;im:&amp;quot;,&amp;quot;activity&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;status&amp;quot;:&amp;quot;closed&amp;quot;}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
The &#039;&#039;closed&#039;&#039; status is reflected in the grey status color when displaying a contact [[Image:myapps-inactive.png|myapps-inactive.png/|myapps-inactive.png/]].&lt;br /&gt;
&lt;br /&gt;
On iOS and Android, the state is set to &#039;&#039;inactive&#039;&#039; as soon as the App is brought to background.&lt;br /&gt;
When myApps platform services are not available (i.e. when running the web application in a browser solely) a limited user activity monitoring is available: the state is set to active when the web page is not used for more than 5 minutes.&lt;br /&gt;
&lt;br /&gt;
=== Recording ===&lt;br /&gt;
&lt;br /&gt;
The new launcher offers the possibility to record the audio of incoming and outgoing calls. In order to activate that functionality the URL of the recording instance must be configured in either the PBX (PBX-&amp;gt;myApps-&amp;gt;Config: Recording URL) or the softphone App (Settings-&amp;gt;Audio Recording (URL)) &lt;br /&gt;
&lt;br /&gt;
[[Image:PBX-Recording-Settings.png|pbx-recording-settings.png/|pbx-recording-settings.png/]] [[Image:Recording-Softphone-Settings.png|recording-softphone-settings.png/|recording-softphone-settings.png/]]. &lt;br /&gt;
&lt;br /&gt;
As long as that URL is configured the audio data of all calls are stored as pcap-files under that URL.&lt;br /&gt;
If the URL points to a CF device in the PBX, write access must be granted for that URL (PBX-&amp;gt;Services-&amp;gt;HTTP-&amp;gt;Server:Public compact flash access) and if the URL points to the recording app, the files can be accessed via the recording app [[{{NAMESPACE}}:Concept_App_Service_Recordings|recording]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Under PBX-&amp;gt;myApps the administrator can set a certain default behaviour of the audio recording like whether or not the recording should start automatically at the beginning of the call (Recording by Default ON/OFF), only calls with external numbers should be recorded (Record external calls only) or whether or not the user should be able to start/stop the recording himself (Allow user incall recording control). Except for the last parameter these parameters can also be modified by the user in its softphone settings if the administrator doesn&#039;t set the FORCE flag.&lt;br /&gt;
&lt;br /&gt;
If the user was allowed by the admin to control the recording a recording switch is active during the call when the &amp;quot;Media&amp;quot; Panel is opened. There the audio recording may be stopped and continued at will. A red recording notice is shown in the top right corner when the recording actually takes place.&lt;br /&gt;
 &lt;br /&gt;
[[Image:Recording-incall-switch.png|recording-incall-switch.png/|recording-incall-switch.png/]]&lt;br /&gt;
&lt;br /&gt;
=== Notifications ===&lt;br /&gt;
&lt;br /&gt;
The myApps platform services can use the OS specific notification mechanism (e.g. &#039;&#039;desktop notifications&#039;&#039; on Windows) to display messages (e.g. &#039;&#039;incoming new chat message&#039;&#039;) to the user.&lt;br /&gt;
&lt;br /&gt;
Note that the actual rendering of the notification is under control of the OS.  Therefore, myApps must be allowed to show notifications and its appearance can be restricted by OS native settings.&lt;br /&gt;
&lt;br /&gt;
==== Microsoft Windows Notifications ====&lt;br /&gt;
&lt;br /&gt;
Microsoft Windows Server editions (2016, 2019, 2022) are just capable of showing a single &#039;&#039;IncomingCall&#039;&#039; notification at the same time (we couldn&#039;t find a workaround for this limitation).&amp;lt;br/&amp;gt;&lt;br /&gt;
An &#039;&#039;IncomingCall&#039;&#039; notification is visible the whole time instead of being moved to the action center after a certain time.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
A notification about a missed call uses the &#039;&#039;IncomingCall&#039;&#039; type so that this notification is visible until the user returns.&amp;lt;br/&amp;gt;&lt;br /&gt;
Due to the above limitation, on a new arriving call such a missed call notification is transformed to a default notification which will be moved to the action center automatically.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
On non server editions, you can have multiple IncomingCall notifications at the same time (so two parallel incoming calls will be indeed notified at the same time), but the missed call notification handling is the same on both platforms!&lt;br /&gt;
&lt;br /&gt;
 Thus there will be always just &#039;&#039;&#039;one&#039;&#039;&#039; missed call notification visible and previous missed calls can be found inside your action center!&lt;br /&gt;
&lt;br /&gt;
To see myApps notifications, ensure:&lt;br /&gt;
* System -&amp;gt; Notifications &lt;br /&gt;
** enable notifications&lt;br /&gt;
** disable &amp;quot;Do not disturb&amp;quot; or allow myApps as priority application while &amp;quot;Do not disturb&amp;quot; is active&lt;br /&gt;
** enable notifications for myApps in the list of applications&lt;br /&gt;
* System -&amp;gt; Focus &lt;br /&gt;
** if a focus session is active and the &amp;quot;Do not disturb&amp;quot; is activated during a focus session, make sure that myApps is a priority application (see above)&lt;br /&gt;
&lt;br /&gt;
==== macOS Notifications ====&lt;br /&gt;
Notifications are the same as on Windows.&lt;br /&gt;
The difference is, that for macOS, notifications need to be allowed in the system settings.&lt;br /&gt;
Go to Notifications - myApps, select Banner and enable all check marks.&lt;br /&gt;
&lt;br /&gt;
=== Local phonebook access ===&lt;br /&gt;
&#039;&#039;&#039;Contact Search:&#039;&#039;&#039; The myApps platform services implement an &#039;&#039;API provider&#039;&#039; for the [http://sdk.innovaphone.com/web1/com.innovaphone.search/lib1_api_search.htm &#039;&#039;com.innovaphone.search&#039;&#039; API]]. They perform search capabilities on the OS&#039; local phone books which can be used by Apps like the &#039;&#039;phoneapp&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Apps would send a &#039;&#039;Search&#039;&#039; request to the API:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;*&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;4&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;Search&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;contact&amp;quot;,&amp;quot;search&amp;quot;:&amp;quot;john doe&amp;quot;},&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.search&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
Search results are delivered as &#039;&#039;SearchInfo&#039;&#039; messages:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiResult&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;3&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;@local-8125d22e37-519d-4056-bfe5-c52ef2ae8fabb0&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;client&amp;quot;:&amp;quot;@client-f62702dd86-be3f-47fc-b4bc-7a21627b75b2ea&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;SearchInfo&amp;quot;,&amp;quot;relevance&amp;quot;:2000,&amp;quot;adjust&amp;quot;:true,&amp;quot;type&amp;quot;:&amp;quot;contact&amp;quot;,&amp;quot;contact&amp;quot;:{&amp;quot;givenname&amp;quot;:&amp;quot;John&amp;quot;,&amp;quot;sn&amp;quot;:&amp;quot;Doe&amp;quot;,&amp;quot;company&amp;quot;:&amp;quot;ACME&amp;quot;,&amp;quot;position&amp;quot;:&amp;quot;Head of everything&amp;quot;,&amp;quot;telephonenumber&amp;quot;:[&amp;quot;11111&amp;quot;,&amp;quot;22222&amp;quot;],&amp;quot;homephone&amp;quot;:[&amp;quot;+4944444&amp;quot;,&amp;quot;33333&amp;quot;],&amp;quot;mobile&amp;quot;:[&amp;quot;+49 (123) 55555&amp;quot;]}},&amp;quot;api&amp;quot;:&amp;quot;com.innovaphone.search&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reverse Lookup:&#039;&#039;&#039; The myApps platform services implement an &#039;&#039;API provider&#039;&#039; for the [http://sdk.innovaphone.com/web1/com.innovaphone.phonelookup/lib1_api_phonelookup.htm &#039;&#039;com.innovaphone.phonelookup&#039;&#039; API]. They perform search capabilities on the OS&#039; local phone books which can be used by Apps like the &#039;&#039;phoneapp&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Apps would send a &#039;&#039;Lookup&#039;&#039; request to the API: &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;*&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;4&amp;quot;,&amp;quot;msg&amp;quot;:{ mt: &amp;quot;Lookup&amp;quot;, prefixIntl: &amp;quot;000&amp;quot;, prefixNtl: &amp;quot;00&amp;quot;, prefixExt:&amp;quot;0&amp;quot;, area: &amp;quot;7031&amp;quot;, country: &amp;quot;49&amp;quot;, lookup: &amp;quot;0004970311234567&amp;quot; },&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.lookup&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Search results are delivered as &#039;&#039;LookupInfo&#039;&#039; messages:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiResult&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;3&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;@local-8125d22e37-519d-4056-bfe5-c52ef2ae8fabb0&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;client&amp;quot;:&amp;quot;@client-f62702dd86-be3f-47fc-b4bc-7a21627b75b2ea&amp;quot;,&amp;quot;msg&amp;quot;:{mt: &amp;quot;LookupInfo&amp;quot;, dn: &amp;quot;Jake Blues&amp;quot;, contact: { telephonenumber: [&amp;quot;0004970311234567&amp;quot;], givenname: &amp;quot;Jake&amp;quot;, sn: &amp;quot;Blues&amp;quot;, company: &amp;quot;Blues Brothers&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Windows ====&lt;br /&gt;
On Windows, the search and lookup are performed in all of the user&#039;s Outlook contact folders.  As opposed to the search implemented in the &#039;&#039;Contacts&#039;&#039; and &#039;&#039;Users&#039;&#039; App, all items are returned which match any of the search words (i.e. searching for &#039;&#039;a b&#039;&#039; will return items matching either &#039;&#039;a&#039;&#039; or &#039;&#039;b&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
; searched properties : firstname, lastname&lt;br /&gt;
; returned properties : Following Outlook contact phone number properties are returned  (if available):&lt;br /&gt;
&lt;br /&gt;
:* OFFICE_TELEPHONE_NUMBER as &#039;&#039;telephonenumber&#039;&#039;&lt;br /&gt;
:* OFFICE2_TELEPHONE_NUMBER as &#039;&#039;telephonenumber&#039;&#039;&lt;br /&gt;
:* HOME_TELEPHONE_NUMBER as &#039;&#039;homephone&#039;&#039;&lt;br /&gt;
:* HOME2_TELEPHONE_NUMBER as &#039;&#039;homephone&#039;&#039;&lt;br /&gt;
:* MOBILE_TELEPHONE_NUMBER as &#039;&#039;mobile&#039;&#039;&lt;br /&gt;
:* BUSINESS_FAX_NUMBER as &#039;&#039;facsimiletelephonenumber&#039;&#039;&lt;br /&gt;
Note that contact information is cached in the search provider.  Updated contacts may therefore become effective after a while only.&lt;br /&gt;
Outlook search will create its own trace file &amp;lt;code&amp;gt;myAppsOutlookSearch-&amp;lt;/code&amp;gt;&#039;&#039;date-time&#039;&#039;&amp;lt;code&amp;gt;.txt&amp;lt;/code&amp;gt; in the standard trace directory.&lt;br /&gt;
&lt;br /&gt;
This search provider is always installed and can be disabled.  There is no need (nor possibility) to enable it in the &#039;&#039;Apps&#039;&#039; tab of the PBX&#039;s user object.  Also, no &#039;&#039;App&#039;&#039; object needs to be created for it.&lt;br /&gt;
&lt;br /&gt;
==== Android/iOS ====&lt;br /&gt;
The search and lookup are performed in the contacts.&lt;br /&gt;
&lt;br /&gt;
==== macOS ====&lt;br /&gt;
The search and lookup are performed in the contacts. If you wish to disable local contact lookup, go to system settings - Security &amp;amp; Privacy and disable the access to contacts for myapps.&lt;br /&gt;
=== Microsoft Office integration ===&lt;br /&gt;
&lt;br /&gt;
The myApps platform services has a &#039;&#039;office presence provider&#039;&#039; that can provide the user&#039;s presence state to Office applications.  See [[{{NAMESPACE}}:Concept_myApps_Office_Integration|myApps Office Integration]] for details.&lt;br /&gt;
&lt;br /&gt;
This feature is installed by default.  However, it can be disabled using the &#039;&#039;OFFICEPRESENCE&#039;&#039; MSI Parameter.  Also, a check-mark is available in the setup dialog.&lt;br /&gt;
&lt;br /&gt;
=== Call an external application for calls ===&lt;br /&gt;
&lt;br /&gt;
Phone Apps (such as the phoneapp or softphone) can initiate the start of an external application when a new call appears (either incoming or outgoing).  The actual spawning of the application is done by the myApps platform service.  Also, the application properties (such as e.g. the executable&#039;s path) is configured in the myApps platform services (see [[#UI elements|Advanced settings]] in the &#039;&#039;UI elements&#039;&#039; section below).&lt;br /&gt;
&lt;br /&gt;
A number of arguments can be passed to the application by substituting $-variables in the &#039;&#039;Parameter&#039;&#039; field:&lt;br /&gt;
&lt;br /&gt;
; $n : phone number as dialed (called party number for outgoing calls) or received (calling party number for incoming calls)&lt;br /&gt;
&lt;br /&gt;
; $N : called or calling party number in &#039;&#039;national&#039;&#039; format (e.g. 07031730090)&lt;br /&gt;
&lt;br /&gt;
; $I : called or calling party number in &#039;&#039;international&#039;&#039; format (e.g. +497031730090)&lt;br /&gt;
&lt;br /&gt;
: note that both $N and $I only work if $n includes both subscriber number and area code (e.g. 07031730090). Otherwise they are equal to $n&lt;br /&gt;
&lt;br /&gt;
; $d : display name of peer (if known)&lt;br /&gt;
&lt;br /&gt;
; $u : URI name of the peer (if available eg with a federation call)&lt;br /&gt;
&lt;br /&gt;
; $c : conference id&lt;br /&gt;
&lt;br /&gt;
: this is a globally unique ID for this call and may be used to relate the call to the &#039;&#039;guid&#039;&#039; found in the CallInfo structure in the [http://wiki.innovaphone.com/index.php?title=Reference10:SOAP_API#CallInfo SOAP-API] and [http://sdk.innovaphone.com/doc/appwebsocket/RCC.htm RCC-API ].  Also, corresponding [[Reference10:Call Detail Record CDR PBX|CDRs]] can be related using the &#039;&#039;event&#039;&#039; tag&#039;s &#039;&#039;conf&#039;&#039; attribute.&lt;br /&gt;
The start of an external application can be requested using the &#039;&#039;com.innovaphone.externalapps&#039;&#039; API.&lt;br /&gt;
&lt;br /&gt;
Some setup examples are [[Howto:Integrate External Apps in innovaphone UC clients|shown here]].&lt;br /&gt;
&lt;br /&gt;
=== Push ===&lt;br /&gt;
&lt;br /&gt;
Mobile operating systems usually inhibit network operation of apps which run in the background or are closed by the user.  This is done in order to reduce battery consumption.  Unfortunately, this also stops such apps to maintain a registration by regularly sending &#039;&#039;keep alive&#039;&#039; messages to a server (in our case to the PBX).  As a result, myApps will be disconnected from the PBX.   When the PBX determines that there is an event for the application which needs a response, it needs to wake up the app using a dedicated channel provided by the operating system.  This mechanism is know as &#039;&#039;push&#039;&#039;. When running on iOS or Android, myApps supports &#039;&#039;push&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;push&#039;&#039; to work, a [[{{NAMESPACE}}:PBX/Objects/Push|&#039;&#039;push object&#039;&#039;]] needs to be configured in the PBX .  Also, it needs to be enabled on the mobile phone for the myApps app.&lt;br /&gt;
This mechanism is quite similar in v12 and v13, so you can refer to [[{{NAMESPACE}}:Concept_Push_Notifications_for_iOS_and_Android|the concept for push notifications for iOS and Android]] for more details. &lt;br /&gt;
&lt;br /&gt;
Also, helpful hints can be found in [[Howto:Troubleshoot v13 Push with myApps for Android and iOS]].&lt;br /&gt;
&lt;br /&gt;
=== App Proxy ===&lt;br /&gt;
&lt;br /&gt;
myApps runs further &#039;&#039;Apps&#039;&#039; (such as e.g. the &#039;&#039;phoneapp&#039;&#039;) as a web page in an IFRAME of the browser myApps is running in.  The App&#039;s page code is loaded either from the PBX or from an &#039;&#039;application platform&#039;&#039; (AP).   This however would mean that the App&#039;s IFRAME would remain empty (a dead white screen) when the PBX or AP is not available. To make sure the App can start-up anyway, the myApps platform services feature the so-called &#039;&#039;App Proxy&#039;&#039;.  This is a caching proxy that caches all the App code so it is available even in case of network failure. When myApps runs in the context of the platform services, Apps are therefore not loaded from the App source directly, but from the local App proxy. &lt;br /&gt;
&lt;br /&gt;
The cached files are stored in the PCs local file system in the &amp;lt;code&amp;gt;%LOCALAPPDATA%\innovaphone\myApps\appproxy&amp;lt;/path&amp;gt;&amp;lt;/code&amp;gt;.  There is no configuration required.  However, if myApps seems to run with outdated or corrupt cached copies of the App, you can safely delete the entire directory.&lt;br /&gt;
&lt;br /&gt;
=== Auto update ===&lt;br /&gt;
&lt;br /&gt;
On Windows and on macOS, the myApps platform services can auto-update themselves to a common version.  This is controlled by the [[{{NAMESPACE}}:PBX/Config/myApps#Launcher_Software_Update | &#039;&#039;Launcher Software Update&#039;&#039;]] settings under &#039;&#039;PBX/Config/myApps&#039;&#039; in the PBX. &lt;br /&gt;
&lt;br /&gt;
When myApps is started or the user logs in or myApps needs to re-connect to the PBX, the platform services will use the [http://sdk.innovaphone.com/web1/com.innovaphone.client/lib1_api_client.htm com.innovaphone.client API] to learn the desired version (&#039;&#039;launcherUpdateBuild&#039;&#039;, which is part of the API&#039;s &#039;&#039;model&#039;&#039;). If this differs from the current version, the platform services will try to download the respective new version. &lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;mt&amp;quot;: &amp;quot;ApiUpdate&amp;quot;,&lt;br /&gt;
    &amp;quot;apis&amp;quot;: {&lt;br /&gt;
        &amp;quot;com.innovaphone.client&amp;quot;: {&lt;br /&gt;
            &amp;quot;@client&amp;quot;: {&lt;br /&gt;
                &amp;quot;title&amp;quot;: &amp;quot;innovaphone myApps&amp;quot;,&lt;br /&gt;
                &amp;quot;model&amp;quot;: {&lt;br /&gt;
                    &amp;quot;launcher&amp;quot;: true,&lt;br /&gt;
                    &amp;quot;launcherUpdateBuild&amp;quot;: &amp;quot;134906&amp;quot;,&lt;br /&gt;
                    &amp;quot;appStoreUrl&amp;quot;: &amp;quot;http://store.innovaphone.com/release/download/&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The installation of the downloaded version is done by the &#039;&#039;innovaphonemyAppsUpdateService&#039;&#039;. This service is installed and enabled during the initial installation of the myApps platform services.  To disable auto-update, either leave the &#039;&#039;Launcher Software Update&#039;&#039; settings empty or set the service&#039;s start mode to &#039;&#039;disabled&#039;&#039; in the Windows &#039;&#039;services control panel&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note that on Windows the update service does not work on terminal servers. Administrators must do myApps base services updates using standard windows mechanisms.&lt;br /&gt;
&lt;br /&gt;
Note that on macOS if myApps has been installed from the Apple Store it is assumed that auto update from the PBX is not desired and disabled therefore.&lt;br /&gt;
&lt;br /&gt;
On Android/iOS/macOS updates can be downloaded from the respective app store.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;Devices&#039;&#039; app can not update software installed on Windows PCs directly. However, when the PBX is updated using an &#039;&#039;update job&#039;&#039; in the &#039;&#039;Devices&#039;&#039; App, the &#039;&#039;Launcher Software Update&#039;&#039; settings will be updated accordingly and hence the myApps base services will ultimately also be updated to the same version.&lt;br /&gt;
&lt;br /&gt;
==== Auto update flow on Windows ====&lt;br /&gt;
&lt;br /&gt;
* On start of myApps, myApps checks if an update is available and ready for installation&lt;br /&gt;
** if yes, the update is installed directly, without user interaction (a popup is shown during the installation)&lt;br /&gt;
** if not, myApps starts&lt;br /&gt;
* if an update is available while myApps is already running, an update notification will be shown which let&#039;s the user choose to install the update now or later (the notification will then popup again after one hour)&lt;br /&gt;
&lt;br /&gt;
==UI elements ==&lt;br /&gt;
There are a few user interfaces provided by the platform services:&lt;br /&gt;
===tray-icon (Windows only) ===&lt;br /&gt;
::[[Image:myapps-tray.png|myapps-tray.png/|myapps-tray.png/]]&lt;br /&gt;
:Allows to&lt;br /&gt;
:* terminate myApps&lt;br /&gt;
:* toggle the &#039;&#039;autostart&#039;&#039; state&lt;br /&gt;
:* toggle the &#039;&#039;show in task bar&#039;&#039; state&lt;br /&gt;
:* open the trace folder&lt;br /&gt;
:&lt;br /&gt;
=== PBX connect form===&lt;br /&gt;
:: [[Image:myapps-connect.png|myapps-connect.png/|myapps-connect.png/]]&lt;br /&gt;
: Allows the user to specify the connect data for the PBX (i.e. IP address or DNS name)&lt;br /&gt;
:&lt;br /&gt;
=== Advanced settings===&lt;br /&gt;
::[[Image:myapps-settings0.png|myapps-settings0.png/|myapps-settings0.png/]]&lt;br /&gt;
::[[Image:myapps-settings.png|myapps-settings.png/|myapps-settings.png/]] [[Image:myapps-settings2.png|myapps-settings2.png/|myapps-settings2.png/]] [[Image:myapps-settings3.png|myapps-settings3.png/|myapps-settings3.png/]]&lt;br /&gt;
&lt;br /&gt;
: Allows to modify various platform dependant settings (such as e.g. the hotkey selection on Windows)&lt;br /&gt;
&lt;br /&gt;
== Interfaces ==&lt;br /&gt;
=== Provided APIs ===&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.search/lib1_api_search.htm com.innovaphone.search] : access to local phone book entries by the [[#Local phonebook access|Local phonebook access]] component.&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.launcher/com.innovaphone.launcher.htm com.innovaphone.launcher] : display of OS specific user notifications and receipt of related user actions&lt;br /&gt;
; com.innovaphone.notificationhandler : reports back click on a notification.&lt;br /&gt;
; com.innovaphone.externalapps : to start external applications, see [[#Call an external application for calls|Call an external application for calls]]  above&lt;br /&gt;
&lt;br /&gt;
=== Used APIs ===&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm com.innovaphone.phone] : used to initiate new or manipulate existing calls by the [[#Hot keys|Hot keys]] and [[#URL handler|URL handler]] components.&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.chat/com.innovaphone.chat.htm com.innovaphone.chat] : used to start a new chat by the [[#URL handler|URL handler]] component.&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.client/lib1_api_client.htm com.innovaphone.client] : the model is used to learn the update settings, see [[#Auto update|Auto update]] above&lt;br /&gt;
&lt;br /&gt;
=== Protocols ===&lt;br /&gt;
&lt;br /&gt;
; [https://sdk.innovaphone.com/doc/launcher/Media.htm Media Protocol] : used by apps to allocate RTP channels, see [[#RTP service for audio.2C video and data|RTP service for audio, video and data]] above&lt;br /&gt;
&lt;br /&gt;
== Related App Services ==&lt;br /&gt;
&lt;br /&gt;
none&lt;br /&gt;
&lt;br /&gt;
== Known limitations ==&lt;br /&gt;
; Incoming call as banner on myApps for iOS : Since iOS 14 the iOS CallKit presents incoming calls as a banner leaving the original green answer button of myApps visible. Use only the blue button of the banner to accept the call or change iPhone Settings, App &amp;quot;Phone&amp;quot;, &amp;quot;Incoming Calls&amp;quot; to &amp;quot;Full Screen&amp;quot; to hide the myApps user interface again during call answering.&lt;br /&gt;
&lt;br /&gt;
; Call answer in speakerphone mode even with active Bluetooth headset on myApps for iOS : This causes unwanted speakerphone operation if the smartphone is used with a Bluetooth car audio system. The behaviour can be changed by selecting &#039;&#039;Bluetooth Headset&#039;&#039; in this setting:&lt;br /&gt;
:&#039;&#039;iOS Settings-&amp;gt;Accessibility-&amp;gt;Touch-&amp;gt;Call Audio Routing: Automatic / Bluetooth Headset / Speaker&#039;&#039;&lt;br /&gt;
:&#039;&#039;iOS Einstellungen-&amp;gt;Bedienungshilfen-&amp;gt;Tippen-&amp;gt;Anrufaudioausgabe: Automatisch / Bluetooth-Headset / Lautsprecher&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; Windows Server 2016 (Windows 10 Build 1607) : windows just shows the first notification. Further notifications aren&#039;t displayed until the previous ones are removed from the notification center. Current windows builds do not show this behaviour anymore.&lt;br /&gt;
&lt;br /&gt;
; Problems on Mac computers with Yealink USB headsets&lt;br /&gt;
: we have received reports that myApps quits unexpectedly on some Mac computers when a Yealink headset is plugged in.  Unfortunately, we could not find out the cause yet.  If you use Yealink USB headsets and have a similar issue, please open a support ticket and send myApps traces.&lt;br /&gt;
&lt;br /&gt;
; Poly / Plantronics headset buttons only functional if myApps is started with Rosetta&lt;br /&gt;
: myApps macOS supports Apple M1/M2 hardware natively. However, the Poly / Plantronics headset SDK is only available for Intel platform and thus myApps needs to be started via Apple&#039;s Intel emulator Rosetta if a Poly / Plantronics headset is used. This is done with right-click on the myApps executable, &#039;&#039;Information&#039;&#039;, &#039;&#039;Open with Rosetta&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
; Windows surface devices may not work correctly&lt;br /&gt;
: Chromium does not get touch keyboard events. USB Keyboards may not be recognized either.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services are installed on Windows using the .msi file found in the &#039;&#039;myApps Windows&#039;&#039; package from [https://store.innovaphone.com/release/download.htm store.innovaphone.com].&lt;br /&gt;
&lt;br /&gt;
myApps can update itself automatically, see [[#Auto update|Auto update]] above.&lt;br /&gt;
&lt;br /&gt;
=== MSI Parameters and install options ===&lt;br /&gt;
&lt;br /&gt;
The MSI installer of myApps for Windows supports the following parameters and can be edited with [https://docs.microsoft.com/en-us/windows/win32/msi/orca-exe Microsoft Orca]. You can add your parameters in the table &#039;&#039;property&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
; SERVER (REG_SZ): the PBX&#039;s server address (without protocol like https://)&lt;br /&gt;
; OFFICEPRESENCE (REG_DWORD): &#039;&#039;&#039;false&#039;&#039;&#039; to disable presence integration in Microsoft Office&lt;br /&gt;
: this is also available as a check-mark when running the install manually&lt;br /&gt;
&lt;br /&gt;
; DISABLEHEADSETS (REG_DWORD): &#039;&#039;&#039;true&#039;&#039;&#039; to disable headsets support, see [[#Device handling|Device handling]] above&lt;br /&gt;
&lt;br /&gt;
; EXTERNALAPPS (REG_SZ): pre-define external applications, see [[#Call an external application for calls|Call an external application for calls]] above&lt;br /&gt;
: e.g. &amp;lt;code&amp;gt;&amp;quot;{&amp;quot;&amp;quot;externalApps&amp;quot;&amp;quot;:[{&amp;quot;&amp;quot;id&amp;quot;&amp;quot;:0,&amp;quot;&amp;quot;name&amp;quot;&amp;quot;:&amp;quot;&amp;quot;Wireshark&amp;quot;&amp;quot;,&amp;quot;&amp;quot;path&amp;quot;&amp;quot;:&amp;quot;&amp;quot;C:\\Program Files\\Wireshark\\Wireshark.exe&amp;quot;&amp;quot;,&amp;quot;&amp;quot;param&amp;quot;&amp;quot;:&amp;quot;&amp;quot;test $I&amp;quot;&amp;quot;}]}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; FORCERESTART (REG_DWORD): &#039;&#039;&#039;true&#039;&#039;&#039; (or any string ...) kills myApps during the installation and restarts it for the currently logged in user, if it was running&lt;br /&gt;
&lt;br /&gt;
; DISABLELOCALHOST (REG_DWORD): &#039;&#039;&#039;true&#039;&#039;&#039; to disable use of &#039;&#039;&#039;localhost&#039;&#039;&#039; string to access the local webserver. Use &#039;&#039;&#039;127.0.0.1&#039;&#039;&#039; instead&lt;br /&gt;
&lt;br /&gt;
; EXCLUDEINTERFACES (REG_SZ): some VPN interfaces are not detected by Windows as IF_TYPE_PPP or IF_TYPE_TUNNEL and therefore the &#039;&#039;&#039;media outside VPN&#039;&#039;&#039; setting is not taking effect. With this option interfaces can be pre-defined that will not be used for media. Interfaces must be comma separated&lt;br /&gt;
: e.g. &amp;lt;code&amp;gt;EXCLUDEINTERFACES=&amp;quot;172,192.168,10.10&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Current settings are stored in the registry at &amp;lt;code&amp;gt;Computer\HKEY_CURRENT_USER\Software\innovaphone\myApps&amp;lt;/code&amp;gt; or at &amp;lt;code&amp;gt;Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\innovaphone\myApps&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Boolean values like OfficePresence are stored in registry entries with type REG_DWORD and values 1 or 0. 0 disables the setting and 1 enables it.&lt;br /&gt;
&lt;br /&gt;
== iOS ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services are installed on iOS by loading &#039;&#039;innovaphone myApps&#039;&#039; from the &#039;&#039;App Store&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Configuration via MDM ===&lt;br /&gt;
&lt;br /&gt;
the PBX&#039;s server URL can be pre-configured by specifying this dictionary in the MDM&lt;br /&gt;
 &amp;lt;plist&amp;gt;&lt;br /&gt;
   &amp;lt;dict&amp;gt;&lt;br /&gt;
     &amp;lt;key&amp;gt;server&amp;lt;/key&amp;gt;&lt;br /&gt;
     &amp;lt;string&amp;gt;pbx.example.com&amp;lt;/string&amp;gt;&lt;br /&gt;
   &amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt;/plist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== macOS ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services might be installed directly from the Apple store. An installer package &amp;lt;code&amp;gt;myapps.pkg&amp;lt;/code&amp;gt; and a disk image &amp;lt;code&amp;gt;myapps.dmg&amp;lt;/code&amp;gt; is also available from the innovaphone app store. Install &amp;lt;code&amp;gt;myapps.pkg&amp;lt;/code&amp;gt; by double-click on the file and follow the instructions of the installer. myApps becomes available in the Applications folder and can be opened by double-click. Or download and open &amp;lt;code&amp;gt;myapps.dmg&amp;lt;/code&amp;gt; and double klick myApps. If desired integrate it into the app dock by right click, &#039;&#039;Options, Keep in the dock&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If installed from the innovaphone app store, myApps can update itself automatically, see [[#Auto update|Auto update]] above.&lt;br /&gt;
&lt;br /&gt;
If installed from the Apple store, macOS notifies about updates on the Apple store. myApps [[#Auto update|Auto update]] is disabled then.&lt;br /&gt;
&lt;br /&gt;
If a clean-install of the client is necessary, the folder &amp;quot;/Users/username/Library/Containers/myapps&amp;quot; needs to be deleted. To be on the safe side also delete it from the trash bin.&lt;br /&gt;
&lt;br /&gt;
=== Configuration via MDM ===&lt;br /&gt;
&lt;br /&gt;
the PBX&#039;s server URL can be pre-configured by specifying this dictionary in the MDM&lt;br /&gt;
 &amp;lt;plist&amp;gt;&lt;br /&gt;
   &amp;lt;dict&amp;gt;&lt;br /&gt;
     &amp;lt;key&amp;gt;server&amp;lt;/key&amp;gt;&lt;br /&gt;
     &amp;lt;string&amp;gt;pbx.example.com&amp;lt;/string&amp;gt;&lt;br /&gt;
   &amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt;/plist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preferences ===&lt;br /&gt;
&lt;br /&gt;
macOS supports preference settings that can be set via a shell command or via Mac remote management&lt;br /&gt;
&lt;br /&gt;
 defaults write com.innovaphone.client-ios-14r1 server &amp;quot;PBX-server-URL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The following parameters and can be set through this method:&lt;br /&gt;
&lt;br /&gt;
; server: the PBX&#039;s server URL&lt;br /&gt;
&lt;br /&gt;
=== Setting myApps as Default App for SIP-URLs ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|defaults write com.apple.LaunchServices/com.apple.launchservices.secure LSHandlers -array-add &#039;{&lt;br /&gt;
   LSHandlerURLScheme = sip;&lt;br /&gt;
   LSHandlerRoleAll = &amp;quot;&amp;lt;CFBundleIdentifier&amp;gt;&amp;quot;;&lt;br /&gt;
}&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To find the “CFBundleIdentifier”, proceed as follows:&lt;br /&gt;
* In the Finder under “Applications”, search for the desired myApps client that you want to set as the default app.&lt;br /&gt;
* Right-click on “Show package contents” -&amp;gt; you will find the “CFBundleIdentifier” in the Info.plist file.&lt;br /&gt;
&lt;br /&gt;
A restart of the MAC is required.&lt;br /&gt;
&lt;br /&gt;
=== Using Sennheiser headsets ===&lt;br /&gt;
If you use Sennheiser headsets, you should also install the then-current &amp;lt;code&amp;gt;DSEA_SDK_v&amp;lt;/code&amp;gt;&#039;&#039;version&#039;&#039;&amp;lt;code&amp;gt;.pkg&amp;lt;/code&amp;gt; package, after you installed the myApps client.  Without that, audio will still work, but not the controls on the headset.  You will need to keep that up-to-date yourself, as it is not updated by myApps&#039;s auto-update function.&lt;br /&gt;
&lt;br /&gt;
== Android ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services are installed on Android by loading &#039;&#039;innovaphone myApps&#039;&#039; from the &#039;&#039;Play Store&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Configuration via MDM ===&lt;br /&gt;
&lt;br /&gt;
the PBX&#039;s server URL can be pre-configured by specifying a property &amp;quot;server&amp;quot; with string value &amp;quot;pbx.example.com&amp;quot; in the MDM.&lt;br /&gt;
&lt;br /&gt;
== IP270 ==&lt;br /&gt;
For configuration instructions, refer to the [[Reference16r1:Concept IP270&amp;amp;action=edit&amp;amp;redlink=1|IP270 concept article]].&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
&lt;br /&gt;
== Server configuration ==&lt;br /&gt;
When opening myApps for the first time, the user is prompted for the Server. Usually only the hostname (DNS host name or IP address) needs to be configured.&lt;br /&gt;
&lt;br /&gt;
But there are more options for special PBX configurations.&lt;br /&gt;
&lt;br /&gt;
; Non-standard HTTPS port&lt;br /&gt;
: If the PBX uses a non-standard HTTPS port, it must be appended to the host name separated by a colon (&amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;).&lt;br /&gt;
: Example: &amp;lt;code&amp;gt;pbx.example.com:4444&amp;lt;/code&amp;gt; (expands to &amp;lt;code&amp;gt;https://pbx.example.com:4444/PBX0/APPCLIENT/appclient.htm&amp;lt;/code&amp;gt;)&lt;br /&gt;
; DynPBX module name&lt;br /&gt;
: If the PBX is a DynPBX, the module id must be appended to PBX0 separated - (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;).&lt;br /&gt;
: Example: &amp;lt;code&amp;gt;pbx.example.com/PBX0-1&amp;lt;/code&amp;gt; (expands to &amp;lt;code&amp;gt;https://pbx.example.com/PBX0-1/APPCLIENT/appclient.htm&amp;lt;/code&amp;gt;)&lt;br /&gt;
; Softphone physical location&lt;br /&gt;
: If user defined physical location shall be used for softphone, you can append it using a parameter &amp;lt;code&amp;gt;#phys=&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Example: &amp;lt;code&amp;gt;pbx.example.com#phys=slave&amp;lt;/code&amp;gt; (expands to &amp;lt;code&amp;gt;https://pbx.example.com/PBX0/APPCLIENT/appclient.htm#phys=slave&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Example 1: PBX pbx.example.com with standard configuration&lt;br /&gt;
 pbx.example.com&lt;br /&gt;
&lt;br /&gt;
Example 2: PBX slave.example with DynPBX module ID 1, HTTPS port 4444 and physical location master&lt;br /&gt;
 slave.example.com:4444/PBX0-1#phys=master&lt;br /&gt;
&lt;br /&gt;
=== HTTP proxy support ===&lt;br /&gt;
&lt;br /&gt;
myApps platform services do support operation via HTTP proxy now. If one or more proxies have been configured in the network settings of the operating system for the active network connection, HTTP CONNECT tunnels are established.&lt;br /&gt;
&lt;br /&gt;
On Windows user name and password can be specified for the tunnel servers as generic credentials in the credentials manager (Anmeldeinformationsverwaltung). The name of the credentials must be the tunnel server hostname.&lt;br /&gt;
&lt;br /&gt;
On Android user name and password can be specified through Android &#039;&#039;Settings, Accounts&#039;&#039; by adding a myApps &#039;&#039;HTTP Proxy Credentials&#039;&#039; account. The name of the account must be the tunnel server hostname.&lt;br /&gt;
&lt;br /&gt;
== Platform specific settings ==&lt;br /&gt;
When myApps runs under the myApps platform services, it will show various platform specific settings as part of its &#039;&#039;burger menu&#039;&#039;, so the user can set them.  See &#039;&#039;Advanced settings&#039;&#039; in [[#UI elements|UI elements]] above.&lt;br /&gt;
&lt;br /&gt;
Some options can also be set globally for all myApps clients in the PBX&#039;s [[{{NAMESPACE}}:PBX/Config/myApps#Client_Settings|PBX/Config/myApps &#039;&#039;Client Settings&#039;&#039;]]&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Option&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Description&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Where to set&lt;br /&gt;
&lt;br /&gt;
!&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot;| Availability&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| || || User menu || PBX &#039;&#039;Client Settings&#039;&#039; || Windows || iOS || Android || macOS&lt;br /&gt;
|IP270&amp;lt;ref&amp;gt;myApps-IP270 offers device specific settings explained in [[Reference16r1:Concept IP270&amp;amp;action=edit&amp;amp;redlink=1|IP270 concept article]]&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Autostart || Launch myApps on login || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Appear offline after || controls after which idle time a user is considered &#039;&#039;inactive&#039;&#039;. See [[#User activity|User activity]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Hotkeys || Hotkeys for call dial, accept, reject. See [[#Hot keys|Hot keys]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Docking || Docking mode (left, right, none). See [[#???|??]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Desktop notifications|| Turn on/off platform notifications. See [[#Notifications|  Notifications]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| VPN || Disable VPN address for ICE candidate selection. See [[#RTP ports| RTP ports]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Show in taskbar|| Show myApps in the taskbar in addition to it&#039;s tray icon.  || &amp;amp;#10004; ||&amp;amp;#10007; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Log flags || turn on/off certain trace levels. See [[#Troubleshooting|Troubleshooting]] below.  || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10004;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| External applications || define the applications available for Apps to be started. See [[#Call an external application for calls|Call an external application for calls]] above.  || &amp;amp;#10004; ||&amp;amp;#10007; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Ring in headset || send ring tone for incoming to headset instead of loudspeaker.  || &amp;amp;#10004; ||&amp;amp;#10007; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start parameters for Windows ==&lt;br /&gt;
&lt;br /&gt;
On Windows, it is not possible to pass start parameters from the [https://www.chromium.org/developers Chromium documentation] to the myApps process.&lt;br /&gt;
&lt;br /&gt;
== OS Settings for Windows ==&lt;br /&gt;
Windows settings can influence the display of &#039;&#039;Desktop notifications&#039;&#039;. See [https://support.microsoft.com/en-us/help/4028678/windows-10-change-notification-settings Change notification settings in Windows 10/11] for details.&lt;br /&gt;
&lt;br /&gt;
=== Windows 11 ===&lt;br /&gt;
&lt;br /&gt;
* Windows 11 has a feature &amp;quot;do not disturb&amp;quot;. This hides notifications if enabled.&lt;br /&gt;
* Windows 11 has a feature &amp;quot;focus&amp;quot;. This enables &amp;quot;do not disturb&amp;quot; and thus hides notifications too.&lt;br /&gt;
* Windows 11 has priority settings for notifications. Ensure that VoIP notifications for calls are allowed any maybe also include myApps as an App which is allowed to show notifications.&lt;br /&gt;
&lt;br /&gt;
== OS settings for Android ==&lt;br /&gt;
; Events : The appearance of notifications can be controlled here.&lt;br /&gt;
&lt;br /&gt;
; Call accounts : For proper incoming call signaling, the call account &#039;&#039;myApps&#039;&#039; needs to be enabled. Note that on Samsung smartphones the call account switch likely toggles back and a few tries may need to be done until it persists. Please double-check the state.&lt;br /&gt;
&lt;br /&gt;
; Preferred Calling Account : Choose which calling account (myApps/SIM/..) should be used for outgoing calls initiated from within the native phone app / phone book.&lt;br /&gt;
&lt;br /&gt;
; Background data, unlimited data usage : Grant background data use to enable &#039;&#039;myApps&#039;&#039; to connect to the PBX immediately on an incoming call.&lt;br /&gt;
&lt;br /&gt;
; Overlaying : This setting is not needed if call account &#039;&#039;myApps&#039;&#039; has been enabled. Should there be a reason for not enabling call account &#039;&#039;myApps&#039;&#039;, the permission for overlaying needs to be granted on Android 10 or higher for proper call signaling.&lt;br /&gt;
&lt;br /&gt;
Note: If no SIM card is installed some Android smartphones exhibit a problem dialing from the smartphone contacts. The contacts app shows a choice &#039;&#039;Select SIM card for this call&#039;&#039; but all possible dialers are greyed out. In this case make myApps the default phone app in Android settings &#039;&#039;Apps, Default apps, Telephony&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== OS settings for iOS ==&lt;br /&gt;
; Notifications : The appearance of notifications can be controlled in iOS &#039;&#039;Settings, myApps&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== OS settings for macOS ==&lt;br /&gt;
&lt;br /&gt;
; Notifications : The appearance of notifications can be controlled in macOS &#039;&#039;Preferences, Notifications, myApps&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
myApps platform services can write various traces for debugging.  Trace can be turned on and off selectively in the [[#Advanced settings|Advanced settings]].&lt;br /&gt;
&lt;br /&gt;
The following trace flags can be set:&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;Recommended trace options are: &#039;&#039;&#039;App, Browser, ICE, TURN, Signaling and Audio&#039;&#039;&#039;. Please do not activate other flags unless innovaphone support says otherwise&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!style=&amp;quot;text-align: left; font-weight: bold&amp;quot; |  Abbreviation&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align: left; font-weight: bold&amp;quot; |code&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| App||0x000000001|| logs from the App Service itself&lt;br /&gt;
|-&lt;br /&gt;
| DNS||0x000000008|| logs DNS requests and results&lt;br /&gt;
|-&lt;br /&gt;
| HTTP client||0x000000080|| http client logs&lt;br /&gt;
|-&lt;br /&gt;
| TLS||0x000000400|| TLS logs&lt;br /&gt;
|-&lt;br /&gt;
| TCP||0x000000800|| TCP logs&lt;br /&gt;
|-&lt;br /&gt;
| LDS||0x000001000|| local domain sockets&lt;br /&gt;
|-&lt;br /&gt;
| WebSocket client||0x000004000|| logs outgoing websocket connections&lt;br /&gt;
|-&lt;br /&gt;
| App WebSocket||0x000008000|| logs app websocket connections (e.g. from PBX objects to an App Service or from the UI to the App Service)&lt;br /&gt;
|-&lt;br /&gt;
| UDP||0x000200000|| UDP logs&lt;br /&gt;
|-&lt;br /&gt;
| DTLS||0x000400000|| logs DTLS handshake and messages&lt;br /&gt;
|-&lt;br /&gt;
| Media||0x000800000|| logs media events&lt;br /&gt;
|-&lt;br /&gt;
| Media channel||0x001000000|| logs RTP/SCTP media connections&lt;br /&gt;
|-&lt;br /&gt;
| ICE||0x002000000|| logs ICE messages between peers&lt;br /&gt;
|-&lt;br /&gt;
| TURN||0x004000000|| logs TURN messages between peers&lt;br /&gt;
|-&lt;br /&gt;
| AppSharing||0x008000000|| logs AppSharing connection&lt;br /&gt;
|-&lt;br /&gt;
| Audio||0x010000000|| logs Audio connection and headset events&lt;br /&gt;
|-&lt;br /&gt;
| Video||0x020000000|| logs video connection and webcam events&lt;br /&gt;
|-&lt;br /&gt;
| Browser||0x040000000|| logs Chromium events&lt;br /&gt;
|-&lt;br /&gt;
| AppProxy||0x080000000|| logs requests which are proxied between the local webserver and the remote server&lt;br /&gt;
|-&lt;br /&gt;
| Webserver ||0x200000000|| enables webserver specific logs&lt;br /&gt;
|-&lt;br /&gt;
| Browser Console ||0x400000000|| logs browser console events&lt;br /&gt;
|-&lt;br /&gt;
| Signaling||0x800000000|| enables logs in the signaling module for debugging calls&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;code&#039;&#039; can be or&#039;ed and used as value for the &#039;&#039;Log flags&#039;&#039; field in [[{{NAMESPACE}}:PBX/Config/myApps#Client_Settings|PBX/Config/myApps/Client Settings]].&lt;br /&gt;
&lt;br /&gt;
; Windows :On Windows, traces are written to the &amp;lt;code&amp;gt;%LOCALAPPDATA%\innovaphone\myApps&amp;lt;/code&amp;gt; directory. If you start myApps with --log-size as parameter, you can define the maximum size of a log file (e.g. --log-size=100000000 would be 100MB for each file)&lt;br /&gt;
&lt;br /&gt;
:* myApps-&#039;&#039;date-time&#039;&#039;.txt : main log file for the platform services&lt;br /&gt;
&lt;br /&gt;
:* myAppsOutlookSearch-&#039;&#039;date-time&#039;&#039;.txt : log file for the Outlook phone book access&lt;br /&gt;
&lt;br /&gt;
:* myAppsHookController-&#039;&#039;date-time&#039;&#039;.txt : log file for the hot-key interceptor (see [[#Hot keys|Hot keys]])&lt;br /&gt;
&lt;br /&gt;
; :myApps update installation traces are written to the &amp;lt;code&amp;gt;%windir%\temp\&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
:* myAppsInstall.txt: MSI installation file&lt;br /&gt;
&lt;br /&gt;
; :myApps update service traces are written to the &amp;lt;code&amp;gt;%ProgramData%\innovaphone\myAppsUpdateService&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
:* myAppsUpdateService-&#039;&#039;date-time&#039;&#039;.txt: myApps update service traces&lt;br /&gt;
&lt;br /&gt;
;Android : traces can be sent by e-mail.&lt;br /&gt;
: also, an Android device might also be connected to a PC via an USB cable to get the traces. The files can be found in &amp;lt;code&amp;gt;Android/data/com.innovaphone.clientandroid/files&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; iOS : traces can be sent by e-mail.&lt;br /&gt;
&lt;br /&gt;
; macOS : traces can be sent by e-mail.&lt;br /&gt;
: also, the files can be found in &amp;lt;code&amp;gt;~/Library/Containers/com.innovaphone.client-ios/Data/Documents/&amp;lt;/code&amp;gt;. Press &#039;&#039;Alt+N&#039;&#039; followed by space to get tilde &#039;&#039;~&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
; IP270 : Refer to the [[Reference16r1:Concept IP270&amp;amp;action=edit&amp;amp;redlink=1#Troubleshooting|IP270 concept article section troubleshooting]].&lt;br /&gt;
&lt;br /&gt;
= Known Problems =&lt;br /&gt;
[[:Category:Problem myApps platform services|Known Problems]]&lt;br /&gt;
&lt;br /&gt;
= Related Articles =&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myApps]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myApps_Redundancy|Concept myApps Redundancy]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myApps_Office_Integration|Concept myApps Office Integration]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myAPPs_Search_in_local-Outlook_Contacts|Concept myAPPs Search in local Outlook Contacts]]&lt;br /&gt;
* [[{{NAMESPACE}}:Call_Detail_Record_CDR_PBX|Call Detail Records]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept Push Notifications for myPBX iOS and Android|Concept Push Notifications for myPBX iOS and Android]]&lt;br /&gt;
* [[Howto:Troubleshoot v13 Push with myApps for Android and iOS]]&lt;br /&gt;
* [[{{NAMESPACE}}:PBX/Config/myApps|Reference16r1:PBX/Config/myApps]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_IP270|IP270 concept article]]&lt;br /&gt;
[[Category:Concept myApps platform services]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_myApps_platform_services&amp;diff=78880</id>
		<title>Reference16r1:Concept myApps platform services</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_myApps_platform_services&amp;diff=78880"/>
		<updated>2026-02-10T12:34:07Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* myApps for Android */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps]]&lt;br /&gt;
&lt;br /&gt;
myApps platform services provide various operating system specific services which can be used by other &#039;&#039;Apps&#039;&#039; running in the [[{{NAMESPACE}}:Concept myApps|myApps client]]. Those services typically are not available in the browser&#039;s JavaScript environment and hence must be implemented in native platform code. Therefore, the platform services are installed as native executable on the respective platform.&lt;br /&gt;
&lt;br /&gt;
When myApps is started in a web browser (and hence has no access to the platform services), some Apps will use [https://en.wikipedia.org/wiki/WebRTC WebRTC] services implemented by the browser instead.  For ease of reference, features available in this scenario are also described here.&lt;br /&gt;
&lt;br /&gt;
On windows, the platform services also come with their own web browser in which the myApps web App will be started then.  This browser is based on google&#039;s [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium] open source software.&lt;br /&gt;
= Applies To =&lt;br /&gt;
&lt;br /&gt;
* [[{{NAMESPACE}}:Concept myApps|myApps]]&lt;br /&gt;
* myApps for Windows&lt;br /&gt;
* myApps for macOS&lt;br /&gt;
* myApps for iOS&lt;br /&gt;
* myApps for Android&lt;br /&gt;
* myApps Web App (WebRTC)&lt;br /&gt;
* myApps for IP270&lt;br /&gt;
version 16r1&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
Not all features are available or required on all platforms.&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot;| Availability&lt;br /&gt;
|-&lt;br /&gt;
| || || Windows || iOS || Android || macOS || Browser&amp;lt;ref&amp;gt;This refers to the myApps web application running in a browser with no platform services available&amp;lt;/ref&amp;gt;&lt;br /&gt;
|IP270&lt;br /&gt;
|-&lt;br /&gt;
| [[#Device handling|Audio Devices]] || manage local audio devices to record and playback audio conversations || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; (audio available but devices managed by web browser) || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Video || manage local displays and cameras to capture and render video live stream || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; (video available but devices managed by web browser) || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Ringer || manage local ringing device || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Application sharing|Application sharing]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; presenter || share an application || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; consumer  || view an application shared by the peer || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Hot keys|Hot keys]] || capture key presses for quick invocation of phone apps (e.g. dial selected number) || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#URL Handler|tel: and sip: URI handler]] || intercept clicks on tel: and sip: links in web sites to invoke phone apps || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#User activity|User activity]] || set presence state according to user activity ||  &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004;&amp;lt;ref&amp;gt;limited, see [[#User activity|User activity]] below&amp;lt;/ref&amp;gt; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Docking || myApps can be docked persistently to the right or left edge of your screens ||  &amp;amp;#10004;  || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Multi-windowing || Apps can be launched in separate windows||  &amp;amp;#10004;  || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Recording|Recording]] || Calls can be recorded to recording app||  &amp;amp;#10004;  || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Notifications|Notifications]] || ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; display notifications || display notifications with OS standard mechanism ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; push notifications || receive push notifications while myApps is not running  ||  &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&amp;lt;ref&amp;gt;The browser needs to be running in order to receive push notifications.&amp;lt;/ref&amp;gt; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; chat and apps || display notifications for chat and other apps  ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; calls || display notifications for incoming calls  ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&amp;lt;ref&amp;gt;Call notifications are only displayed locally while the phone or softphone app is started.&amp;lt;/ref&amp;gt; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Local phonebook access|Local phonebook]] || access local phone book ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Microsoft Office Integration|Office presence provider]] || maps PBX presence state to Microsoft office presence state ||  &amp;amp;#10004;  || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Call an external application for calls|External application start]] || start arbitrary external applications for calls || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#App Proxy|App Proxy]]|| a caching proxy that provides app persistence  || &amp;amp;#10004;  || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Auto update|Auto update]] || automatically updates myApps platform services to the same version the PBX has || &amp;amp;#10004;  || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004;&amp;lt;ref&amp;gt;The then-current web app is always loaded from the PBX upon startup and hence up-to-date by definition&amp;lt;/ref&amp;gt; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Three party conference || initiate 3-pty-conference using Softphone-App || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Exclude VPN || disable use of VPN connections for audio and appsharing || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Screen lock || myApps screen lock against unauthorised use || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
* innovaphone PBX 16r1 and up&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Recommended hardware requirements&lt;br /&gt;
* Processor: Dual-core 2Ghz or higher&lt;br /&gt;
* RAM: 4 Gb&lt;br /&gt;
&lt;br /&gt;
== myApps for Windows ==&lt;br /&gt;
* Windows 11 and up&lt;br /&gt;
* Windows Server 2016 and later versions&lt;br /&gt;
&lt;br /&gt;
=== 32 &amp;amp; 64 bit Windows ===&lt;br /&gt;
* 32 bit Windows: install the myAppsSetup32.msi from the App Store&lt;br /&gt;
* 64 bit Windows: install the myAppsSetup.msi from the App Store&lt;br /&gt;
** the 64 bit variant still installs into Program Files (x86), as the main myApps.exe is still a 32bit application&lt;br /&gt;
** the 64 bit variant just contains an additional 64 bit binary for the outlook search&lt;br /&gt;
&lt;br /&gt;
=== Windows N editions ===&lt;br /&gt;
&lt;br /&gt;
Windows N editions are missing the &#039;&#039;Media Feature Pack&#039;&#039; which is pre installed on other Windows versions.&lt;br /&gt;
&lt;br /&gt;
Please install the pack from [https://www.microsoft.com/en-us/software-download/mediafeaturepack Microsoft (Windows 10 pack)] before you install myApps. The installer will check if the file &amp;lt;code&amp;gt;C:\Windows\SysWOW64\mfplat.dll&amp;lt;/code&amp;gt; exist on your system.&lt;br /&gt;
&lt;br /&gt;
Make sure to install the correct pack depending on your Windows version! There are different packs for Windows 10 1703, 1803, 1809 and 32bit or 64bit etc.&lt;br /&gt;
&lt;br /&gt;
NB: Sometimes the myApps installation will not work even though the media pack is already installed. This is because the installer has no read access to check if the package is already installed. If the above-mentioned file exists and the installer asks to install the Windows Media Feature Pack nevertheless, you have to start the myApps install with administrative rights.&lt;br /&gt;
&lt;br /&gt;
=== Terminal Server environments ===&lt;br /&gt;
&lt;br /&gt;
Audio driver was removed if myApps discovers that it is running in a terminal server environment like Citrix.&lt;br /&gt;
&lt;br /&gt;
The audio driver is needed for the Softphone App but the Softphone App should not use an audio driver at the server side because the audio devices are plugged locally and there would be a delay sending and receiving audio data with the server.&lt;br /&gt;
&lt;br /&gt;
If a customer wants to use the Softphone App at the server side he needs to make use of the myApps Plugin for virtual desktops solution:&lt;br /&gt;
&lt;br /&gt;
[[{{NAMESPACE}}:MyApps_Plugin_for_Virtual_Desktops|Reference15r1:MyApps_Plugin_for_Virtual_Desktops]]&lt;br /&gt;
&lt;br /&gt;
== myApps for macOS ==&lt;br /&gt;
* macOS 13 or higher&lt;br /&gt;
&lt;br /&gt;
== myApps for iOS ==&lt;br /&gt;
* iOS 16 or higher&lt;br /&gt;
&lt;br /&gt;
== myApps for Android ==&lt;br /&gt;
* Android 13 or higher.&lt;br /&gt;
&lt;br /&gt;
== myApps for IP270 ==&lt;br /&gt;
Exclusively used in IP270 with Yocto-based Linux distribution.&lt;br /&gt;
&lt;br /&gt;
= Licenses =&lt;br /&gt;
* No license needed for myApps platform services&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
myApps platform services is a native executable that is installed using the standard mechanisms on the respective operating system. It provides various advanced services which can be used by the myApps web client code as well as the Apps running in the myApps context. &lt;br /&gt;
&lt;br /&gt;
Also, on Windows, the platform services come with their own, dedicated browser to run myApps in.  This browser is based on [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium].  On iOS, macOS and Android, it is based upon native embedded web view facilities (such as WKWebView) instead.&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
=== RTP service for audio and appsharing ===&lt;br /&gt;
The RTP service provides audio and appsharing as a video stream. VoIP RTP endpoints (e.g. for softphones).  It supports STUN, TURN, ICE, SRTP, DTLS. Note however that unlike WebRTC, these endpoints do not &#039;&#039;require&#039;&#039; ICE and DTLS. In other words, they can communicate also with non-compliant (i.e. older) VoIP devices.&lt;br /&gt;
&lt;br /&gt;
Note that the available capabilities when not running the myApps platform services depend on the used browser&#039;s WebRTC implementation. See your browser documentation for details.&lt;br /&gt;
&lt;br /&gt;
Apps can request RTP channels using the [https://sdk.innovaphone.com/doc/launcher/Media.htm Media Protocol]&#039;s &#039;&#039;AllocChannel&#039;&#039; message.&lt;br /&gt;
&lt;br /&gt;
==== RTP ports ====&lt;br /&gt;
{|&lt;br /&gt;
|  audio || 50000 -&amp;gt; 50099&lt;br /&gt;
|-&lt;br /&gt;
| video (app sharing) || 50100 -&amp;gt; 50199&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The RTP service will enumerate all local interfaces and create local HOST candidates for ICE.  There is an option however to disregard VPN interfaces (more precisely such interfaces with type of &#039;&#039;IF_TYPE_PPP&#039;&#039; or &#039;&#039;IF_TYPE_TUNNEL&#039;&#039;).  This can eliminate quality issues when RTP data is transmitted through TCP based VPN tunnels.&lt;br /&gt;
&lt;br /&gt;
SRFLX and RELAY candidates are obtained using the STUN and TURN server configuration passed by the App (e.g the &#039;&#039;softphone&#039;&#039; App) as part of the &#039;&#039;AllocChannel&#039;&#039; request.&lt;br /&gt;
&amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;AllocChannel&amp;quot;,&amp;quot;channel&amp;quot;:&amp;quot;81429cba-396d-43de-8a76-ec020ba8796e&amp;quot;,&amp;quot;iceServers&amp;quot;:[{&amp;quot;urls&amp;quot;:&amp;quot;turn:myturn.domaincom:4077?transport=udp&amp;quot;,&amp;quot;username&amp;quot;:&amp;quot;turnuser&amp;quot;,&amp;quot;credential&amp;quot;:&amp;quot;pwd&amp;quot;,&amp;quot;credentialType&amp;quot;:&amp;quot;password&amp;quot;},{&amp;quot;urls&amp;quot;:&amp;quot;stun:mystun.domain.com:4077&amp;quot;}],&amp;quot;dn&amp;quot;:&amp;quot;Foo Bar&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;RemoteRtp&amp;quot;,&amp;quot;kind&amp;quot;:&amp;quot;video&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Codecs ====&lt;br /&gt;
The installed myApps launchers provide codecs that can be used by softphone apps for media streams. When running in a web browser the codecs depend on the browser version and operating system. See the documentation of your browser for details.&lt;br /&gt;
&lt;br /&gt;
The following codecs are supported:&lt;br /&gt;
{|&lt;br /&gt;
!style=&amp;quot;text-align:left;width:100px;&amp;quot;|Codec&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Windows-Launcher&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Android&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|iOS&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|macOS&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Firefox (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Chrome (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Edge (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Safari (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Opera (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|IP270&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:left; background-color:lightgray&amp;quot; colspan=&amp;quot;11&amp;quot;|Audio&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|G711A&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|G711u&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|G722&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=Opus OPUS-NB]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=Opus OPUS-WB]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;11&amp;quot; style=&amp;quot;text-align:left; background-color:lightgray&amp;quot; |Video&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=VP8 VP8]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=VP9 VP9]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=H264 H264]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:left; background-color:lightgray&amp;quot; colspan=&amp;quot;11&amp;quot;|Application Sharing&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Share&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|-&lt;br /&gt;
|Watch&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔*&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔*&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔*&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;* small presentation only&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;** only for 1:1 calls, not for conferences&lt;br /&gt;
&lt;br /&gt;
==== Video capture ====&lt;br /&gt;
The default resolution for video capture is 1920x1080 if available.  Otherwise, 1280x720, 640x480, 352x288 or 320x240 will be used.  The frame rate is 30 fps if available, otherwise 15 fps. The resulting average bandwidth could reach 1 Mbps.&lt;br /&gt;
&lt;br /&gt;
==== Application sharing ====&lt;br /&gt;
Screen content will be transmitted as video stream by the presenter&lt;br /&gt;
&lt;br /&gt;
==== Device handling ====&lt;br /&gt;
The RTP service enumerates microphones, loudspeaker, cameras and ringing devices and notifies apps when devices come and go. It is up to the apps using the devices to store preferences.&lt;br /&gt;
&lt;br /&gt;
The RTP service also enables some extended features (such as hook switch or volume control) for supported USB headsets or Bluetooth headsets connected to myApps.&lt;br /&gt;
The supported headset-SDKs determine which headset vendors are recommended to be used with the myApps softphone app. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this to work, the following vendor specific development kits are integrated in our myApps client. Be aware that the SDK are updated within our Service release :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SDK Vendor !! Supported OS !! SDK Version !! innovaphone Service Release&lt;br /&gt;
|-&lt;br /&gt;
| Jabra|| MacOS || 1.12.2.0 || 13r3sr9&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || 1.12.2.0 || 13r3sr10&lt;br /&gt;
|-&lt;br /&gt;
| Epos &#039;&#039;(formerly Sennheiser)&#039;&#039; || MacOS || 12.4.0.5478 || 14r1sr3&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || n.a. - [[Support:13r3 sr10 MyApps Windows Client - Epos/Sennheiser-Headsets require installed Epos-Connect Software|to be installed separately]]|| 13r3sr10&lt;br /&gt;
|-&lt;br /&gt;
| Poly &#039;&#039;(formerly Plantronics)&#039;&#039; || MacOS || 3.25.53799.37131 || 13r3sr9&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || 3.25.53800.37131 || 13r3sr10&lt;br /&gt;
|-&lt;br /&gt;
| Yealink || MacOS || 3.1.1.20 || 14r1sr3&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || 3.1.1.20 || 14r1sr3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* It is possible to inhibit the start of the Sennheiser SDK (SenncomSDK.exe) using the &amp;lt;code&amp;gt;DISABLEHEADSETS&amp;lt;/code&amp;gt; directive of the installer (see [[#MSI Parameters and install options|  MSI parameters]]  below).&lt;br /&gt;
&lt;br /&gt;
* Starting with V13r3sr10, the Epos-SDK needs to be installed separately using the Epos Connect software to ensure full compatibility between current Epos headset models and native myApps-Windows client. For details [[Support:13r3 sr10 MyApps Windows Client - Epos/Sennheiser-Headsets require installed Epos-Connect Software|refer to this article]].&lt;br /&gt;
&amp;lt;!--Keywords: myapps softphone supported headsets sdk--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
myApps-IP270 supports use of [[Reference9:Concept USB Headset|USB devices known for innovpahone desk phones]].&lt;br /&gt;
&lt;br /&gt;
==== Ring tones ====&lt;br /&gt;
Ring tones can be played. Apps can choose the tone from a pre-defined list of ring tones.&lt;br /&gt;
&lt;br /&gt;
On Windows, custom ring tones can be uploaded as .mp3 files to the &amp;lt;code&amp;gt;ringtones&amp;lt;/code&amp;gt; sub-directory of myApps&#039; roaming directory (which usually is in &amp;lt;code&amp;gt;%appdata%\innovaphone\myApps\ringtones&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
On Android, custom ring tones can be added to the system via Android settings.&lt;br /&gt;
&lt;br /&gt;
On iOS, custom ring tones can be uploaded as .mp3 files to the &amp;lt;code&amp;gt;Ringtones&amp;lt;/code&amp;gt; subdirectory of the myApps file share that is available in iTunes if the iPhone has been connected via USB.&lt;br /&gt;
&lt;br /&gt;
On macOS, custom ring tones can be uploaded as .mp3 files to &amp;lt;code&amp;gt;~/Library/Containers/com.innovaphone.client-macos/Data/Documents/Ringtones&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Debugging ====&lt;br /&gt;
For extended debugging, turn on the &#039;&#039;Audio&#039;&#039;, &#039;&#039;Media&#039;&#039; and &#039;&#039;AppSharing&#039;&#039; traces in myApps.&lt;br /&gt;
=== Hot keys ===&lt;br /&gt;
On Windows and macOS systems, myApps platform services can listen for hot keys and invoke certain functions. Invocation is done by sending API messages to myApps which passes it to an appropriate API provider (in the cases described here, this will be a &#039;&#039;phone&#039;&#039; or &#039;&#039;softphone&#039;&#039; or &#039;&#039;rcc&#039;&#039; App typically.  See [[{{NAMESPACE}}:Concept_myApps#Client_APIs_and_default_apps | Client APIs and default apps]] for more details about this mechanism.&lt;br /&gt;
&lt;br /&gt;
The hot keys can be specified using the &#039;&#039;advanced settings&#039;&#039; user interface (see [[#UI elements| UI elements]] below. Any of the function keys F1 to F11 (optionally combined with up to two modifier keys &#039;&#039;alt&#039;&#039;, &#039;&#039;ctrl&#039;&#039;, &#039;&#039;shift&#039;&#039; or &#039;&#039;win&#039;&#039;) can be chosen for each function. If you do not want to start the call with &amp;quot;Hotkey+Enter&amp;quot; because you would have to wait for the focus, the hotkey can also be pressed twice and the number is dialled directly.&lt;br /&gt;
&lt;br /&gt;
; dial selected number : Initiates a call using the currently selected text as target.&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;PrepareCall&#039;&#039; message with the &#039;&#039;text&#039;&#039; argument set to the selected text and the &#039;&#039;adjust&#039;&#039; argument set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:&amp;quot;mt&amp;quot;:&amp;quot;PrepareCall&amp;quot;,&amp;quot;text&amp;quot;:&amp;quot;13&amp;quot;,&amp;quot;adjust&amp;quot;:true}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; accept call : Accepts a currently alerting call.&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;ConnectCall&#039;&#039; message will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;ConnectCall&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; reject/disconnect call : Rejects a currently alerting call or disconnects an active call.&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;DisconnectCall&#039;&#039; message will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;DisconnectCall&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== URL Handler ===&lt;br /&gt;
&lt;br /&gt;
On Windows systems, two URI-handler are installed with the myApps platform services.  Windows will call up this URI handler when a user clicks on an appropriate link, for example in a web site.&lt;br /&gt;
&lt;br /&gt;
The handler will the send an API message to myApps which passes it to an appropriate API provider (in the cases described here, this will be a &#039;&#039;phone&#039;&#039; or &#039;&#039;softphone&#039;&#039; or &#039;&#039;rcc&#039;&#039; App typically.  See [[{{NAMESPACE}}:Concept_myApps#Client_APIs_and_default_apps | Client APIs and default apps]] for more details about this mechanism.&lt;br /&gt;
&lt;br /&gt;
; tel URI : call a number, e.g. &amp;lt;code&amp;gt;tel:4711&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;PrepareCall&#039;&#039; message with the &#039;&#039;num&#039;&#039; argument set to the selected text and the &#039;&#039;adjust&#039;&#039; argument set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;StartCall&amp;quot;,&amp;quot;num&amp;quot;:&amp;quot;4711&amp;quot;,&amp;quot;adjust&amp;quot;:true}}&amp;lt;/code&amp;gt;&lt;br /&gt;
; sip URI : call a SIP name, e.g. &amp;lt;code&amp;gt;sip:zkl@innovaphone.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;PrepareCall&#039;&#039; message with the &#039;&#039;sip&#039;&#039; argument set to the selected text and the &#039;&#039;adjust&#039;&#039; argument set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;StartCall&amp;quot;,&amp;quot;sip&amp;quot;:&amp;quot;zkl@innovaphone.com&amp;quot;,&amp;quot;adjust&amp;quot;:true}}&amp;lt;/code&amp;gt;&lt;br /&gt;
; im URI : start chat with SIP name, e.g. &amp;lt;code&amp;gt;im:zkl@innovaphone.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;StartChat&#039;&#039; message with the &#039;&#039;sip&#039;&#039; argument set to the selected text will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.chat/com.innovaphone.chat.htm &#039;&#039;com.innovaphone.chat&#039;&#039; API].&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.chat&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;StartChat&amp;quot;,&amp;quot;sip&amp;quot;:&amp;quot;zkl@innovaphone.com&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On macOS systems myApps might be made the default application to handle tel URI e.g. &amp;lt;code&amp;gt;tel:4711&amp;lt;/code&amp;gt; via Apple FaceTime. Open the &amp;quot;FaceTime&amp;quot; menu &amp;quot;Settings...&amp;quot; and select myApps as &amp;quot;Default for phone calls&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
On iOS &#039;&#039;tel&#039;&#039; URIs are always dialed via GSM. Therefore myApps iOS also reacts to URI schemes &#039;&#039;com.innovaphone.tel&#039;&#039;, &#039;&#039;com.innovaphone.sip&#039;&#039; and &#039;&#039;com.innovaphone.im&#039;&#039;, e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;com.innovaphone.tel:4711&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;com.innovaphone.sip:zkl@innovaphone.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;com.innovaphone.im:zkl@innovaphone.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== User activity ===&lt;br /&gt;
On Windows and macOS systems, the myApps platform services can monitor user keyboard/mouse activity and change the user&#039;s presence state after a certain amount of inactivity.  The timeout can be specified using the &#039;&#039;advanced settings&#039;&#039; user interface (see [[#UI elements| UI elements]] below.&lt;br /&gt;
&lt;br /&gt;
myApps will then send a [https://sdk.innovaphone.com/doc/appwebsocket/myApps.htm#SetUserActivity&#039;&#039;SetUserActivity&#039;&#039;] message to the PBX using the &#039;&#039;myApps&#039;&#039; protocol.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;SetUserActivity&amp;quot;,&amp;quot;inactive&amp;quot;:true}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will change the &#039;&#039;status&#039;&#039; property of the &#039;&#039;im:&#039;&#039; contact for the user&#039;s own presence and hence result in a presence update from the PBX to myApps&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;UpdateOwnPresence&amp;quot;,&amp;quot;presence&amp;quot;:[{...},{&amp;quot;contact&amp;quot;:&amp;quot;im:&amp;quot;,&amp;quot;activity&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;status&amp;quot;:&amp;quot;closed&amp;quot;}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
The &#039;&#039;closed&#039;&#039; status is reflected in the grey status color when displaying a contact [[Image:myapps-inactive.png|myapps-inactive.png/|myapps-inactive.png/]].&lt;br /&gt;
&lt;br /&gt;
On iOS and Android, the state is set to &#039;&#039;inactive&#039;&#039; as soon as the App is brought to background.&lt;br /&gt;
When myApps platform services are not available (i.e. when running the web application in a browser solely) a limited user activity monitoring is available: the state is set to active when the web page is not used for more than 5 minutes.&lt;br /&gt;
&lt;br /&gt;
=== Recording ===&lt;br /&gt;
&lt;br /&gt;
The new launcher offers the possibility to record the audio of incoming and outgoing calls. In order to activate that functionality the URL of the recording instance must be configured in either the PBX (PBX-&amp;gt;myApps-&amp;gt;Config: Recording URL) or the softphone App (Settings-&amp;gt;Audio Recording (URL)) &lt;br /&gt;
&lt;br /&gt;
[[Image:PBX-Recording-Settings.png|pbx-recording-settings.png/|pbx-recording-settings.png/]] [[Image:Recording-Softphone-Settings.png|recording-softphone-settings.png/|recording-softphone-settings.png/]]. &lt;br /&gt;
&lt;br /&gt;
As long as that URL is configured the audio data of all calls are stored as pcap-files under that URL.&lt;br /&gt;
If the URL points to a CF device in the PBX, write access must be granted for that URL (PBX-&amp;gt;Services-&amp;gt;HTTP-&amp;gt;Server:Public compact flash access) and if the URL points to the recording app, the files can be accessed via the recording app [[{{NAMESPACE}}:Concept_App_Service_Recordings|recording]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Under PBX-&amp;gt;myApps the administrator can set a certain default behaviour of the audio recording like whether or not the recording should start automatically at the beginning of the call (Recording by Default ON/OFF), only calls with external numbers should be recorded (Record external calls only) or whether or not the user should be able to start/stop the recording himself (Allow user incall recording control). Except for the last parameter these parameters can also be modified by the user in its softphone settings if the administrator doesn&#039;t set the FORCE flag.&lt;br /&gt;
&lt;br /&gt;
If the user was allowed by the admin to control the recording a recording switch is active during the call when the &amp;quot;Media&amp;quot; Panel is opened. There the audio recording may be stopped and continued at will. A red recording notice is shown in the top right corner when the recording actually takes place.&lt;br /&gt;
 &lt;br /&gt;
[[Image:Recording-incall-switch.png|recording-incall-switch.png/|recording-incall-switch.png/]]&lt;br /&gt;
&lt;br /&gt;
=== Notifications ===&lt;br /&gt;
&lt;br /&gt;
The myApps platform services can use the OS specific notification mechanism (e.g. &#039;&#039;desktop notifications&#039;&#039; on Windows) to display messages (e.g. &#039;&#039;incoming new chat message&#039;&#039;) to the user.&lt;br /&gt;
&lt;br /&gt;
Note that the actual rendering of the notification is under control of the OS.  Therefore, myApps must be allowed to show notifications and its appearance can be restricted by OS native settings.&lt;br /&gt;
&lt;br /&gt;
==== Microsoft Windows Notifications ====&lt;br /&gt;
&lt;br /&gt;
Microsoft Windows Server editions (2016, 2019, 2022) are just capable of showing a single &#039;&#039;IncomingCall&#039;&#039; notification at the same time (we couldn&#039;t find a workaround for this limitation).&amp;lt;br/&amp;gt;&lt;br /&gt;
An &#039;&#039;IncomingCall&#039;&#039; notification is visible the whole time instead of being moved to the action center after a certain time.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
A notification about a missed call uses the &#039;&#039;IncomingCall&#039;&#039; type so that this notification is visible until the user returns.&amp;lt;br/&amp;gt;&lt;br /&gt;
Due to the above limitation, on a new arriving call such a missed call notification is transformed to a default notification which will be moved to the action center automatically.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
On non server editions, you can have multiple IncomingCall notifications at the same time (so two parallel incoming calls will be indeed notified at the same time), but the missed call notification handling is the same on both platforms!&lt;br /&gt;
&lt;br /&gt;
 Thus there will be always just &#039;&#039;&#039;one&#039;&#039;&#039; missed call notification visible and previous missed calls can be found inside your action center!&lt;br /&gt;
&lt;br /&gt;
To see myApps notifications, ensure:&lt;br /&gt;
* System -&amp;gt; Notifications &lt;br /&gt;
** enable notifications&lt;br /&gt;
** disable &amp;quot;Do not disturb&amp;quot; or allow myApps as priority application while &amp;quot;Do not disturb&amp;quot; is active&lt;br /&gt;
** enable notifications for myApps in the list of applications&lt;br /&gt;
* System -&amp;gt; Focus &lt;br /&gt;
** if a focus session is active and the &amp;quot;Do not disturb&amp;quot; is activated during a focus session, make sure that myApps is a priority application (see above)&lt;br /&gt;
&lt;br /&gt;
==== macOS Notifications ====&lt;br /&gt;
Notifications are the same as on Windows.&lt;br /&gt;
The difference is, that for macOS, notifications need to be allowed in the system settings.&lt;br /&gt;
Go to Notifications - myApps, select Banner and enable all check marks.&lt;br /&gt;
&lt;br /&gt;
=== Local phonebook access ===&lt;br /&gt;
&#039;&#039;&#039;Contact Search:&#039;&#039;&#039; The myApps platform services implement an &#039;&#039;API provider&#039;&#039; for the [http://sdk.innovaphone.com/web1/com.innovaphone.search/lib1_api_search.htm &#039;&#039;com.innovaphone.search&#039;&#039; API]]. They perform search capabilities on the OS&#039; local phone books which can be used by Apps like the &#039;&#039;phoneapp&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Apps would send a &#039;&#039;Search&#039;&#039; request to the API:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;*&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;4&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;Search&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;contact&amp;quot;,&amp;quot;search&amp;quot;:&amp;quot;john doe&amp;quot;},&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.search&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
Search results are delivered as &#039;&#039;SearchInfo&#039;&#039; messages:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiResult&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;3&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;@local-8125d22e37-519d-4056-bfe5-c52ef2ae8fabb0&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;client&amp;quot;:&amp;quot;@client-f62702dd86-be3f-47fc-b4bc-7a21627b75b2ea&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;SearchInfo&amp;quot;,&amp;quot;relevance&amp;quot;:2000,&amp;quot;adjust&amp;quot;:true,&amp;quot;type&amp;quot;:&amp;quot;contact&amp;quot;,&amp;quot;contact&amp;quot;:{&amp;quot;givenname&amp;quot;:&amp;quot;John&amp;quot;,&amp;quot;sn&amp;quot;:&amp;quot;Doe&amp;quot;,&amp;quot;company&amp;quot;:&amp;quot;ACME&amp;quot;,&amp;quot;position&amp;quot;:&amp;quot;Head of everything&amp;quot;,&amp;quot;telephonenumber&amp;quot;:[&amp;quot;11111&amp;quot;,&amp;quot;22222&amp;quot;],&amp;quot;homephone&amp;quot;:[&amp;quot;+4944444&amp;quot;,&amp;quot;33333&amp;quot;],&amp;quot;mobile&amp;quot;:[&amp;quot;+49 (123) 55555&amp;quot;]}},&amp;quot;api&amp;quot;:&amp;quot;com.innovaphone.search&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reverse Lookup:&#039;&#039;&#039; The myApps platform services implement an &#039;&#039;API provider&#039;&#039; for the [http://sdk.innovaphone.com/web1/com.innovaphone.phonelookup/lib1_api_phonelookup.htm &#039;&#039;com.innovaphone.phonelookup&#039;&#039; API]. They perform search capabilities on the OS&#039; local phone books which can be used by Apps like the &#039;&#039;phoneapp&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Apps would send a &#039;&#039;Lookup&#039;&#039; request to the API: &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;*&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;4&amp;quot;,&amp;quot;msg&amp;quot;:{ mt: &amp;quot;Lookup&amp;quot;, prefixIntl: &amp;quot;000&amp;quot;, prefixNtl: &amp;quot;00&amp;quot;, prefixExt:&amp;quot;0&amp;quot;, area: &amp;quot;7031&amp;quot;, country: &amp;quot;49&amp;quot;, lookup: &amp;quot;0004970311234567&amp;quot; },&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.lookup&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Search results are delivered as &#039;&#039;LookupInfo&#039;&#039; messages:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiResult&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;3&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;@local-8125d22e37-519d-4056-bfe5-c52ef2ae8fabb0&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;client&amp;quot;:&amp;quot;@client-f62702dd86-be3f-47fc-b4bc-7a21627b75b2ea&amp;quot;,&amp;quot;msg&amp;quot;:{mt: &amp;quot;LookupInfo&amp;quot;, dn: &amp;quot;Jake Blues&amp;quot;, contact: { telephonenumber: [&amp;quot;0004970311234567&amp;quot;], givenname: &amp;quot;Jake&amp;quot;, sn: &amp;quot;Blues&amp;quot;, company: &amp;quot;Blues Brothers&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Windows ====&lt;br /&gt;
On Windows, the search and lookup are performed in all of the user&#039;s Outlook contact folders.  As opposed to the search implemented in the &#039;&#039;Contacts&#039;&#039; and &#039;&#039;Users&#039;&#039; App, all items are returned which match any of the search words (i.e. searching for &#039;&#039;a b&#039;&#039; will return items matching either &#039;&#039;a&#039;&#039; or &#039;&#039;b&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
; searched properties : firstname, lastname&lt;br /&gt;
; returned properties : Following Outlook contact phone number properties are returned  (if available):&lt;br /&gt;
&lt;br /&gt;
:* OFFICE_TELEPHONE_NUMBER as &#039;&#039;telephonenumber&#039;&#039;&lt;br /&gt;
:* OFFICE2_TELEPHONE_NUMBER as &#039;&#039;telephonenumber&#039;&#039;&lt;br /&gt;
:* HOME_TELEPHONE_NUMBER as &#039;&#039;homephone&#039;&#039;&lt;br /&gt;
:* HOME2_TELEPHONE_NUMBER as &#039;&#039;homephone&#039;&#039;&lt;br /&gt;
:* MOBILE_TELEPHONE_NUMBER as &#039;&#039;mobile&#039;&#039;&lt;br /&gt;
:* BUSINESS_FAX_NUMBER as &#039;&#039;facsimiletelephonenumber&#039;&#039;&lt;br /&gt;
Note that contact information is cached in the search provider.  Updated contacts may therefore become effective after a while only.&lt;br /&gt;
Outlook search will create its own trace file &amp;lt;code&amp;gt;myAppsOutlookSearch-&amp;lt;/code&amp;gt;&#039;&#039;date-time&#039;&#039;&amp;lt;code&amp;gt;.txt&amp;lt;/code&amp;gt; in the standard trace directory.&lt;br /&gt;
&lt;br /&gt;
This search provider is always installed and can be disabled.  There is no need (nor possibility) to enable it in the &#039;&#039;Apps&#039;&#039; tab of the PBX&#039;s user object.  Also, no &#039;&#039;App&#039;&#039; object needs to be created for it.&lt;br /&gt;
&lt;br /&gt;
==== Android/iOS ====&lt;br /&gt;
The search and lookup are performed in the contacts.&lt;br /&gt;
&lt;br /&gt;
==== macOS ====&lt;br /&gt;
The search and lookup are performed in the contacts. If you wish to disable local contact lookup, go to system settings - Security &amp;amp; Privacy and disable the access to contacts for myapps.&lt;br /&gt;
=== Microsoft Office integration ===&lt;br /&gt;
&lt;br /&gt;
The myApps platform services has a &#039;&#039;office presence provider&#039;&#039; that can provide the user&#039;s presence state to Office applications.  See [[{{NAMESPACE}}:Concept_myApps_Office_Integration|myApps Office Integration]] for details.&lt;br /&gt;
&lt;br /&gt;
This feature is installed by default.  However, it can be disabled using the &#039;&#039;OFFICEPRESENCE&#039;&#039; MSI Parameter.  Also, a check-mark is available in the setup dialog.&lt;br /&gt;
&lt;br /&gt;
=== Call an external application for calls ===&lt;br /&gt;
&lt;br /&gt;
Phone Apps (such as the phoneapp or softphone) can initiate the start of an external application when a new call appears (either incoming or outgoing).  The actual spawning of the application is done by the myApps platform service.  Also, the application properties (such as e.g. the executable&#039;s path) is configured in the myApps platform services (see [[#UI elements|Advanced settings]] in the &#039;&#039;UI elements&#039;&#039; section below).&lt;br /&gt;
&lt;br /&gt;
A number of arguments can be passed to the application by substituting $-variables in the &#039;&#039;Parameter&#039;&#039; field:&lt;br /&gt;
&lt;br /&gt;
; $n : phone number as dialed (called party number for outgoing calls) or received (calling party number for incoming calls)&lt;br /&gt;
&lt;br /&gt;
; $N : called or calling party number in &#039;&#039;national&#039;&#039; format (e.g. 07031730090)&lt;br /&gt;
&lt;br /&gt;
; $I : called or calling party number in &#039;&#039;international&#039;&#039; format (e.g. +497031730090)&lt;br /&gt;
&lt;br /&gt;
: note that both $N and $I only work if $n includes both subscriber number and area code (e.g. 07031730090). Otherwise they are equal to $n&lt;br /&gt;
&lt;br /&gt;
; $d : display name of peer (if known)&lt;br /&gt;
&lt;br /&gt;
; $u : URI name of the peer (if available eg with a federation call)&lt;br /&gt;
&lt;br /&gt;
; $c : conference id&lt;br /&gt;
&lt;br /&gt;
: this is a globally unique ID for this call and may be used to relate the call to the &#039;&#039;guid&#039;&#039; found in the CallInfo structure in the [http://wiki.innovaphone.com/index.php?title=Reference10:SOAP_API#CallInfo SOAP-API] and [http://sdk.innovaphone.com/doc/appwebsocket/RCC.htm RCC-API ].  Also, corresponding [[Reference10:Call Detail Record CDR PBX|CDRs]] can be related using the &#039;&#039;event&#039;&#039; tag&#039;s &#039;&#039;conf&#039;&#039; attribute.&lt;br /&gt;
The start of an external application can be requested using the &#039;&#039;com.innovaphone.externalapps&#039;&#039; API.&lt;br /&gt;
&lt;br /&gt;
Some setup examples are [[Howto:Integrate External Apps in innovaphone UC clients|shown here]].&lt;br /&gt;
&lt;br /&gt;
=== Push ===&lt;br /&gt;
&lt;br /&gt;
Mobile operating systems usually inhibit network operation of apps which run in the background or are closed by the user.  This is done in order to reduce battery consumption.  Unfortunately, this also stops such apps to maintain a registration by regularly sending &#039;&#039;keep alive&#039;&#039; messages to a server (in our case to the PBX).  As a result, myApps will be disconnected from the PBX.   When the PBX determines that there is an event for the application which needs a response, it needs to wake up the app using a dedicated channel provided by the operating system.  This mechanism is know as &#039;&#039;push&#039;&#039;. When running on iOS or Android, myApps supports &#039;&#039;push&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;push&#039;&#039; to work, a [[{{NAMESPACE}}:PBX/Objects/Push|&#039;&#039;push object&#039;&#039;]] needs to be configured in the PBX .  Also, it needs to be enabled on the mobile phone for the myApps app.&lt;br /&gt;
This mechanism is quite similar in v12 and v13, so you can refer to [[{{NAMESPACE}}:Concept_Push_Notifications_for_iOS_and_Android|the concept for push notifications for iOS and Android]] for more details. &lt;br /&gt;
&lt;br /&gt;
Also, helpful hints can be found in [[Howto:Troubleshoot v13 Push with myApps for Android and iOS]].&lt;br /&gt;
&lt;br /&gt;
=== App Proxy ===&lt;br /&gt;
&lt;br /&gt;
myApps runs further &#039;&#039;Apps&#039;&#039; (such as e.g. the &#039;&#039;phoneapp&#039;&#039;) as a web page in an IFRAME of the browser myApps is running in.  The App&#039;s page code is loaded either from the PBX or from an &#039;&#039;application platform&#039;&#039; (AP).   This however would mean that the App&#039;s IFRAME would remain empty (a dead white screen) when the PBX or AP is not available. To make sure the App can start-up anyway, the myApps platform services feature the so-called &#039;&#039;App Proxy&#039;&#039;.  This is a caching proxy that caches all the App code so it is available even in case of network failure. When myApps runs in the context of the platform services, Apps are therefore not loaded from the App source directly, but from the local App proxy. &lt;br /&gt;
&lt;br /&gt;
The cached files are stored in the PCs local file system in the &amp;lt;code&amp;gt;%LOCALAPPDATA%\innovaphone\myApps\appproxy&amp;lt;/path&amp;gt;&amp;lt;/code&amp;gt;.  There is no configuration required.  However, if myApps seems to run with outdated or corrupt cached copies of the App, you can safely delete the entire directory.&lt;br /&gt;
&lt;br /&gt;
=== Auto update ===&lt;br /&gt;
&lt;br /&gt;
On Windows and on macOS, the myApps platform services can auto-update themselves to a common version.  This is controlled by the [[{{NAMESPACE}}:PBX/Config/myApps#Launcher_Software_Update | &#039;&#039;Launcher Software Update&#039;&#039;]] settings under &#039;&#039;PBX/Config/myApps&#039;&#039; in the PBX. &lt;br /&gt;
&lt;br /&gt;
When myApps is started or the user logs in or myApps needs to re-connect to the PBX, the platform services will use the [http://sdk.innovaphone.com/web1/com.innovaphone.client/lib1_api_client.htm com.innovaphone.client API] to learn the desired version (&#039;&#039;launcherUpdateBuild&#039;&#039;, which is part of the API&#039;s &#039;&#039;model&#039;&#039;). If this differs from the current version, the platform services will try to download the respective new version. &lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;mt&amp;quot;: &amp;quot;ApiUpdate&amp;quot;,&lt;br /&gt;
    &amp;quot;apis&amp;quot;: {&lt;br /&gt;
        &amp;quot;com.innovaphone.client&amp;quot;: {&lt;br /&gt;
            &amp;quot;@client&amp;quot;: {&lt;br /&gt;
                &amp;quot;title&amp;quot;: &amp;quot;innovaphone myApps&amp;quot;,&lt;br /&gt;
                &amp;quot;model&amp;quot;: {&lt;br /&gt;
                    &amp;quot;launcher&amp;quot;: true,&lt;br /&gt;
                    &amp;quot;launcherUpdateBuild&amp;quot;: &amp;quot;134906&amp;quot;,&lt;br /&gt;
                    &amp;quot;appStoreUrl&amp;quot;: &amp;quot;http://store.innovaphone.com/release/download/&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The installation of the downloaded version is done by the &#039;&#039;innovaphonemyAppsUpdateService&#039;&#039;. This service is installed and enabled during the initial installation of the myApps platform services.  To disable auto-update, either leave the &#039;&#039;Launcher Software Update&#039;&#039; settings empty or set the service&#039;s start mode to &#039;&#039;disabled&#039;&#039; in the Windows &#039;&#039;services control panel&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note that on Windows the update service does not work on terminal servers. Administrators must do myApps base services updates using standard windows mechanisms.&lt;br /&gt;
&lt;br /&gt;
Note that on macOS if myApps has been installed from the Apple Store it is assumed that auto update from the PBX is not desired and disabled therefore.&lt;br /&gt;
&lt;br /&gt;
On Android/iOS/macOS updates can be downloaded from the respective app store.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;Devices&#039;&#039; app can not update software installed on Windows PCs directly. However, when the PBX is updated using an &#039;&#039;update job&#039;&#039; in the &#039;&#039;Devices&#039;&#039; App, the &#039;&#039;Launcher Software Update&#039;&#039; settings will be updated accordingly and hence the myApps base services will ultimately also be updated to the same version.&lt;br /&gt;
&lt;br /&gt;
==== Auto update flow on Windows ====&lt;br /&gt;
&lt;br /&gt;
* On start of myApps, myApps checks if an update is available and ready for installation&lt;br /&gt;
** if yes, the update is installed directly, without user interaction (a popup is shown during the installation)&lt;br /&gt;
** if not, myApps starts&lt;br /&gt;
* if an update is available while myApps is already running, an update notification will be shown which let&#039;s the user choose to install the update now or later (the notification will then popup again after one hour)&lt;br /&gt;
&lt;br /&gt;
==UI elements ==&lt;br /&gt;
There are a few user interfaces provided by the platform services:&lt;br /&gt;
===tray-icon (Windows only) ===&lt;br /&gt;
::[[Image:myapps-tray.png|myapps-tray.png/|myapps-tray.png/]]&lt;br /&gt;
:Allows to&lt;br /&gt;
:* terminate myApps&lt;br /&gt;
:* toggle the &#039;&#039;autostart&#039;&#039; state&lt;br /&gt;
:* toggle the &#039;&#039;show in task bar&#039;&#039; state&lt;br /&gt;
:* open the trace folder&lt;br /&gt;
:&lt;br /&gt;
=== PBX connect form===&lt;br /&gt;
:: [[Image:myapps-connect.png|myapps-connect.png/|myapps-connect.png/]]&lt;br /&gt;
: Allows the user to specify the connect data for the PBX (i.e. IP address or DNS name)&lt;br /&gt;
:&lt;br /&gt;
=== Advanced settings===&lt;br /&gt;
::[[Image:myapps-settings0.png|myapps-settings0.png/|myapps-settings0.png/]]&lt;br /&gt;
::[[Image:myapps-settings.png|myapps-settings.png/|myapps-settings.png/]] [[Image:myapps-settings2.png|myapps-settings2.png/|myapps-settings2.png/]] [[Image:myapps-settings3.png|myapps-settings3.png/|myapps-settings3.png/]]&lt;br /&gt;
&lt;br /&gt;
: Allows to modify various platform dependant settings (such as e.g. the hotkey selection on Windows)&lt;br /&gt;
&lt;br /&gt;
== Interfaces ==&lt;br /&gt;
=== Provided APIs ===&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.search/lib1_api_search.htm com.innovaphone.search] : access to local phone book entries by the [[#Local phonebook access|Local phonebook access]] component.&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.launcher/com.innovaphone.launcher.htm com.innovaphone.launcher] : display of OS specific user notifications and receipt of related user actions&lt;br /&gt;
; com.innovaphone.notificationhandler : reports back click on a notification.&lt;br /&gt;
; com.innovaphone.externalapps : to start external applications, see [[#Call an external application for calls|Call an external application for calls]]  above&lt;br /&gt;
&lt;br /&gt;
=== Used APIs ===&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm com.innovaphone.phone] : used to initiate new or manipulate existing calls by the [[#Hot keys|Hot keys]] and [[#URL handler|URL handler]] components.&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.chat/com.innovaphone.chat.htm com.innovaphone.chat] : used to start a new chat by the [[#URL handler|URL handler]] component.&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.client/lib1_api_client.htm com.innovaphone.client] : the model is used to learn the update settings, see [[#Auto update|Auto update]] above&lt;br /&gt;
&lt;br /&gt;
=== Protocols ===&lt;br /&gt;
&lt;br /&gt;
; [https://sdk.innovaphone.com/doc/launcher/Media.htm Media Protocol] : used by apps to allocate RTP channels, see [[#RTP service for audio.2C video and data|RTP service for audio, video and data]] above&lt;br /&gt;
&lt;br /&gt;
== Related App Services ==&lt;br /&gt;
&lt;br /&gt;
none&lt;br /&gt;
&lt;br /&gt;
== Known limitations ==&lt;br /&gt;
; Incoming call as banner on myApps for iOS : Since iOS 14 the iOS CallKit presents incoming calls as a banner leaving the original green answer button of myApps visible. Use only the blue button of the banner to accept the call or change iPhone Settings, App &amp;quot;Phone&amp;quot;, &amp;quot;Incoming Calls&amp;quot; to &amp;quot;Full Screen&amp;quot; to hide the myApps user interface again during call answering.&lt;br /&gt;
&lt;br /&gt;
; Call answer in speakerphone mode even with active Bluetooth headset on myApps for iOS : This causes unwanted speakerphone operation if the smartphone is used with a Bluetooth car audio system. The behaviour can be changed by selecting &#039;&#039;Bluetooth Headset&#039;&#039; in this setting:&lt;br /&gt;
:&#039;&#039;iOS Settings-&amp;gt;Accessibility-&amp;gt;Touch-&amp;gt;Call Audio Routing: Automatic / Bluetooth Headset / Speaker&#039;&#039;&lt;br /&gt;
:&#039;&#039;iOS Einstellungen-&amp;gt;Bedienungshilfen-&amp;gt;Tippen-&amp;gt;Anrufaudioausgabe: Automatisch / Bluetooth-Headset / Lautsprecher&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; Windows Server 2016 (Windows 10 Build 1607) : windows just shows the first notification. Further notifications aren&#039;t displayed until the previous ones are removed from the notification center. Current windows builds do not show this behaviour anymore.&lt;br /&gt;
&lt;br /&gt;
; Problems on Mac computers with Yealink USB headsets&lt;br /&gt;
: we have received reports that myApps quits unexpectedly on some Mac computers when a Yealink headset is plugged in.  Unfortunately, we could not find out the cause yet.  If you use Yealink USB headsets and have a similar issue, please open a support ticket and send myApps traces.&lt;br /&gt;
&lt;br /&gt;
; Poly / Plantronics headset buttons only functional if myApps is started with Rosetta&lt;br /&gt;
: myApps macOS supports Apple M1/M2 hardware natively. However, the Poly / Plantronics headset SDK is only available for Intel platform and thus myApps needs to be started via Apple&#039;s Intel emulator Rosetta if a Poly / Plantronics headset is used. This is done with right-click on the myApps executable, &#039;&#039;Information&#039;&#039;, &#039;&#039;Open with Rosetta&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
; Windows surface devices may not work correctly&lt;br /&gt;
: Chromium does not get touch keyboard events. USB Keyboards may not be recognized either.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services are installed on Windows using the .msi file found in the &#039;&#039;myApps Windows&#039;&#039; package from [https://store.innovaphone.com/release/download.htm store.innovaphone.com].&lt;br /&gt;
&lt;br /&gt;
myApps can update itself automatically, see [[#Auto update|Auto update]] above.&lt;br /&gt;
&lt;br /&gt;
=== MSI Parameters and install options ===&lt;br /&gt;
&lt;br /&gt;
The MSI installer of myApps for Windows supports the following parameters and can be edited with [https://docs.microsoft.com/en-us/windows/win32/msi/orca-exe Microsoft Orca]. You can add your parameters in the table &#039;&#039;property&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
; SERVER (REG_SZ): the PBX&#039;s server address (without protocol like https://)&lt;br /&gt;
; OFFICEPRESENCE (REG_DWORD): &#039;&#039;&#039;false&#039;&#039;&#039; to disable presence integration in Microsoft Office&lt;br /&gt;
: this is also available as a check-mark when running the install manually&lt;br /&gt;
&lt;br /&gt;
; DISABLEHEADSETS (REG_DWORD): &#039;&#039;&#039;true&#039;&#039;&#039; to disable headsets support, see [[#Device handling|Device handling]] above&lt;br /&gt;
&lt;br /&gt;
; EXTERNALAPPS (REG_SZ): pre-define external applications, see [[#Call an external application for calls|Call an external application for calls]] above&lt;br /&gt;
: e.g. &amp;lt;code&amp;gt;&amp;quot;{&amp;quot;&amp;quot;externalApps&amp;quot;&amp;quot;:[{&amp;quot;&amp;quot;id&amp;quot;&amp;quot;:0,&amp;quot;&amp;quot;name&amp;quot;&amp;quot;:&amp;quot;&amp;quot;Wireshark&amp;quot;&amp;quot;,&amp;quot;&amp;quot;path&amp;quot;&amp;quot;:&amp;quot;&amp;quot;C:\\Program Files\\Wireshark\\Wireshark.exe&amp;quot;&amp;quot;,&amp;quot;&amp;quot;param&amp;quot;&amp;quot;:&amp;quot;&amp;quot;test $I&amp;quot;&amp;quot;}]}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; FORCERESTART (REG_DWORD): &#039;&#039;&#039;true&#039;&#039;&#039; (or any string ...) kills myApps during the installation and restarts it for the currently logged in user, if it was running&lt;br /&gt;
&lt;br /&gt;
; DISABLELOCALHOST (REG_DWORD): &#039;&#039;&#039;true&#039;&#039;&#039; to disable use of &#039;&#039;&#039;localhost&#039;&#039;&#039; string to access the local webserver. Use &#039;&#039;&#039;127.0.0.1&#039;&#039;&#039; instead&lt;br /&gt;
&lt;br /&gt;
; EXCLUDEINTERFACES (REG_SZ): some VPN interfaces are not detected by Windows as IF_TYPE_PPP or IF_TYPE_TUNNEL and therefore the &#039;&#039;&#039;media outside VPN&#039;&#039;&#039; setting is not taking effect. With this option interfaces can be pre-defined that will not be used for media. Interfaces must be comma separated&lt;br /&gt;
: e.g. &amp;lt;code&amp;gt;EXCLUDEINTERFACES=&amp;quot;172,192.168,10.10&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Current settings are stored in the registry at &amp;lt;code&amp;gt;Computer\HKEY_CURRENT_USER\Software\innovaphone\myApps&amp;lt;/code&amp;gt; or at &amp;lt;code&amp;gt;Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\innovaphone\myApps&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Boolean values like OfficePresence are stored in registry entries with type REG_DWORD and values 1 or 0. 0 disables the setting and 1 enables it.&lt;br /&gt;
&lt;br /&gt;
== iOS ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services are installed on iOS by loading &#039;&#039;innovaphone myApps&#039;&#039; from the &#039;&#039;App Store&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Configuration via MDM ===&lt;br /&gt;
&lt;br /&gt;
the PBX&#039;s server URL can be pre-configured by specifying this dictionary in the MDM&lt;br /&gt;
 &amp;lt;plist&amp;gt;&lt;br /&gt;
   &amp;lt;dict&amp;gt;&lt;br /&gt;
     &amp;lt;key&amp;gt;server&amp;lt;/key&amp;gt;&lt;br /&gt;
     &amp;lt;string&amp;gt;pbx.example.com&amp;lt;/string&amp;gt;&lt;br /&gt;
   &amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt;/plist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== macOS ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services might be installed directly from the Apple store. An installer package &amp;lt;code&amp;gt;myapps.pkg&amp;lt;/code&amp;gt; and a disk image &amp;lt;code&amp;gt;myapps.dmg&amp;lt;/code&amp;gt; is also available from the innovaphone app store. Install &amp;lt;code&amp;gt;myapps.pkg&amp;lt;/code&amp;gt; by double-click on the file and follow the instructions of the installer. myApps becomes available in the Applications folder and can be opened by double-click. Or download and open &amp;lt;code&amp;gt;myapps.dmg&amp;lt;/code&amp;gt; and double klick myApps. If desired integrate it into the app dock by right click, &#039;&#039;Options, Keep in the dock&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If installed from the innovaphone app store, myApps can update itself automatically, see [[#Auto update|Auto update]] above.&lt;br /&gt;
&lt;br /&gt;
If installed from the Apple store, macOS notifies about updates on the Apple store. myApps [[#Auto update|Auto update]] is disabled then.&lt;br /&gt;
&lt;br /&gt;
If a clean-install of the client is necessary, the folder &amp;quot;/Users/username/Library/Containers/myapps&amp;quot; needs to be deleted. To be on the safe side also delete it from the trash bin.&lt;br /&gt;
&lt;br /&gt;
=== Configuration via MDM ===&lt;br /&gt;
&lt;br /&gt;
the PBX&#039;s server URL can be pre-configured by specifying this dictionary in the MDM&lt;br /&gt;
 &amp;lt;plist&amp;gt;&lt;br /&gt;
   &amp;lt;dict&amp;gt;&lt;br /&gt;
     &amp;lt;key&amp;gt;server&amp;lt;/key&amp;gt;&lt;br /&gt;
     &amp;lt;string&amp;gt;pbx.example.com&amp;lt;/string&amp;gt;&lt;br /&gt;
   &amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt;/plist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preferences ===&lt;br /&gt;
&lt;br /&gt;
macOS supports preference settings that can be set via a shell command or via Mac remote management&lt;br /&gt;
&lt;br /&gt;
 defaults write com.innovaphone.client-ios-14r1 server &amp;quot;PBX-server-URL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The following parameters and can be set through this method:&lt;br /&gt;
&lt;br /&gt;
; server: the PBX&#039;s server URL&lt;br /&gt;
&lt;br /&gt;
=== Setting myApps as Default App for SIP-URLs ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|defaults write com.apple.LaunchServices/com.apple.launchservices.secure LSHandlers -array-add &#039;{&lt;br /&gt;
   LSHandlerURLScheme = sip;&lt;br /&gt;
   LSHandlerRoleAll = &amp;quot;&amp;lt;CFBundleIdentifier&amp;gt;&amp;quot;;&lt;br /&gt;
}&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To find the “CFBundleIdentifier”, proceed as follows:&lt;br /&gt;
* In the Finder under “Applications”, search for the desired myApps client that you want to set as the default app.&lt;br /&gt;
* Right-click on “Show package contents” -&amp;gt; you will find the “CFBundleIdentifier” in the Info.plist file.&lt;br /&gt;
&lt;br /&gt;
A restart of the MAC is required.&lt;br /&gt;
&lt;br /&gt;
=== Using Sennheiser headsets ===&lt;br /&gt;
If you use Sennheiser headsets, you should also install the then-current &amp;lt;code&amp;gt;DSEA_SDK_v&amp;lt;/code&amp;gt;&#039;&#039;version&#039;&#039;&amp;lt;code&amp;gt;.pkg&amp;lt;/code&amp;gt; package, after you installed the myApps client.  Without that, audio will still work, but not the controls on the headset.  You will need to keep that up-to-date yourself, as it is not updated by myApps&#039;s auto-update function.&lt;br /&gt;
&lt;br /&gt;
== Android ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services are installed on Android by loading &#039;&#039;innovaphone myApps&#039;&#039; from the &#039;&#039;Play Store&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Configuration via MDM ===&lt;br /&gt;
&lt;br /&gt;
the PBX&#039;s server URL can be pre-configured by specifying a property &amp;quot;server&amp;quot; with string value &amp;quot;pbx.example.com&amp;quot; in the MDM.&lt;br /&gt;
&lt;br /&gt;
== IP270 ==&lt;br /&gt;
For configuration instructions, refer to the [[Reference16r1:Concept IP270&amp;amp;action=edit&amp;amp;redlink=1|IP270 concept article]].&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
&lt;br /&gt;
== Server configuration ==&lt;br /&gt;
When opening myApps for the first time, the user is prompted for the Server. Usually only the hostname (DNS host name or IP address) needs to be configured.&lt;br /&gt;
&lt;br /&gt;
But there are more options for special PBX configurations.&lt;br /&gt;
&lt;br /&gt;
; Non-standard HTTPS port&lt;br /&gt;
: If the PBX uses a non-standard HTTPS port, it must be appended to the host name separated by a colon (&amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;).&lt;br /&gt;
: Example: &amp;lt;code&amp;gt;pbx.example.com:4444&amp;lt;/code&amp;gt; (expands to &amp;lt;code&amp;gt;https://pbx.example.com:4444/PBX0/APPCLIENT/appclient.htm&amp;lt;/code&amp;gt;)&lt;br /&gt;
; DynPBX module name&lt;br /&gt;
: If the PBX is a DynPBX, the module id must be appended to PBX0 separated - (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;).&lt;br /&gt;
: Example: &amp;lt;code&amp;gt;pbx.example.com/PBX0-1&amp;lt;/code&amp;gt; (expands to &amp;lt;code&amp;gt;https://pbx.example.com/PBX0-1/APPCLIENT/appclient.htm&amp;lt;/code&amp;gt;)&lt;br /&gt;
; Softphone physical location&lt;br /&gt;
: If user defined physical location shall be used for softphone, you can append it using a parameter &amp;lt;code&amp;gt;#phys=&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Example: &amp;lt;code&amp;gt;pbx.example.com#phys=slave&amp;lt;/code&amp;gt; (expands to &amp;lt;code&amp;gt;https://pbx.example.com/PBX0/APPCLIENT/appclient.htm#phys=slave&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Example 1: PBX pbx.example.com with standard configuration&lt;br /&gt;
 pbx.example.com&lt;br /&gt;
&lt;br /&gt;
Example 2: PBX slave.example with DynPBX module ID 1, HTTPS port 4444 and physical location master&lt;br /&gt;
 slave.example.com:4444/PBX0-1#phys=master&lt;br /&gt;
&lt;br /&gt;
=== HTTP proxy support ===&lt;br /&gt;
&lt;br /&gt;
myApps platform services do support operation via HTTP proxy now. If one or more proxies have been configured in the network settings of the operating system for the active network connection, HTTP CONNECT tunnels are established.&lt;br /&gt;
&lt;br /&gt;
On Windows user name and password can be specified for the tunnel servers as generic credentials in the credentials manager (Anmeldeinformationsverwaltung). The name of the credentials must be the tunnel server hostname.&lt;br /&gt;
&lt;br /&gt;
On Android user name and password can be specified through Android &#039;&#039;Settings, Accounts&#039;&#039; by adding a myApps &#039;&#039;HTTP Proxy Credentials&#039;&#039; account. The name of the account must be the tunnel server hostname.&lt;br /&gt;
&lt;br /&gt;
== Platform specific settings ==&lt;br /&gt;
When myApps runs under the myApps platform services, it will show various platform specific settings as part of its &#039;&#039;burger menu&#039;&#039;, so the user can set them.  See &#039;&#039;Advanced settings&#039;&#039; in [[#UI elements|UI elements]] above.&lt;br /&gt;
&lt;br /&gt;
Some options can also be set globally for all myApps clients in the PBX&#039;s [[{{NAMESPACE}}:PBX/Config/myApps#Client_Settings|PBX/Config/myApps &#039;&#039;Client Settings&#039;&#039;]]&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Option&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Description&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Where to set&lt;br /&gt;
&lt;br /&gt;
!&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot;| Availability&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| || || User menu || PBX &#039;&#039;Client Settings&#039;&#039; || Windows || iOS || Android || macOS&lt;br /&gt;
|IP270&amp;lt;ref&amp;gt;myApps-IP270 offers device specific settings explained in [[Reference16r1:Concept IP270&amp;amp;action=edit&amp;amp;redlink=1|IP270 concept article]]&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Autostart || Launch myApps on login || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Appear offline after || controls after which idle time a user is considered &#039;&#039;inactive&#039;&#039;. See [[#User activity|User activity]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Hotkeys || Hotkeys for call dial, accept, reject. See [[#Hot keys|Hot keys]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Docking || Docking mode (left, right, none). See [[#???|??]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Desktop notifications|| Turn on/off platform notifications. See [[#Notifications|  Notifications]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| VPN || Disable VPN address for ICE candidate selection. See [[#RTP ports| RTP ports]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Show in taskbar|| Show myApps in the taskbar in addition to it&#039;s tray icon.  || &amp;amp;#10004; ||&amp;amp;#10007; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Log flags || turn on/off certain trace levels. See [[#Troubleshooting|Troubleshooting]] below.  || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10004;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| External applications || define the applications available for Apps to be started. See [[#Call an external application for calls|Call an external application for calls]] above.  || &amp;amp;#10004; ||&amp;amp;#10007; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Ring in headset || send ring tone for incoming to headset instead of loudspeaker.  || &amp;amp;#10004; ||&amp;amp;#10007; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start parameters for Windows ==&lt;br /&gt;
&lt;br /&gt;
On Windows, it is not possible to pass start parameters from the [https://www.chromium.org/developers Chromium documentation] to the myApps process.&lt;br /&gt;
&lt;br /&gt;
== OS Settings for Windows ==&lt;br /&gt;
Windows settings can influence the display of &#039;&#039;Desktop notifications&#039;&#039;. See [https://support.microsoft.com/en-us/help/4028678/windows-10-change-notification-settings Change notification settings in Windows 10/11] for details.&lt;br /&gt;
&lt;br /&gt;
=== Windows 11 ===&lt;br /&gt;
&lt;br /&gt;
* Windows 11 has a feature &amp;quot;do not disturb&amp;quot;. This hides notifications if enabled.&lt;br /&gt;
* Windows 11 has a feature &amp;quot;focus&amp;quot;. This enables &amp;quot;do not disturb&amp;quot; and thus hides notifications too.&lt;br /&gt;
* Windows 11 has priority settings for notifications. Ensure that VoIP notifications for calls are allowed any maybe also include myApps as an App which is allowed to show notifications.&lt;br /&gt;
&lt;br /&gt;
== OS settings for Android ==&lt;br /&gt;
; Events : The appearance of notifications can be controlled here.&lt;br /&gt;
&lt;br /&gt;
; Call accounts : For proper incoming call signaling, the call account &#039;&#039;myApps&#039;&#039; needs to be enabled. Note that on Samsung smartphones the call account switch likely toggles back and a few tries may need to be done until it persists. Please double-check the state.&lt;br /&gt;
&lt;br /&gt;
; Preferred Calling Account : Choose which calling account (myApps/SIM/..) should be used for outgoing calls initiated from within the native phone app / phone book.&lt;br /&gt;
&lt;br /&gt;
; Background data, unlimited data usage : Grant background data use to enable &#039;&#039;myApps&#039;&#039; to connect to the PBX immediately on an incoming call.&lt;br /&gt;
&lt;br /&gt;
; Overlaying : This setting is not needed if call account &#039;&#039;myApps&#039;&#039; has been enabled. Should there be a reason for not enabling call account &#039;&#039;myApps&#039;&#039;, the permission for overlaying needs to be granted on Android 10 or higher for proper call signaling.&lt;br /&gt;
&lt;br /&gt;
Note: If no SIM card is installed some Android smartphones exhibit a problem dialing from the smartphone contacts. The contacts app shows a choice &#039;&#039;Select SIM card for this call&#039;&#039; but all possible dialers are greyed out. In this case make myApps the default phone app in Android settings &#039;&#039;Apps, Default apps, Telephony&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== OS settings for iOS ==&lt;br /&gt;
; Notifications : The appearance of notifications can be controlled in iOS &#039;&#039;Settings, myApps&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== OS settings for macOS ==&lt;br /&gt;
&lt;br /&gt;
; Notifications : The appearance of notifications can be controlled in macOS &#039;&#039;Preferences, Notifications, myApps&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
myApps platform services can write various traces for debugging.  Trace can be turned on and off selectively in the [[#Advanced settings|Advanced settings]].&lt;br /&gt;
&lt;br /&gt;
The following trace flags can be set:&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;Recommended trace options are: &#039;&#039;&#039;App, Browser, ICE, TURN, Signaling and Audio&#039;&#039;&#039;. Please do not activate other flags unless innovaphone support says otherwise&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!style=&amp;quot;text-align: left; font-weight: bold&amp;quot; |  Abbreviation&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align: left; font-weight: bold&amp;quot; |code&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| App||0x000000001|| logs from the App Service itself&lt;br /&gt;
|-&lt;br /&gt;
| DNS||0x000000008|| logs DNS requests and results&lt;br /&gt;
|-&lt;br /&gt;
| HTTP client||0x000000080|| http client logs&lt;br /&gt;
|-&lt;br /&gt;
| TLS||0x000000400|| TLS logs&lt;br /&gt;
|-&lt;br /&gt;
| TCP||0x000000800|| TCP logs&lt;br /&gt;
|-&lt;br /&gt;
| LDS||0x000001000|| local domain sockets&lt;br /&gt;
|-&lt;br /&gt;
| WebSocket client||0x000004000|| logs outgoing websocket connections&lt;br /&gt;
|-&lt;br /&gt;
| App WebSocket||0x000008000|| logs app websocket connections (e.g. from PBX objects to an App Service or from the UI to the App Service)&lt;br /&gt;
|-&lt;br /&gt;
| UDP||0x000200000|| UDP logs&lt;br /&gt;
|-&lt;br /&gt;
| DTLS||0x000400000|| logs DTLS handshake and messages&lt;br /&gt;
|-&lt;br /&gt;
| Media||0x000800000|| logs media events&lt;br /&gt;
|-&lt;br /&gt;
| Media channel||0x001000000|| logs RTP/SCTP media connections&lt;br /&gt;
|-&lt;br /&gt;
| ICE||0x002000000|| logs ICE messages between peers&lt;br /&gt;
|-&lt;br /&gt;
| TURN||0x004000000|| logs TURN messages between peers&lt;br /&gt;
|-&lt;br /&gt;
| AppSharing||0x008000000|| logs AppSharing connection&lt;br /&gt;
|-&lt;br /&gt;
| Audio||0x010000000|| logs Audio connection and headset events&lt;br /&gt;
|-&lt;br /&gt;
| Video||0x020000000|| logs video connection and webcam events&lt;br /&gt;
|-&lt;br /&gt;
| Browser||0x040000000|| logs Chromium events&lt;br /&gt;
|-&lt;br /&gt;
| AppProxy||0x080000000|| logs requests which are proxied between the local webserver and the remote server&lt;br /&gt;
|-&lt;br /&gt;
| Webserver ||0x200000000|| enables webserver specific logs&lt;br /&gt;
|-&lt;br /&gt;
| Browser Console ||0x400000000|| logs browser console events&lt;br /&gt;
|-&lt;br /&gt;
| Signaling||0x800000000|| enables logs in the signaling module for debugging calls&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;code&#039;&#039; can be or&#039;ed and used as value for the &#039;&#039;Log flags&#039;&#039; field in [[{{NAMESPACE}}:PBX/Config/myApps#Client_Settings|PBX/Config/myApps/Client Settings]].&lt;br /&gt;
&lt;br /&gt;
; Windows :On Windows, traces are written to the &amp;lt;code&amp;gt;%LOCALAPPDATA%\innovaphone\myApps&amp;lt;/code&amp;gt; directory. If you start myApps with --log-size as parameter, you can define the maximum size of a log file (e.g. --log-size=100000000 would be 100MB for each file)&lt;br /&gt;
&lt;br /&gt;
:* myApps-&#039;&#039;date-time&#039;&#039;.txt : main log file for the platform services&lt;br /&gt;
&lt;br /&gt;
:* myAppsOutlookSearch-&#039;&#039;date-time&#039;&#039;.txt : log file for the Outlook phone book access&lt;br /&gt;
&lt;br /&gt;
:* myAppsHookController-&#039;&#039;date-time&#039;&#039;.txt : log file for the hot-key interceptor (see [[#Hot keys|Hot keys]])&lt;br /&gt;
&lt;br /&gt;
; :myApps update installation traces are written to the &amp;lt;code&amp;gt;%windir%\temp\&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
:* myAppsInstall.txt: MSI installation file&lt;br /&gt;
&lt;br /&gt;
; :myApps update service traces are written to the &amp;lt;code&amp;gt;%ProgramData%\innovaphone\myAppsUpdateService&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
:* myAppsUpdateService-&#039;&#039;date-time&#039;&#039;.txt: myApps update service traces&lt;br /&gt;
&lt;br /&gt;
;Android : traces can be sent by e-mail.&lt;br /&gt;
: also, an Android device might also be connected to a PC via an USB cable to get the traces. The files can be found in &amp;lt;code&amp;gt;Android/data/com.innovaphone.clientandroid/files&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; iOS : traces can be sent by e-mail.&lt;br /&gt;
&lt;br /&gt;
; macOS : traces can be sent by e-mail.&lt;br /&gt;
: also, the files can be found in &amp;lt;code&amp;gt;~/Library/Containers/com.innovaphone.client-ios/Data/Documents/&amp;lt;/code&amp;gt;. Press &#039;&#039;Alt+N&#039;&#039; followed by space to get tilde &#039;&#039;~&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
; IP270 : Refer to the [[Reference16r1:Concept IP270&amp;amp;action=edit&amp;amp;redlink=1#Troubleshooting|IP270 concept article section troubleshooting]].&lt;br /&gt;
&lt;br /&gt;
= Known Problems =&lt;br /&gt;
[[:Category:Problem myApps platform services|Known Problems]]&lt;br /&gt;
&lt;br /&gt;
= Related Articles =&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myApps]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myApps_Redundancy|Concept myApps Redundancy]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myApps_Office_Integration|Concept myApps Office Integration]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myAPPs_Search_in_local-Outlook_Contacts|Concept myAPPs Search in local Outlook Contacts]]&lt;br /&gt;
* [[{{NAMESPACE}}:Call_Detail_Record_CDR_PBX|Call Detail Records]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept Push Notifications for myPBX iOS and Android|Concept Push Notifications for myPBX iOS and Android]]&lt;br /&gt;
* [[Howto:Troubleshoot v13 Push with myApps for Android and iOS]]&lt;br /&gt;
* [[{{NAMESPACE}}:PBX/Config/myApps|Reference16r1:PBX/Config/myApps]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_IP270|IP270 concept article]]&lt;br /&gt;
[[Category:Concept myApps platform services]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_myApps_platform_services&amp;diff=78879</id>
		<title>Reference16r1:Concept myApps platform services</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_myApps_platform_services&amp;diff=78879"/>
		<updated>2026-02-10T12:33:48Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* myApps for iOS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps]]&lt;br /&gt;
&lt;br /&gt;
myApps platform services provide various operating system specific services which can be used by other &#039;&#039;Apps&#039;&#039; running in the [[{{NAMESPACE}}:Concept myApps|myApps client]]. Those services typically are not available in the browser&#039;s JavaScript environment and hence must be implemented in native platform code. Therefore, the platform services are installed as native executable on the respective platform.&lt;br /&gt;
&lt;br /&gt;
When myApps is started in a web browser (and hence has no access to the platform services), some Apps will use [https://en.wikipedia.org/wiki/WebRTC WebRTC] services implemented by the browser instead.  For ease of reference, features available in this scenario are also described here.&lt;br /&gt;
&lt;br /&gt;
On windows, the platform services also come with their own web browser in which the myApps web App will be started then.  This browser is based on google&#039;s [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium] open source software.&lt;br /&gt;
= Applies To =&lt;br /&gt;
&lt;br /&gt;
* [[{{NAMESPACE}}:Concept myApps|myApps]]&lt;br /&gt;
* myApps for Windows&lt;br /&gt;
* myApps for macOS&lt;br /&gt;
* myApps for iOS&lt;br /&gt;
* myApps for Android&lt;br /&gt;
* myApps Web App (WebRTC)&lt;br /&gt;
* myApps for IP270&lt;br /&gt;
version 16r1&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
Not all features are available or required on all platforms.&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot;| Availability&lt;br /&gt;
|-&lt;br /&gt;
| || || Windows || iOS || Android || macOS || Browser&amp;lt;ref&amp;gt;This refers to the myApps web application running in a browser with no platform services available&amp;lt;/ref&amp;gt;&lt;br /&gt;
|IP270&lt;br /&gt;
|-&lt;br /&gt;
| [[#Device handling|Audio Devices]] || manage local audio devices to record and playback audio conversations || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; (audio available but devices managed by web browser) || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Video || manage local displays and cameras to capture and render video live stream || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; (video available but devices managed by web browser) || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Ringer || manage local ringing device || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Application sharing|Application sharing]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; presenter || share an application || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; consumer  || view an application shared by the peer || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Hot keys|Hot keys]] || capture key presses for quick invocation of phone apps (e.g. dial selected number) || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#URL Handler|tel: and sip: URI handler]] || intercept clicks on tel: and sip: links in web sites to invoke phone apps || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#User activity|User activity]] || set presence state according to user activity ||  &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004;&amp;lt;ref&amp;gt;limited, see [[#User activity|User activity]] below&amp;lt;/ref&amp;gt; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Docking || myApps can be docked persistently to the right or left edge of your screens ||  &amp;amp;#10004;  || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Multi-windowing || Apps can be launched in separate windows||  &amp;amp;#10004;  || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Recording|Recording]] || Calls can be recorded to recording app||  &amp;amp;#10004;  || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Notifications|Notifications]] || ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; display notifications || display notifications with OS standard mechanism ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; push notifications || receive push notifications while myApps is not running  ||  &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&amp;lt;ref&amp;gt;The browser needs to be running in order to receive push notifications.&amp;lt;/ref&amp;gt; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; chat and apps || display notifications for chat and other apps  ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; calls || display notifications for incoming calls  ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&amp;lt;ref&amp;gt;Call notifications are only displayed locally while the phone or softphone app is started.&amp;lt;/ref&amp;gt; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Local phonebook access|Local phonebook]] || access local phone book ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Microsoft Office Integration|Office presence provider]] || maps PBX presence state to Microsoft office presence state ||  &amp;amp;#10004;  || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Call an external application for calls|External application start]] || start arbitrary external applications for calls || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#App Proxy|App Proxy]]|| a caching proxy that provides app persistence  || &amp;amp;#10004;  || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Auto update|Auto update]] || automatically updates myApps platform services to the same version the PBX has || &amp;amp;#10004;  || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004;&amp;lt;ref&amp;gt;The then-current web app is always loaded from the PBX upon startup and hence up-to-date by definition&amp;lt;/ref&amp;gt; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Three party conference || initiate 3-pty-conference using Softphone-App || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Exclude VPN || disable use of VPN connections for audio and appsharing || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Screen lock || myApps screen lock against unauthorised use || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
* innovaphone PBX 16r1 and up&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Recommended hardware requirements&lt;br /&gt;
* Processor: Dual-core 2Ghz or higher&lt;br /&gt;
* RAM: 4 Gb&lt;br /&gt;
&lt;br /&gt;
== myApps for Windows ==&lt;br /&gt;
* Windows 11 and up&lt;br /&gt;
* Windows Server 2016 and later versions&lt;br /&gt;
&lt;br /&gt;
=== 32 &amp;amp; 64 bit Windows ===&lt;br /&gt;
* 32 bit Windows: install the myAppsSetup32.msi from the App Store&lt;br /&gt;
* 64 bit Windows: install the myAppsSetup.msi from the App Store&lt;br /&gt;
** the 64 bit variant still installs into Program Files (x86), as the main myApps.exe is still a 32bit application&lt;br /&gt;
** the 64 bit variant just contains an additional 64 bit binary for the outlook search&lt;br /&gt;
&lt;br /&gt;
=== Windows N editions ===&lt;br /&gt;
&lt;br /&gt;
Windows N editions are missing the &#039;&#039;Media Feature Pack&#039;&#039; which is pre installed on other Windows versions.&lt;br /&gt;
&lt;br /&gt;
Please install the pack from [https://www.microsoft.com/en-us/software-download/mediafeaturepack Microsoft (Windows 10 pack)] before you install myApps. The installer will check if the file &amp;lt;code&amp;gt;C:\Windows\SysWOW64\mfplat.dll&amp;lt;/code&amp;gt; exist on your system.&lt;br /&gt;
&lt;br /&gt;
Make sure to install the correct pack depending on your Windows version! There are different packs for Windows 10 1703, 1803, 1809 and 32bit or 64bit etc.&lt;br /&gt;
&lt;br /&gt;
NB: Sometimes the myApps installation will not work even though the media pack is already installed. This is because the installer has no read access to check if the package is already installed. If the above-mentioned file exists and the installer asks to install the Windows Media Feature Pack nevertheless, you have to start the myApps install with administrative rights.&lt;br /&gt;
&lt;br /&gt;
=== Terminal Server environments ===&lt;br /&gt;
&lt;br /&gt;
Audio driver was removed if myApps discovers that it is running in a terminal server environment like Citrix.&lt;br /&gt;
&lt;br /&gt;
The audio driver is needed for the Softphone App but the Softphone App should not use an audio driver at the server side because the audio devices are plugged locally and there would be a delay sending and receiving audio data with the server.&lt;br /&gt;
&lt;br /&gt;
If a customer wants to use the Softphone App at the server side he needs to make use of the myApps Plugin for virtual desktops solution:&lt;br /&gt;
&lt;br /&gt;
[[{{NAMESPACE}}:MyApps_Plugin_for_Virtual_Desktops|Reference15r1:MyApps_Plugin_for_Virtual_Desktops]]&lt;br /&gt;
&lt;br /&gt;
== myApps for macOS ==&lt;br /&gt;
* macOS 13 or higher&lt;br /&gt;
&lt;br /&gt;
== myApps for iOS ==&lt;br /&gt;
* iOS 16 or higher&lt;br /&gt;
&lt;br /&gt;
== myApps for Android ==&lt;br /&gt;
* Android 6.0 or higher. Android 6.x may need an update of the Chrome browser.&lt;br /&gt;
== myApps for IP270 ==&lt;br /&gt;
Exclusively used in IP270 with Yocto-based Linux distribution.&lt;br /&gt;
&lt;br /&gt;
= Licenses =&lt;br /&gt;
* No license needed for myApps platform services&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
myApps platform services is a native executable that is installed using the standard mechanisms on the respective operating system. It provides various advanced services which can be used by the myApps web client code as well as the Apps running in the myApps context. &lt;br /&gt;
&lt;br /&gt;
Also, on Windows, the platform services come with their own, dedicated browser to run myApps in.  This browser is based on [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium].  On iOS, macOS and Android, it is based upon native embedded web view facilities (such as WKWebView) instead.&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
=== RTP service for audio and appsharing ===&lt;br /&gt;
The RTP service provides audio and appsharing as a video stream. VoIP RTP endpoints (e.g. for softphones).  It supports STUN, TURN, ICE, SRTP, DTLS. Note however that unlike WebRTC, these endpoints do not &#039;&#039;require&#039;&#039; ICE and DTLS. In other words, they can communicate also with non-compliant (i.e. older) VoIP devices.&lt;br /&gt;
&lt;br /&gt;
Note that the available capabilities when not running the myApps platform services depend on the used browser&#039;s WebRTC implementation. See your browser documentation for details.&lt;br /&gt;
&lt;br /&gt;
Apps can request RTP channels using the [https://sdk.innovaphone.com/doc/launcher/Media.htm Media Protocol]&#039;s &#039;&#039;AllocChannel&#039;&#039; message.&lt;br /&gt;
&lt;br /&gt;
==== RTP ports ====&lt;br /&gt;
{|&lt;br /&gt;
|  audio || 50000 -&amp;gt; 50099&lt;br /&gt;
|-&lt;br /&gt;
| video (app sharing) || 50100 -&amp;gt; 50199&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The RTP service will enumerate all local interfaces and create local HOST candidates for ICE.  There is an option however to disregard VPN interfaces (more precisely such interfaces with type of &#039;&#039;IF_TYPE_PPP&#039;&#039; or &#039;&#039;IF_TYPE_TUNNEL&#039;&#039;).  This can eliminate quality issues when RTP data is transmitted through TCP based VPN tunnels.&lt;br /&gt;
&lt;br /&gt;
SRFLX and RELAY candidates are obtained using the STUN and TURN server configuration passed by the App (e.g the &#039;&#039;softphone&#039;&#039; App) as part of the &#039;&#039;AllocChannel&#039;&#039; request.&lt;br /&gt;
&amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;AllocChannel&amp;quot;,&amp;quot;channel&amp;quot;:&amp;quot;81429cba-396d-43de-8a76-ec020ba8796e&amp;quot;,&amp;quot;iceServers&amp;quot;:[{&amp;quot;urls&amp;quot;:&amp;quot;turn:myturn.domaincom:4077?transport=udp&amp;quot;,&amp;quot;username&amp;quot;:&amp;quot;turnuser&amp;quot;,&amp;quot;credential&amp;quot;:&amp;quot;pwd&amp;quot;,&amp;quot;credentialType&amp;quot;:&amp;quot;password&amp;quot;},{&amp;quot;urls&amp;quot;:&amp;quot;stun:mystun.domain.com:4077&amp;quot;}],&amp;quot;dn&amp;quot;:&amp;quot;Foo Bar&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;RemoteRtp&amp;quot;,&amp;quot;kind&amp;quot;:&amp;quot;video&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Codecs ====&lt;br /&gt;
The installed myApps launchers provide codecs that can be used by softphone apps for media streams. When running in a web browser the codecs depend on the browser version and operating system. See the documentation of your browser for details.&lt;br /&gt;
&lt;br /&gt;
The following codecs are supported:&lt;br /&gt;
{|&lt;br /&gt;
!style=&amp;quot;text-align:left;width:100px;&amp;quot;|Codec&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Windows-Launcher&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Android&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|iOS&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|macOS&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Firefox (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Chrome (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Edge (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Safari (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Opera (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|IP270&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:left; background-color:lightgray&amp;quot; colspan=&amp;quot;11&amp;quot;|Audio&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|G711A&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|G711u&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|G722&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=Opus OPUS-NB]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=Opus OPUS-WB]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;11&amp;quot; style=&amp;quot;text-align:left; background-color:lightgray&amp;quot; |Video&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=VP8 VP8]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=VP9 VP9]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=H264 H264]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:left; background-color:lightgray&amp;quot; colspan=&amp;quot;11&amp;quot;|Application Sharing&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Share&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|-&lt;br /&gt;
|Watch&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔*&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔*&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔*&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;* small presentation only&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;** only for 1:1 calls, not for conferences&lt;br /&gt;
&lt;br /&gt;
==== Video capture ====&lt;br /&gt;
The default resolution for video capture is 1920x1080 if available.  Otherwise, 1280x720, 640x480, 352x288 or 320x240 will be used.  The frame rate is 30 fps if available, otherwise 15 fps. The resulting average bandwidth could reach 1 Mbps.&lt;br /&gt;
&lt;br /&gt;
==== Application sharing ====&lt;br /&gt;
Screen content will be transmitted as video stream by the presenter&lt;br /&gt;
&lt;br /&gt;
==== Device handling ====&lt;br /&gt;
The RTP service enumerates microphones, loudspeaker, cameras and ringing devices and notifies apps when devices come and go. It is up to the apps using the devices to store preferences.&lt;br /&gt;
&lt;br /&gt;
The RTP service also enables some extended features (such as hook switch or volume control) for supported USB headsets or Bluetooth headsets connected to myApps.&lt;br /&gt;
The supported headset-SDKs determine which headset vendors are recommended to be used with the myApps softphone app. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this to work, the following vendor specific development kits are integrated in our myApps client. Be aware that the SDK are updated within our Service release :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SDK Vendor !! Supported OS !! SDK Version !! innovaphone Service Release&lt;br /&gt;
|-&lt;br /&gt;
| Jabra|| MacOS || 1.12.2.0 || 13r3sr9&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || 1.12.2.0 || 13r3sr10&lt;br /&gt;
|-&lt;br /&gt;
| Epos &#039;&#039;(formerly Sennheiser)&#039;&#039; || MacOS || 12.4.0.5478 || 14r1sr3&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || n.a. - [[Support:13r3 sr10 MyApps Windows Client - Epos/Sennheiser-Headsets require installed Epos-Connect Software|to be installed separately]]|| 13r3sr10&lt;br /&gt;
|-&lt;br /&gt;
| Poly &#039;&#039;(formerly Plantronics)&#039;&#039; || MacOS || 3.25.53799.37131 || 13r3sr9&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || 3.25.53800.37131 || 13r3sr10&lt;br /&gt;
|-&lt;br /&gt;
| Yealink || MacOS || 3.1.1.20 || 14r1sr3&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || 3.1.1.20 || 14r1sr3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* It is possible to inhibit the start of the Sennheiser SDK (SenncomSDK.exe) using the &amp;lt;code&amp;gt;DISABLEHEADSETS&amp;lt;/code&amp;gt; directive of the installer (see [[#MSI Parameters and install options|  MSI parameters]]  below).&lt;br /&gt;
&lt;br /&gt;
* Starting with V13r3sr10, the Epos-SDK needs to be installed separately using the Epos Connect software to ensure full compatibility between current Epos headset models and native myApps-Windows client. For details [[Support:13r3 sr10 MyApps Windows Client - Epos/Sennheiser-Headsets require installed Epos-Connect Software|refer to this article]].&lt;br /&gt;
&amp;lt;!--Keywords: myapps softphone supported headsets sdk--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
myApps-IP270 supports use of [[Reference9:Concept USB Headset|USB devices known for innovpahone desk phones]].&lt;br /&gt;
&lt;br /&gt;
==== Ring tones ====&lt;br /&gt;
Ring tones can be played. Apps can choose the tone from a pre-defined list of ring tones.&lt;br /&gt;
&lt;br /&gt;
On Windows, custom ring tones can be uploaded as .mp3 files to the &amp;lt;code&amp;gt;ringtones&amp;lt;/code&amp;gt; sub-directory of myApps&#039; roaming directory (which usually is in &amp;lt;code&amp;gt;%appdata%\innovaphone\myApps\ringtones&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
On Android, custom ring tones can be added to the system via Android settings.&lt;br /&gt;
&lt;br /&gt;
On iOS, custom ring tones can be uploaded as .mp3 files to the &amp;lt;code&amp;gt;Ringtones&amp;lt;/code&amp;gt; subdirectory of the myApps file share that is available in iTunes if the iPhone has been connected via USB.&lt;br /&gt;
&lt;br /&gt;
On macOS, custom ring tones can be uploaded as .mp3 files to &amp;lt;code&amp;gt;~/Library/Containers/com.innovaphone.client-macos/Data/Documents/Ringtones&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Debugging ====&lt;br /&gt;
For extended debugging, turn on the &#039;&#039;Audio&#039;&#039;, &#039;&#039;Media&#039;&#039; and &#039;&#039;AppSharing&#039;&#039; traces in myApps.&lt;br /&gt;
=== Hot keys ===&lt;br /&gt;
On Windows and macOS systems, myApps platform services can listen for hot keys and invoke certain functions. Invocation is done by sending API messages to myApps which passes it to an appropriate API provider (in the cases described here, this will be a &#039;&#039;phone&#039;&#039; or &#039;&#039;softphone&#039;&#039; or &#039;&#039;rcc&#039;&#039; App typically.  See [[{{NAMESPACE}}:Concept_myApps#Client_APIs_and_default_apps | Client APIs and default apps]] for more details about this mechanism.&lt;br /&gt;
&lt;br /&gt;
The hot keys can be specified using the &#039;&#039;advanced settings&#039;&#039; user interface (see [[#UI elements| UI elements]] below. Any of the function keys F1 to F11 (optionally combined with up to two modifier keys &#039;&#039;alt&#039;&#039;, &#039;&#039;ctrl&#039;&#039;, &#039;&#039;shift&#039;&#039; or &#039;&#039;win&#039;&#039;) can be chosen for each function. If you do not want to start the call with &amp;quot;Hotkey+Enter&amp;quot; because you would have to wait for the focus, the hotkey can also be pressed twice and the number is dialled directly.&lt;br /&gt;
&lt;br /&gt;
; dial selected number : Initiates a call using the currently selected text as target.&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;PrepareCall&#039;&#039; message with the &#039;&#039;text&#039;&#039; argument set to the selected text and the &#039;&#039;adjust&#039;&#039; argument set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:&amp;quot;mt&amp;quot;:&amp;quot;PrepareCall&amp;quot;,&amp;quot;text&amp;quot;:&amp;quot;13&amp;quot;,&amp;quot;adjust&amp;quot;:true}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; accept call : Accepts a currently alerting call.&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;ConnectCall&#039;&#039; message will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;ConnectCall&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; reject/disconnect call : Rejects a currently alerting call or disconnects an active call.&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;DisconnectCall&#039;&#039; message will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;DisconnectCall&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== URL Handler ===&lt;br /&gt;
&lt;br /&gt;
On Windows systems, two URI-handler are installed with the myApps platform services.  Windows will call up this URI handler when a user clicks on an appropriate link, for example in a web site.&lt;br /&gt;
&lt;br /&gt;
The handler will the send an API message to myApps which passes it to an appropriate API provider (in the cases described here, this will be a &#039;&#039;phone&#039;&#039; or &#039;&#039;softphone&#039;&#039; or &#039;&#039;rcc&#039;&#039; App typically.  See [[{{NAMESPACE}}:Concept_myApps#Client_APIs_and_default_apps | Client APIs and default apps]] for more details about this mechanism.&lt;br /&gt;
&lt;br /&gt;
; tel URI : call a number, e.g. &amp;lt;code&amp;gt;tel:4711&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;PrepareCall&#039;&#039; message with the &#039;&#039;num&#039;&#039; argument set to the selected text and the &#039;&#039;adjust&#039;&#039; argument set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;StartCall&amp;quot;,&amp;quot;num&amp;quot;:&amp;quot;4711&amp;quot;,&amp;quot;adjust&amp;quot;:true}}&amp;lt;/code&amp;gt;&lt;br /&gt;
; sip URI : call a SIP name, e.g. &amp;lt;code&amp;gt;sip:zkl@innovaphone.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;PrepareCall&#039;&#039; message with the &#039;&#039;sip&#039;&#039; argument set to the selected text and the &#039;&#039;adjust&#039;&#039; argument set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;StartCall&amp;quot;,&amp;quot;sip&amp;quot;:&amp;quot;zkl@innovaphone.com&amp;quot;,&amp;quot;adjust&amp;quot;:true}}&amp;lt;/code&amp;gt;&lt;br /&gt;
; im URI : start chat with SIP name, e.g. &amp;lt;code&amp;gt;im:zkl@innovaphone.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;StartChat&#039;&#039; message with the &#039;&#039;sip&#039;&#039; argument set to the selected text will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.chat/com.innovaphone.chat.htm &#039;&#039;com.innovaphone.chat&#039;&#039; API].&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.chat&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;StartChat&amp;quot;,&amp;quot;sip&amp;quot;:&amp;quot;zkl@innovaphone.com&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On macOS systems myApps might be made the default application to handle tel URI e.g. &amp;lt;code&amp;gt;tel:4711&amp;lt;/code&amp;gt; via Apple FaceTime. Open the &amp;quot;FaceTime&amp;quot; menu &amp;quot;Settings...&amp;quot; and select myApps as &amp;quot;Default for phone calls&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
On iOS &#039;&#039;tel&#039;&#039; URIs are always dialed via GSM. Therefore myApps iOS also reacts to URI schemes &#039;&#039;com.innovaphone.tel&#039;&#039;, &#039;&#039;com.innovaphone.sip&#039;&#039; and &#039;&#039;com.innovaphone.im&#039;&#039;, e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;com.innovaphone.tel:4711&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;com.innovaphone.sip:zkl@innovaphone.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;com.innovaphone.im:zkl@innovaphone.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== User activity ===&lt;br /&gt;
On Windows and macOS systems, the myApps platform services can monitor user keyboard/mouse activity and change the user&#039;s presence state after a certain amount of inactivity.  The timeout can be specified using the &#039;&#039;advanced settings&#039;&#039; user interface (see [[#UI elements| UI elements]] below.&lt;br /&gt;
&lt;br /&gt;
myApps will then send a [https://sdk.innovaphone.com/doc/appwebsocket/myApps.htm#SetUserActivity&#039;&#039;SetUserActivity&#039;&#039;] message to the PBX using the &#039;&#039;myApps&#039;&#039; protocol.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;SetUserActivity&amp;quot;,&amp;quot;inactive&amp;quot;:true}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will change the &#039;&#039;status&#039;&#039; property of the &#039;&#039;im:&#039;&#039; contact for the user&#039;s own presence and hence result in a presence update from the PBX to myApps&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;UpdateOwnPresence&amp;quot;,&amp;quot;presence&amp;quot;:[{...},{&amp;quot;contact&amp;quot;:&amp;quot;im:&amp;quot;,&amp;quot;activity&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;status&amp;quot;:&amp;quot;closed&amp;quot;}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
The &#039;&#039;closed&#039;&#039; status is reflected in the grey status color when displaying a contact [[Image:myapps-inactive.png|myapps-inactive.png/|myapps-inactive.png/]].&lt;br /&gt;
&lt;br /&gt;
On iOS and Android, the state is set to &#039;&#039;inactive&#039;&#039; as soon as the App is brought to background.&lt;br /&gt;
When myApps platform services are not available (i.e. when running the web application in a browser solely) a limited user activity monitoring is available: the state is set to active when the web page is not used for more than 5 minutes.&lt;br /&gt;
&lt;br /&gt;
=== Recording ===&lt;br /&gt;
&lt;br /&gt;
The new launcher offers the possibility to record the audio of incoming and outgoing calls. In order to activate that functionality the URL of the recording instance must be configured in either the PBX (PBX-&amp;gt;myApps-&amp;gt;Config: Recording URL) or the softphone App (Settings-&amp;gt;Audio Recording (URL)) &lt;br /&gt;
&lt;br /&gt;
[[Image:PBX-Recording-Settings.png|pbx-recording-settings.png/|pbx-recording-settings.png/]] [[Image:Recording-Softphone-Settings.png|recording-softphone-settings.png/|recording-softphone-settings.png/]]. &lt;br /&gt;
&lt;br /&gt;
As long as that URL is configured the audio data of all calls are stored as pcap-files under that URL.&lt;br /&gt;
If the URL points to a CF device in the PBX, write access must be granted for that URL (PBX-&amp;gt;Services-&amp;gt;HTTP-&amp;gt;Server:Public compact flash access) and if the URL points to the recording app, the files can be accessed via the recording app [[{{NAMESPACE}}:Concept_App_Service_Recordings|recording]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Under PBX-&amp;gt;myApps the administrator can set a certain default behaviour of the audio recording like whether or not the recording should start automatically at the beginning of the call (Recording by Default ON/OFF), only calls with external numbers should be recorded (Record external calls only) or whether or not the user should be able to start/stop the recording himself (Allow user incall recording control). Except for the last parameter these parameters can also be modified by the user in its softphone settings if the administrator doesn&#039;t set the FORCE flag.&lt;br /&gt;
&lt;br /&gt;
If the user was allowed by the admin to control the recording a recording switch is active during the call when the &amp;quot;Media&amp;quot; Panel is opened. There the audio recording may be stopped and continued at will. A red recording notice is shown in the top right corner when the recording actually takes place.&lt;br /&gt;
 &lt;br /&gt;
[[Image:Recording-incall-switch.png|recording-incall-switch.png/|recording-incall-switch.png/]]&lt;br /&gt;
&lt;br /&gt;
=== Notifications ===&lt;br /&gt;
&lt;br /&gt;
The myApps platform services can use the OS specific notification mechanism (e.g. &#039;&#039;desktop notifications&#039;&#039; on Windows) to display messages (e.g. &#039;&#039;incoming new chat message&#039;&#039;) to the user.&lt;br /&gt;
&lt;br /&gt;
Note that the actual rendering of the notification is under control of the OS.  Therefore, myApps must be allowed to show notifications and its appearance can be restricted by OS native settings.&lt;br /&gt;
&lt;br /&gt;
==== Microsoft Windows Notifications ====&lt;br /&gt;
&lt;br /&gt;
Microsoft Windows Server editions (2016, 2019, 2022) are just capable of showing a single &#039;&#039;IncomingCall&#039;&#039; notification at the same time (we couldn&#039;t find a workaround for this limitation).&amp;lt;br/&amp;gt;&lt;br /&gt;
An &#039;&#039;IncomingCall&#039;&#039; notification is visible the whole time instead of being moved to the action center after a certain time.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
A notification about a missed call uses the &#039;&#039;IncomingCall&#039;&#039; type so that this notification is visible until the user returns.&amp;lt;br/&amp;gt;&lt;br /&gt;
Due to the above limitation, on a new arriving call such a missed call notification is transformed to a default notification which will be moved to the action center automatically.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
On non server editions, you can have multiple IncomingCall notifications at the same time (so two parallel incoming calls will be indeed notified at the same time), but the missed call notification handling is the same on both platforms!&lt;br /&gt;
&lt;br /&gt;
 Thus there will be always just &#039;&#039;&#039;one&#039;&#039;&#039; missed call notification visible and previous missed calls can be found inside your action center!&lt;br /&gt;
&lt;br /&gt;
To see myApps notifications, ensure:&lt;br /&gt;
* System -&amp;gt; Notifications &lt;br /&gt;
** enable notifications&lt;br /&gt;
** disable &amp;quot;Do not disturb&amp;quot; or allow myApps as priority application while &amp;quot;Do not disturb&amp;quot; is active&lt;br /&gt;
** enable notifications for myApps in the list of applications&lt;br /&gt;
* System -&amp;gt; Focus &lt;br /&gt;
** if a focus session is active and the &amp;quot;Do not disturb&amp;quot; is activated during a focus session, make sure that myApps is a priority application (see above)&lt;br /&gt;
&lt;br /&gt;
==== macOS Notifications ====&lt;br /&gt;
Notifications are the same as on Windows.&lt;br /&gt;
The difference is, that for macOS, notifications need to be allowed in the system settings.&lt;br /&gt;
Go to Notifications - myApps, select Banner and enable all check marks.&lt;br /&gt;
&lt;br /&gt;
=== Local phonebook access ===&lt;br /&gt;
&#039;&#039;&#039;Contact Search:&#039;&#039;&#039; The myApps platform services implement an &#039;&#039;API provider&#039;&#039; for the [http://sdk.innovaphone.com/web1/com.innovaphone.search/lib1_api_search.htm &#039;&#039;com.innovaphone.search&#039;&#039; API]]. They perform search capabilities on the OS&#039; local phone books which can be used by Apps like the &#039;&#039;phoneapp&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Apps would send a &#039;&#039;Search&#039;&#039; request to the API:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;*&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;4&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;Search&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;contact&amp;quot;,&amp;quot;search&amp;quot;:&amp;quot;john doe&amp;quot;},&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.search&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
Search results are delivered as &#039;&#039;SearchInfo&#039;&#039; messages:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiResult&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;3&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;@local-8125d22e37-519d-4056-bfe5-c52ef2ae8fabb0&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;client&amp;quot;:&amp;quot;@client-f62702dd86-be3f-47fc-b4bc-7a21627b75b2ea&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;SearchInfo&amp;quot;,&amp;quot;relevance&amp;quot;:2000,&amp;quot;adjust&amp;quot;:true,&amp;quot;type&amp;quot;:&amp;quot;contact&amp;quot;,&amp;quot;contact&amp;quot;:{&amp;quot;givenname&amp;quot;:&amp;quot;John&amp;quot;,&amp;quot;sn&amp;quot;:&amp;quot;Doe&amp;quot;,&amp;quot;company&amp;quot;:&amp;quot;ACME&amp;quot;,&amp;quot;position&amp;quot;:&amp;quot;Head of everything&amp;quot;,&amp;quot;telephonenumber&amp;quot;:[&amp;quot;11111&amp;quot;,&amp;quot;22222&amp;quot;],&amp;quot;homephone&amp;quot;:[&amp;quot;+4944444&amp;quot;,&amp;quot;33333&amp;quot;],&amp;quot;mobile&amp;quot;:[&amp;quot;+49 (123) 55555&amp;quot;]}},&amp;quot;api&amp;quot;:&amp;quot;com.innovaphone.search&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reverse Lookup:&#039;&#039;&#039; The myApps platform services implement an &#039;&#039;API provider&#039;&#039; for the [http://sdk.innovaphone.com/web1/com.innovaphone.phonelookup/lib1_api_phonelookup.htm &#039;&#039;com.innovaphone.phonelookup&#039;&#039; API]. They perform search capabilities on the OS&#039; local phone books which can be used by Apps like the &#039;&#039;phoneapp&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Apps would send a &#039;&#039;Lookup&#039;&#039; request to the API: &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;*&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;4&amp;quot;,&amp;quot;msg&amp;quot;:{ mt: &amp;quot;Lookup&amp;quot;, prefixIntl: &amp;quot;000&amp;quot;, prefixNtl: &amp;quot;00&amp;quot;, prefixExt:&amp;quot;0&amp;quot;, area: &amp;quot;7031&amp;quot;, country: &amp;quot;49&amp;quot;, lookup: &amp;quot;0004970311234567&amp;quot; },&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.lookup&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Search results are delivered as &#039;&#039;LookupInfo&#039;&#039; messages:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiResult&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;3&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;@local-8125d22e37-519d-4056-bfe5-c52ef2ae8fabb0&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;client&amp;quot;:&amp;quot;@client-f62702dd86-be3f-47fc-b4bc-7a21627b75b2ea&amp;quot;,&amp;quot;msg&amp;quot;:{mt: &amp;quot;LookupInfo&amp;quot;, dn: &amp;quot;Jake Blues&amp;quot;, contact: { telephonenumber: [&amp;quot;0004970311234567&amp;quot;], givenname: &amp;quot;Jake&amp;quot;, sn: &amp;quot;Blues&amp;quot;, company: &amp;quot;Blues Brothers&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Windows ====&lt;br /&gt;
On Windows, the search and lookup are performed in all of the user&#039;s Outlook contact folders.  As opposed to the search implemented in the &#039;&#039;Contacts&#039;&#039; and &#039;&#039;Users&#039;&#039; App, all items are returned which match any of the search words (i.e. searching for &#039;&#039;a b&#039;&#039; will return items matching either &#039;&#039;a&#039;&#039; or &#039;&#039;b&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
; searched properties : firstname, lastname&lt;br /&gt;
; returned properties : Following Outlook contact phone number properties are returned  (if available):&lt;br /&gt;
&lt;br /&gt;
:* OFFICE_TELEPHONE_NUMBER as &#039;&#039;telephonenumber&#039;&#039;&lt;br /&gt;
:* OFFICE2_TELEPHONE_NUMBER as &#039;&#039;telephonenumber&#039;&#039;&lt;br /&gt;
:* HOME_TELEPHONE_NUMBER as &#039;&#039;homephone&#039;&#039;&lt;br /&gt;
:* HOME2_TELEPHONE_NUMBER as &#039;&#039;homephone&#039;&#039;&lt;br /&gt;
:* MOBILE_TELEPHONE_NUMBER as &#039;&#039;mobile&#039;&#039;&lt;br /&gt;
:* BUSINESS_FAX_NUMBER as &#039;&#039;facsimiletelephonenumber&#039;&#039;&lt;br /&gt;
Note that contact information is cached in the search provider.  Updated contacts may therefore become effective after a while only.&lt;br /&gt;
Outlook search will create its own trace file &amp;lt;code&amp;gt;myAppsOutlookSearch-&amp;lt;/code&amp;gt;&#039;&#039;date-time&#039;&#039;&amp;lt;code&amp;gt;.txt&amp;lt;/code&amp;gt; in the standard trace directory.&lt;br /&gt;
&lt;br /&gt;
This search provider is always installed and can be disabled.  There is no need (nor possibility) to enable it in the &#039;&#039;Apps&#039;&#039; tab of the PBX&#039;s user object.  Also, no &#039;&#039;App&#039;&#039; object needs to be created for it.&lt;br /&gt;
&lt;br /&gt;
==== Android/iOS ====&lt;br /&gt;
The search and lookup are performed in the contacts.&lt;br /&gt;
&lt;br /&gt;
==== macOS ====&lt;br /&gt;
The search and lookup are performed in the contacts. If you wish to disable local contact lookup, go to system settings - Security &amp;amp; Privacy and disable the access to contacts for myapps.&lt;br /&gt;
=== Microsoft Office integration ===&lt;br /&gt;
&lt;br /&gt;
The myApps platform services has a &#039;&#039;office presence provider&#039;&#039; that can provide the user&#039;s presence state to Office applications.  See [[{{NAMESPACE}}:Concept_myApps_Office_Integration|myApps Office Integration]] for details.&lt;br /&gt;
&lt;br /&gt;
This feature is installed by default.  However, it can be disabled using the &#039;&#039;OFFICEPRESENCE&#039;&#039; MSI Parameter.  Also, a check-mark is available in the setup dialog.&lt;br /&gt;
&lt;br /&gt;
=== Call an external application for calls ===&lt;br /&gt;
&lt;br /&gt;
Phone Apps (such as the phoneapp or softphone) can initiate the start of an external application when a new call appears (either incoming or outgoing).  The actual spawning of the application is done by the myApps platform service.  Also, the application properties (such as e.g. the executable&#039;s path) is configured in the myApps platform services (see [[#UI elements|Advanced settings]] in the &#039;&#039;UI elements&#039;&#039; section below).&lt;br /&gt;
&lt;br /&gt;
A number of arguments can be passed to the application by substituting $-variables in the &#039;&#039;Parameter&#039;&#039; field:&lt;br /&gt;
&lt;br /&gt;
; $n : phone number as dialed (called party number for outgoing calls) or received (calling party number for incoming calls)&lt;br /&gt;
&lt;br /&gt;
; $N : called or calling party number in &#039;&#039;national&#039;&#039; format (e.g. 07031730090)&lt;br /&gt;
&lt;br /&gt;
; $I : called or calling party number in &#039;&#039;international&#039;&#039; format (e.g. +497031730090)&lt;br /&gt;
&lt;br /&gt;
: note that both $N and $I only work if $n includes both subscriber number and area code (e.g. 07031730090). Otherwise they are equal to $n&lt;br /&gt;
&lt;br /&gt;
; $d : display name of peer (if known)&lt;br /&gt;
&lt;br /&gt;
; $u : URI name of the peer (if available eg with a federation call)&lt;br /&gt;
&lt;br /&gt;
; $c : conference id&lt;br /&gt;
&lt;br /&gt;
: this is a globally unique ID for this call and may be used to relate the call to the &#039;&#039;guid&#039;&#039; found in the CallInfo structure in the [http://wiki.innovaphone.com/index.php?title=Reference10:SOAP_API#CallInfo SOAP-API] and [http://sdk.innovaphone.com/doc/appwebsocket/RCC.htm RCC-API ].  Also, corresponding [[Reference10:Call Detail Record CDR PBX|CDRs]] can be related using the &#039;&#039;event&#039;&#039; tag&#039;s &#039;&#039;conf&#039;&#039; attribute.&lt;br /&gt;
The start of an external application can be requested using the &#039;&#039;com.innovaphone.externalapps&#039;&#039; API.&lt;br /&gt;
&lt;br /&gt;
Some setup examples are [[Howto:Integrate External Apps in innovaphone UC clients|shown here]].&lt;br /&gt;
&lt;br /&gt;
=== Push ===&lt;br /&gt;
&lt;br /&gt;
Mobile operating systems usually inhibit network operation of apps which run in the background or are closed by the user.  This is done in order to reduce battery consumption.  Unfortunately, this also stops such apps to maintain a registration by regularly sending &#039;&#039;keep alive&#039;&#039; messages to a server (in our case to the PBX).  As a result, myApps will be disconnected from the PBX.   When the PBX determines that there is an event for the application which needs a response, it needs to wake up the app using a dedicated channel provided by the operating system.  This mechanism is know as &#039;&#039;push&#039;&#039;. When running on iOS or Android, myApps supports &#039;&#039;push&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;push&#039;&#039; to work, a [[{{NAMESPACE}}:PBX/Objects/Push|&#039;&#039;push object&#039;&#039;]] needs to be configured in the PBX .  Also, it needs to be enabled on the mobile phone for the myApps app.&lt;br /&gt;
This mechanism is quite similar in v12 and v13, so you can refer to [[{{NAMESPACE}}:Concept_Push_Notifications_for_iOS_and_Android|the concept for push notifications for iOS and Android]] for more details. &lt;br /&gt;
&lt;br /&gt;
Also, helpful hints can be found in [[Howto:Troubleshoot v13 Push with myApps for Android and iOS]].&lt;br /&gt;
&lt;br /&gt;
=== App Proxy ===&lt;br /&gt;
&lt;br /&gt;
myApps runs further &#039;&#039;Apps&#039;&#039; (such as e.g. the &#039;&#039;phoneapp&#039;&#039;) as a web page in an IFRAME of the browser myApps is running in.  The App&#039;s page code is loaded either from the PBX or from an &#039;&#039;application platform&#039;&#039; (AP).   This however would mean that the App&#039;s IFRAME would remain empty (a dead white screen) when the PBX or AP is not available. To make sure the App can start-up anyway, the myApps platform services feature the so-called &#039;&#039;App Proxy&#039;&#039;.  This is a caching proxy that caches all the App code so it is available even in case of network failure. When myApps runs in the context of the platform services, Apps are therefore not loaded from the App source directly, but from the local App proxy. &lt;br /&gt;
&lt;br /&gt;
The cached files are stored in the PCs local file system in the &amp;lt;code&amp;gt;%LOCALAPPDATA%\innovaphone\myApps\appproxy&amp;lt;/path&amp;gt;&amp;lt;/code&amp;gt;.  There is no configuration required.  However, if myApps seems to run with outdated or corrupt cached copies of the App, you can safely delete the entire directory.&lt;br /&gt;
&lt;br /&gt;
=== Auto update ===&lt;br /&gt;
&lt;br /&gt;
On Windows and on macOS, the myApps platform services can auto-update themselves to a common version.  This is controlled by the [[{{NAMESPACE}}:PBX/Config/myApps#Launcher_Software_Update | &#039;&#039;Launcher Software Update&#039;&#039;]] settings under &#039;&#039;PBX/Config/myApps&#039;&#039; in the PBX. &lt;br /&gt;
&lt;br /&gt;
When myApps is started or the user logs in or myApps needs to re-connect to the PBX, the platform services will use the [http://sdk.innovaphone.com/web1/com.innovaphone.client/lib1_api_client.htm com.innovaphone.client API] to learn the desired version (&#039;&#039;launcherUpdateBuild&#039;&#039;, which is part of the API&#039;s &#039;&#039;model&#039;&#039;). If this differs from the current version, the platform services will try to download the respective new version. &lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;mt&amp;quot;: &amp;quot;ApiUpdate&amp;quot;,&lt;br /&gt;
    &amp;quot;apis&amp;quot;: {&lt;br /&gt;
        &amp;quot;com.innovaphone.client&amp;quot;: {&lt;br /&gt;
            &amp;quot;@client&amp;quot;: {&lt;br /&gt;
                &amp;quot;title&amp;quot;: &amp;quot;innovaphone myApps&amp;quot;,&lt;br /&gt;
                &amp;quot;model&amp;quot;: {&lt;br /&gt;
                    &amp;quot;launcher&amp;quot;: true,&lt;br /&gt;
                    &amp;quot;launcherUpdateBuild&amp;quot;: &amp;quot;134906&amp;quot;,&lt;br /&gt;
                    &amp;quot;appStoreUrl&amp;quot;: &amp;quot;http://store.innovaphone.com/release/download/&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The installation of the downloaded version is done by the &#039;&#039;innovaphonemyAppsUpdateService&#039;&#039;. This service is installed and enabled during the initial installation of the myApps platform services.  To disable auto-update, either leave the &#039;&#039;Launcher Software Update&#039;&#039; settings empty or set the service&#039;s start mode to &#039;&#039;disabled&#039;&#039; in the Windows &#039;&#039;services control panel&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note that on Windows the update service does not work on terminal servers. Administrators must do myApps base services updates using standard windows mechanisms.&lt;br /&gt;
&lt;br /&gt;
Note that on macOS if myApps has been installed from the Apple Store it is assumed that auto update from the PBX is not desired and disabled therefore.&lt;br /&gt;
&lt;br /&gt;
On Android/iOS/macOS updates can be downloaded from the respective app store.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;Devices&#039;&#039; app can not update software installed on Windows PCs directly. However, when the PBX is updated using an &#039;&#039;update job&#039;&#039; in the &#039;&#039;Devices&#039;&#039; App, the &#039;&#039;Launcher Software Update&#039;&#039; settings will be updated accordingly and hence the myApps base services will ultimately also be updated to the same version.&lt;br /&gt;
&lt;br /&gt;
==== Auto update flow on Windows ====&lt;br /&gt;
&lt;br /&gt;
* On start of myApps, myApps checks if an update is available and ready for installation&lt;br /&gt;
** if yes, the update is installed directly, without user interaction (a popup is shown during the installation)&lt;br /&gt;
** if not, myApps starts&lt;br /&gt;
* if an update is available while myApps is already running, an update notification will be shown which let&#039;s the user choose to install the update now or later (the notification will then popup again after one hour)&lt;br /&gt;
&lt;br /&gt;
==UI elements ==&lt;br /&gt;
There are a few user interfaces provided by the platform services:&lt;br /&gt;
===tray-icon (Windows only) ===&lt;br /&gt;
::[[Image:myapps-tray.png|myapps-tray.png/|myapps-tray.png/]]&lt;br /&gt;
:Allows to&lt;br /&gt;
:* terminate myApps&lt;br /&gt;
:* toggle the &#039;&#039;autostart&#039;&#039; state&lt;br /&gt;
:* toggle the &#039;&#039;show in task bar&#039;&#039; state&lt;br /&gt;
:* open the trace folder&lt;br /&gt;
:&lt;br /&gt;
=== PBX connect form===&lt;br /&gt;
:: [[Image:myapps-connect.png|myapps-connect.png/|myapps-connect.png/]]&lt;br /&gt;
: Allows the user to specify the connect data for the PBX (i.e. IP address or DNS name)&lt;br /&gt;
:&lt;br /&gt;
=== Advanced settings===&lt;br /&gt;
::[[Image:myapps-settings0.png|myapps-settings0.png/|myapps-settings0.png/]]&lt;br /&gt;
::[[Image:myapps-settings.png|myapps-settings.png/|myapps-settings.png/]] [[Image:myapps-settings2.png|myapps-settings2.png/|myapps-settings2.png/]] [[Image:myapps-settings3.png|myapps-settings3.png/|myapps-settings3.png/]]&lt;br /&gt;
&lt;br /&gt;
: Allows to modify various platform dependant settings (such as e.g. the hotkey selection on Windows)&lt;br /&gt;
&lt;br /&gt;
== Interfaces ==&lt;br /&gt;
=== Provided APIs ===&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.search/lib1_api_search.htm com.innovaphone.search] : access to local phone book entries by the [[#Local phonebook access|Local phonebook access]] component.&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.launcher/com.innovaphone.launcher.htm com.innovaphone.launcher] : display of OS specific user notifications and receipt of related user actions&lt;br /&gt;
; com.innovaphone.notificationhandler : reports back click on a notification.&lt;br /&gt;
; com.innovaphone.externalapps : to start external applications, see [[#Call an external application for calls|Call an external application for calls]]  above&lt;br /&gt;
&lt;br /&gt;
=== Used APIs ===&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm com.innovaphone.phone] : used to initiate new or manipulate existing calls by the [[#Hot keys|Hot keys]] and [[#URL handler|URL handler]] components.&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.chat/com.innovaphone.chat.htm com.innovaphone.chat] : used to start a new chat by the [[#URL handler|URL handler]] component.&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.client/lib1_api_client.htm com.innovaphone.client] : the model is used to learn the update settings, see [[#Auto update|Auto update]] above&lt;br /&gt;
&lt;br /&gt;
=== Protocols ===&lt;br /&gt;
&lt;br /&gt;
; [https://sdk.innovaphone.com/doc/launcher/Media.htm Media Protocol] : used by apps to allocate RTP channels, see [[#RTP service for audio.2C video and data|RTP service for audio, video and data]] above&lt;br /&gt;
&lt;br /&gt;
== Related App Services ==&lt;br /&gt;
&lt;br /&gt;
none&lt;br /&gt;
&lt;br /&gt;
== Known limitations ==&lt;br /&gt;
; Incoming call as banner on myApps for iOS : Since iOS 14 the iOS CallKit presents incoming calls as a banner leaving the original green answer button of myApps visible. Use only the blue button of the banner to accept the call or change iPhone Settings, App &amp;quot;Phone&amp;quot;, &amp;quot;Incoming Calls&amp;quot; to &amp;quot;Full Screen&amp;quot; to hide the myApps user interface again during call answering.&lt;br /&gt;
&lt;br /&gt;
; Call answer in speakerphone mode even with active Bluetooth headset on myApps for iOS : This causes unwanted speakerphone operation if the smartphone is used with a Bluetooth car audio system. The behaviour can be changed by selecting &#039;&#039;Bluetooth Headset&#039;&#039; in this setting:&lt;br /&gt;
:&#039;&#039;iOS Settings-&amp;gt;Accessibility-&amp;gt;Touch-&amp;gt;Call Audio Routing: Automatic / Bluetooth Headset / Speaker&#039;&#039;&lt;br /&gt;
:&#039;&#039;iOS Einstellungen-&amp;gt;Bedienungshilfen-&amp;gt;Tippen-&amp;gt;Anrufaudioausgabe: Automatisch / Bluetooth-Headset / Lautsprecher&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; Windows Server 2016 (Windows 10 Build 1607) : windows just shows the first notification. Further notifications aren&#039;t displayed until the previous ones are removed from the notification center. Current windows builds do not show this behaviour anymore.&lt;br /&gt;
&lt;br /&gt;
; Problems on Mac computers with Yealink USB headsets&lt;br /&gt;
: we have received reports that myApps quits unexpectedly on some Mac computers when a Yealink headset is plugged in.  Unfortunately, we could not find out the cause yet.  If you use Yealink USB headsets and have a similar issue, please open a support ticket and send myApps traces.&lt;br /&gt;
&lt;br /&gt;
; Poly / Plantronics headset buttons only functional if myApps is started with Rosetta&lt;br /&gt;
: myApps macOS supports Apple M1/M2 hardware natively. However, the Poly / Plantronics headset SDK is only available for Intel platform and thus myApps needs to be started via Apple&#039;s Intel emulator Rosetta if a Poly / Plantronics headset is used. This is done with right-click on the myApps executable, &#039;&#039;Information&#039;&#039;, &#039;&#039;Open with Rosetta&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
; Windows surface devices may not work correctly&lt;br /&gt;
: Chromium does not get touch keyboard events. USB Keyboards may not be recognized either.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services are installed on Windows using the .msi file found in the &#039;&#039;myApps Windows&#039;&#039; package from [https://store.innovaphone.com/release/download.htm store.innovaphone.com].&lt;br /&gt;
&lt;br /&gt;
myApps can update itself automatically, see [[#Auto update|Auto update]] above.&lt;br /&gt;
&lt;br /&gt;
=== MSI Parameters and install options ===&lt;br /&gt;
&lt;br /&gt;
The MSI installer of myApps for Windows supports the following parameters and can be edited with [https://docs.microsoft.com/en-us/windows/win32/msi/orca-exe Microsoft Orca]. You can add your parameters in the table &#039;&#039;property&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
; SERVER (REG_SZ): the PBX&#039;s server address (without protocol like https://)&lt;br /&gt;
; OFFICEPRESENCE (REG_DWORD): &#039;&#039;&#039;false&#039;&#039;&#039; to disable presence integration in Microsoft Office&lt;br /&gt;
: this is also available as a check-mark when running the install manually&lt;br /&gt;
&lt;br /&gt;
; DISABLEHEADSETS (REG_DWORD): &#039;&#039;&#039;true&#039;&#039;&#039; to disable headsets support, see [[#Device handling|Device handling]] above&lt;br /&gt;
&lt;br /&gt;
; EXTERNALAPPS (REG_SZ): pre-define external applications, see [[#Call an external application for calls|Call an external application for calls]] above&lt;br /&gt;
: e.g. &amp;lt;code&amp;gt;&amp;quot;{&amp;quot;&amp;quot;externalApps&amp;quot;&amp;quot;:[{&amp;quot;&amp;quot;id&amp;quot;&amp;quot;:0,&amp;quot;&amp;quot;name&amp;quot;&amp;quot;:&amp;quot;&amp;quot;Wireshark&amp;quot;&amp;quot;,&amp;quot;&amp;quot;path&amp;quot;&amp;quot;:&amp;quot;&amp;quot;C:\\Program Files\\Wireshark\\Wireshark.exe&amp;quot;&amp;quot;,&amp;quot;&amp;quot;param&amp;quot;&amp;quot;:&amp;quot;&amp;quot;test $I&amp;quot;&amp;quot;}]}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; FORCERESTART (REG_DWORD): &#039;&#039;&#039;true&#039;&#039;&#039; (or any string ...) kills myApps during the installation and restarts it for the currently logged in user, if it was running&lt;br /&gt;
&lt;br /&gt;
; DISABLELOCALHOST (REG_DWORD): &#039;&#039;&#039;true&#039;&#039;&#039; to disable use of &#039;&#039;&#039;localhost&#039;&#039;&#039; string to access the local webserver. Use &#039;&#039;&#039;127.0.0.1&#039;&#039;&#039; instead&lt;br /&gt;
&lt;br /&gt;
; EXCLUDEINTERFACES (REG_SZ): some VPN interfaces are not detected by Windows as IF_TYPE_PPP or IF_TYPE_TUNNEL and therefore the &#039;&#039;&#039;media outside VPN&#039;&#039;&#039; setting is not taking effect. With this option interfaces can be pre-defined that will not be used for media. Interfaces must be comma separated&lt;br /&gt;
: e.g. &amp;lt;code&amp;gt;EXCLUDEINTERFACES=&amp;quot;172,192.168,10.10&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Current settings are stored in the registry at &amp;lt;code&amp;gt;Computer\HKEY_CURRENT_USER\Software\innovaphone\myApps&amp;lt;/code&amp;gt; or at &amp;lt;code&amp;gt;Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\innovaphone\myApps&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Boolean values like OfficePresence are stored in registry entries with type REG_DWORD and values 1 or 0. 0 disables the setting and 1 enables it.&lt;br /&gt;
&lt;br /&gt;
== iOS ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services are installed on iOS by loading &#039;&#039;innovaphone myApps&#039;&#039; from the &#039;&#039;App Store&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Configuration via MDM ===&lt;br /&gt;
&lt;br /&gt;
the PBX&#039;s server URL can be pre-configured by specifying this dictionary in the MDM&lt;br /&gt;
 &amp;lt;plist&amp;gt;&lt;br /&gt;
   &amp;lt;dict&amp;gt;&lt;br /&gt;
     &amp;lt;key&amp;gt;server&amp;lt;/key&amp;gt;&lt;br /&gt;
     &amp;lt;string&amp;gt;pbx.example.com&amp;lt;/string&amp;gt;&lt;br /&gt;
   &amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt;/plist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== macOS ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services might be installed directly from the Apple store. An installer package &amp;lt;code&amp;gt;myapps.pkg&amp;lt;/code&amp;gt; and a disk image &amp;lt;code&amp;gt;myapps.dmg&amp;lt;/code&amp;gt; is also available from the innovaphone app store. Install &amp;lt;code&amp;gt;myapps.pkg&amp;lt;/code&amp;gt; by double-click on the file and follow the instructions of the installer. myApps becomes available in the Applications folder and can be opened by double-click. Or download and open &amp;lt;code&amp;gt;myapps.dmg&amp;lt;/code&amp;gt; and double klick myApps. If desired integrate it into the app dock by right click, &#039;&#039;Options, Keep in the dock&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If installed from the innovaphone app store, myApps can update itself automatically, see [[#Auto update|Auto update]] above.&lt;br /&gt;
&lt;br /&gt;
If installed from the Apple store, macOS notifies about updates on the Apple store. myApps [[#Auto update|Auto update]] is disabled then.&lt;br /&gt;
&lt;br /&gt;
If a clean-install of the client is necessary, the folder &amp;quot;/Users/username/Library/Containers/myapps&amp;quot; needs to be deleted. To be on the safe side also delete it from the trash bin.&lt;br /&gt;
&lt;br /&gt;
=== Configuration via MDM ===&lt;br /&gt;
&lt;br /&gt;
the PBX&#039;s server URL can be pre-configured by specifying this dictionary in the MDM&lt;br /&gt;
 &amp;lt;plist&amp;gt;&lt;br /&gt;
   &amp;lt;dict&amp;gt;&lt;br /&gt;
     &amp;lt;key&amp;gt;server&amp;lt;/key&amp;gt;&lt;br /&gt;
     &amp;lt;string&amp;gt;pbx.example.com&amp;lt;/string&amp;gt;&lt;br /&gt;
   &amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt;/plist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preferences ===&lt;br /&gt;
&lt;br /&gt;
macOS supports preference settings that can be set via a shell command or via Mac remote management&lt;br /&gt;
&lt;br /&gt;
 defaults write com.innovaphone.client-ios-14r1 server &amp;quot;PBX-server-URL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The following parameters and can be set through this method:&lt;br /&gt;
&lt;br /&gt;
; server: the PBX&#039;s server URL&lt;br /&gt;
&lt;br /&gt;
=== Setting myApps as Default App for SIP-URLs ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|defaults write com.apple.LaunchServices/com.apple.launchservices.secure LSHandlers -array-add &#039;{&lt;br /&gt;
   LSHandlerURLScheme = sip;&lt;br /&gt;
   LSHandlerRoleAll = &amp;quot;&amp;lt;CFBundleIdentifier&amp;gt;&amp;quot;;&lt;br /&gt;
}&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To find the “CFBundleIdentifier”, proceed as follows:&lt;br /&gt;
* In the Finder under “Applications”, search for the desired myApps client that you want to set as the default app.&lt;br /&gt;
* Right-click on “Show package contents” -&amp;gt; you will find the “CFBundleIdentifier” in the Info.plist file.&lt;br /&gt;
&lt;br /&gt;
A restart of the MAC is required.&lt;br /&gt;
&lt;br /&gt;
=== Using Sennheiser headsets ===&lt;br /&gt;
If you use Sennheiser headsets, you should also install the then-current &amp;lt;code&amp;gt;DSEA_SDK_v&amp;lt;/code&amp;gt;&#039;&#039;version&#039;&#039;&amp;lt;code&amp;gt;.pkg&amp;lt;/code&amp;gt; package, after you installed the myApps client.  Without that, audio will still work, but not the controls on the headset.  You will need to keep that up-to-date yourself, as it is not updated by myApps&#039;s auto-update function.&lt;br /&gt;
&lt;br /&gt;
== Android ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services are installed on Android by loading &#039;&#039;innovaphone myApps&#039;&#039; from the &#039;&#039;Play Store&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Configuration via MDM ===&lt;br /&gt;
&lt;br /&gt;
the PBX&#039;s server URL can be pre-configured by specifying a property &amp;quot;server&amp;quot; with string value &amp;quot;pbx.example.com&amp;quot; in the MDM.&lt;br /&gt;
&lt;br /&gt;
== IP270 ==&lt;br /&gt;
For configuration instructions, refer to the [[Reference16r1:Concept IP270&amp;amp;action=edit&amp;amp;redlink=1|IP270 concept article]].&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
&lt;br /&gt;
== Server configuration ==&lt;br /&gt;
When opening myApps for the first time, the user is prompted for the Server. Usually only the hostname (DNS host name or IP address) needs to be configured.&lt;br /&gt;
&lt;br /&gt;
But there are more options for special PBX configurations.&lt;br /&gt;
&lt;br /&gt;
; Non-standard HTTPS port&lt;br /&gt;
: If the PBX uses a non-standard HTTPS port, it must be appended to the host name separated by a colon (&amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;).&lt;br /&gt;
: Example: &amp;lt;code&amp;gt;pbx.example.com:4444&amp;lt;/code&amp;gt; (expands to &amp;lt;code&amp;gt;https://pbx.example.com:4444/PBX0/APPCLIENT/appclient.htm&amp;lt;/code&amp;gt;)&lt;br /&gt;
; DynPBX module name&lt;br /&gt;
: If the PBX is a DynPBX, the module id must be appended to PBX0 separated - (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;).&lt;br /&gt;
: Example: &amp;lt;code&amp;gt;pbx.example.com/PBX0-1&amp;lt;/code&amp;gt; (expands to &amp;lt;code&amp;gt;https://pbx.example.com/PBX0-1/APPCLIENT/appclient.htm&amp;lt;/code&amp;gt;)&lt;br /&gt;
; Softphone physical location&lt;br /&gt;
: If user defined physical location shall be used for softphone, you can append it using a parameter &amp;lt;code&amp;gt;#phys=&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Example: &amp;lt;code&amp;gt;pbx.example.com#phys=slave&amp;lt;/code&amp;gt; (expands to &amp;lt;code&amp;gt;https://pbx.example.com/PBX0/APPCLIENT/appclient.htm#phys=slave&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Example 1: PBX pbx.example.com with standard configuration&lt;br /&gt;
 pbx.example.com&lt;br /&gt;
&lt;br /&gt;
Example 2: PBX slave.example with DynPBX module ID 1, HTTPS port 4444 and physical location master&lt;br /&gt;
 slave.example.com:4444/PBX0-1#phys=master&lt;br /&gt;
&lt;br /&gt;
=== HTTP proxy support ===&lt;br /&gt;
&lt;br /&gt;
myApps platform services do support operation via HTTP proxy now. If one or more proxies have been configured in the network settings of the operating system for the active network connection, HTTP CONNECT tunnels are established.&lt;br /&gt;
&lt;br /&gt;
On Windows user name and password can be specified for the tunnel servers as generic credentials in the credentials manager (Anmeldeinformationsverwaltung). The name of the credentials must be the tunnel server hostname.&lt;br /&gt;
&lt;br /&gt;
On Android user name and password can be specified through Android &#039;&#039;Settings, Accounts&#039;&#039; by adding a myApps &#039;&#039;HTTP Proxy Credentials&#039;&#039; account. The name of the account must be the tunnel server hostname.&lt;br /&gt;
&lt;br /&gt;
== Platform specific settings ==&lt;br /&gt;
When myApps runs under the myApps platform services, it will show various platform specific settings as part of its &#039;&#039;burger menu&#039;&#039;, so the user can set them.  See &#039;&#039;Advanced settings&#039;&#039; in [[#UI elements|UI elements]] above.&lt;br /&gt;
&lt;br /&gt;
Some options can also be set globally for all myApps clients in the PBX&#039;s [[{{NAMESPACE}}:PBX/Config/myApps#Client_Settings|PBX/Config/myApps &#039;&#039;Client Settings&#039;&#039;]]&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Option&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Description&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Where to set&lt;br /&gt;
&lt;br /&gt;
!&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot;| Availability&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| || || User menu || PBX &#039;&#039;Client Settings&#039;&#039; || Windows || iOS || Android || macOS&lt;br /&gt;
|IP270&amp;lt;ref&amp;gt;myApps-IP270 offers device specific settings explained in [[Reference16r1:Concept IP270&amp;amp;action=edit&amp;amp;redlink=1|IP270 concept article]]&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Autostart || Launch myApps on login || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Appear offline after || controls after which idle time a user is considered &#039;&#039;inactive&#039;&#039;. See [[#User activity|User activity]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Hotkeys || Hotkeys for call dial, accept, reject. See [[#Hot keys|Hot keys]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Docking || Docking mode (left, right, none). See [[#???|??]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Desktop notifications|| Turn on/off platform notifications. See [[#Notifications|  Notifications]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| VPN || Disable VPN address for ICE candidate selection. See [[#RTP ports| RTP ports]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Show in taskbar|| Show myApps in the taskbar in addition to it&#039;s tray icon.  || &amp;amp;#10004; ||&amp;amp;#10007; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Log flags || turn on/off certain trace levels. See [[#Troubleshooting|Troubleshooting]] below.  || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10004;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| External applications || define the applications available for Apps to be started. See [[#Call an external application for calls|Call an external application for calls]] above.  || &amp;amp;#10004; ||&amp;amp;#10007; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Ring in headset || send ring tone for incoming to headset instead of loudspeaker.  || &amp;amp;#10004; ||&amp;amp;#10007; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start parameters for Windows ==&lt;br /&gt;
&lt;br /&gt;
On Windows, it is not possible to pass start parameters from the [https://www.chromium.org/developers Chromium documentation] to the myApps process.&lt;br /&gt;
&lt;br /&gt;
== OS Settings for Windows ==&lt;br /&gt;
Windows settings can influence the display of &#039;&#039;Desktop notifications&#039;&#039;. See [https://support.microsoft.com/en-us/help/4028678/windows-10-change-notification-settings Change notification settings in Windows 10/11] for details.&lt;br /&gt;
&lt;br /&gt;
=== Windows 11 ===&lt;br /&gt;
&lt;br /&gt;
* Windows 11 has a feature &amp;quot;do not disturb&amp;quot;. This hides notifications if enabled.&lt;br /&gt;
* Windows 11 has a feature &amp;quot;focus&amp;quot;. This enables &amp;quot;do not disturb&amp;quot; and thus hides notifications too.&lt;br /&gt;
* Windows 11 has priority settings for notifications. Ensure that VoIP notifications for calls are allowed any maybe also include myApps as an App which is allowed to show notifications.&lt;br /&gt;
&lt;br /&gt;
== OS settings for Android ==&lt;br /&gt;
; Events : The appearance of notifications can be controlled here.&lt;br /&gt;
&lt;br /&gt;
; Call accounts : For proper incoming call signaling, the call account &#039;&#039;myApps&#039;&#039; needs to be enabled. Note that on Samsung smartphones the call account switch likely toggles back and a few tries may need to be done until it persists. Please double-check the state.&lt;br /&gt;
&lt;br /&gt;
; Preferred Calling Account : Choose which calling account (myApps/SIM/..) should be used for outgoing calls initiated from within the native phone app / phone book.&lt;br /&gt;
&lt;br /&gt;
; Background data, unlimited data usage : Grant background data use to enable &#039;&#039;myApps&#039;&#039; to connect to the PBX immediately on an incoming call.&lt;br /&gt;
&lt;br /&gt;
; Overlaying : This setting is not needed if call account &#039;&#039;myApps&#039;&#039; has been enabled. Should there be a reason for not enabling call account &#039;&#039;myApps&#039;&#039;, the permission for overlaying needs to be granted on Android 10 or higher for proper call signaling.&lt;br /&gt;
&lt;br /&gt;
Note: If no SIM card is installed some Android smartphones exhibit a problem dialing from the smartphone contacts. The contacts app shows a choice &#039;&#039;Select SIM card for this call&#039;&#039; but all possible dialers are greyed out. In this case make myApps the default phone app in Android settings &#039;&#039;Apps, Default apps, Telephony&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== OS settings for iOS ==&lt;br /&gt;
; Notifications : The appearance of notifications can be controlled in iOS &#039;&#039;Settings, myApps&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== OS settings for macOS ==&lt;br /&gt;
&lt;br /&gt;
; Notifications : The appearance of notifications can be controlled in macOS &#039;&#039;Preferences, Notifications, myApps&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
myApps platform services can write various traces for debugging.  Trace can be turned on and off selectively in the [[#Advanced settings|Advanced settings]].&lt;br /&gt;
&lt;br /&gt;
The following trace flags can be set:&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;Recommended trace options are: &#039;&#039;&#039;App, Browser, ICE, TURN, Signaling and Audio&#039;&#039;&#039;. Please do not activate other flags unless innovaphone support says otherwise&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!style=&amp;quot;text-align: left; font-weight: bold&amp;quot; |  Abbreviation&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align: left; font-weight: bold&amp;quot; |code&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| App||0x000000001|| logs from the App Service itself&lt;br /&gt;
|-&lt;br /&gt;
| DNS||0x000000008|| logs DNS requests and results&lt;br /&gt;
|-&lt;br /&gt;
| HTTP client||0x000000080|| http client logs&lt;br /&gt;
|-&lt;br /&gt;
| TLS||0x000000400|| TLS logs&lt;br /&gt;
|-&lt;br /&gt;
| TCP||0x000000800|| TCP logs&lt;br /&gt;
|-&lt;br /&gt;
| LDS||0x000001000|| local domain sockets&lt;br /&gt;
|-&lt;br /&gt;
| WebSocket client||0x000004000|| logs outgoing websocket connections&lt;br /&gt;
|-&lt;br /&gt;
| App WebSocket||0x000008000|| logs app websocket connections (e.g. from PBX objects to an App Service or from the UI to the App Service)&lt;br /&gt;
|-&lt;br /&gt;
| UDP||0x000200000|| UDP logs&lt;br /&gt;
|-&lt;br /&gt;
| DTLS||0x000400000|| logs DTLS handshake and messages&lt;br /&gt;
|-&lt;br /&gt;
| Media||0x000800000|| logs media events&lt;br /&gt;
|-&lt;br /&gt;
| Media channel||0x001000000|| logs RTP/SCTP media connections&lt;br /&gt;
|-&lt;br /&gt;
| ICE||0x002000000|| logs ICE messages between peers&lt;br /&gt;
|-&lt;br /&gt;
| TURN||0x004000000|| logs TURN messages between peers&lt;br /&gt;
|-&lt;br /&gt;
| AppSharing||0x008000000|| logs AppSharing connection&lt;br /&gt;
|-&lt;br /&gt;
| Audio||0x010000000|| logs Audio connection and headset events&lt;br /&gt;
|-&lt;br /&gt;
| Video||0x020000000|| logs video connection and webcam events&lt;br /&gt;
|-&lt;br /&gt;
| Browser||0x040000000|| logs Chromium events&lt;br /&gt;
|-&lt;br /&gt;
| AppProxy||0x080000000|| logs requests which are proxied between the local webserver and the remote server&lt;br /&gt;
|-&lt;br /&gt;
| Webserver ||0x200000000|| enables webserver specific logs&lt;br /&gt;
|-&lt;br /&gt;
| Browser Console ||0x400000000|| logs browser console events&lt;br /&gt;
|-&lt;br /&gt;
| Signaling||0x800000000|| enables logs in the signaling module for debugging calls&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;code&#039;&#039; can be or&#039;ed and used as value for the &#039;&#039;Log flags&#039;&#039; field in [[{{NAMESPACE}}:PBX/Config/myApps#Client_Settings|PBX/Config/myApps/Client Settings]].&lt;br /&gt;
&lt;br /&gt;
; Windows :On Windows, traces are written to the &amp;lt;code&amp;gt;%LOCALAPPDATA%\innovaphone\myApps&amp;lt;/code&amp;gt; directory. If you start myApps with --log-size as parameter, you can define the maximum size of a log file (e.g. --log-size=100000000 would be 100MB for each file)&lt;br /&gt;
&lt;br /&gt;
:* myApps-&#039;&#039;date-time&#039;&#039;.txt : main log file for the platform services&lt;br /&gt;
&lt;br /&gt;
:* myAppsOutlookSearch-&#039;&#039;date-time&#039;&#039;.txt : log file for the Outlook phone book access&lt;br /&gt;
&lt;br /&gt;
:* myAppsHookController-&#039;&#039;date-time&#039;&#039;.txt : log file for the hot-key interceptor (see [[#Hot keys|Hot keys]])&lt;br /&gt;
&lt;br /&gt;
; :myApps update installation traces are written to the &amp;lt;code&amp;gt;%windir%\temp\&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
:* myAppsInstall.txt: MSI installation file&lt;br /&gt;
&lt;br /&gt;
; :myApps update service traces are written to the &amp;lt;code&amp;gt;%ProgramData%\innovaphone\myAppsUpdateService&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
:* myAppsUpdateService-&#039;&#039;date-time&#039;&#039;.txt: myApps update service traces&lt;br /&gt;
&lt;br /&gt;
;Android : traces can be sent by e-mail.&lt;br /&gt;
: also, an Android device might also be connected to a PC via an USB cable to get the traces. The files can be found in &amp;lt;code&amp;gt;Android/data/com.innovaphone.clientandroid/files&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; iOS : traces can be sent by e-mail.&lt;br /&gt;
&lt;br /&gt;
; macOS : traces can be sent by e-mail.&lt;br /&gt;
: also, the files can be found in &amp;lt;code&amp;gt;~/Library/Containers/com.innovaphone.client-ios/Data/Documents/&amp;lt;/code&amp;gt;. Press &#039;&#039;Alt+N&#039;&#039; followed by space to get tilde &#039;&#039;~&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
; IP270 : Refer to the [[Reference16r1:Concept IP270&amp;amp;action=edit&amp;amp;redlink=1#Troubleshooting|IP270 concept article section troubleshooting]].&lt;br /&gt;
&lt;br /&gt;
= Known Problems =&lt;br /&gt;
[[:Category:Problem myApps platform services|Known Problems]]&lt;br /&gt;
&lt;br /&gt;
= Related Articles =&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myApps]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myApps_Redundancy|Concept myApps Redundancy]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myApps_Office_Integration|Concept myApps Office Integration]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myAPPs_Search_in_local-Outlook_Contacts|Concept myAPPs Search in local Outlook Contacts]]&lt;br /&gt;
* [[{{NAMESPACE}}:Call_Detail_Record_CDR_PBX|Call Detail Records]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept Push Notifications for myPBX iOS and Android|Concept Push Notifications for myPBX iOS and Android]]&lt;br /&gt;
* [[Howto:Troubleshoot v13 Push with myApps for Android and iOS]]&lt;br /&gt;
* [[{{NAMESPACE}}:PBX/Config/myApps|Reference16r1:PBX/Config/myApps]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_IP270|IP270 concept article]]&lt;br /&gt;
[[Category:Concept myApps platform services]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_myApps_platform_services&amp;diff=78878</id>
		<title>Reference16r1:Concept myApps platform services</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_myApps_platform_services&amp;diff=78878"/>
		<updated>2026-02-10T12:33:36Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* myApps for macOS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps]]&lt;br /&gt;
&lt;br /&gt;
myApps platform services provide various operating system specific services which can be used by other &#039;&#039;Apps&#039;&#039; running in the [[{{NAMESPACE}}:Concept myApps|myApps client]]. Those services typically are not available in the browser&#039;s JavaScript environment and hence must be implemented in native platform code. Therefore, the platform services are installed as native executable on the respective platform.&lt;br /&gt;
&lt;br /&gt;
When myApps is started in a web browser (and hence has no access to the platform services), some Apps will use [https://en.wikipedia.org/wiki/WebRTC WebRTC] services implemented by the browser instead.  For ease of reference, features available in this scenario are also described here.&lt;br /&gt;
&lt;br /&gt;
On windows, the platform services also come with their own web browser in which the myApps web App will be started then.  This browser is based on google&#039;s [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium] open source software.&lt;br /&gt;
= Applies To =&lt;br /&gt;
&lt;br /&gt;
* [[{{NAMESPACE}}:Concept myApps|myApps]]&lt;br /&gt;
* myApps for Windows&lt;br /&gt;
* myApps for macOS&lt;br /&gt;
* myApps for iOS&lt;br /&gt;
* myApps for Android&lt;br /&gt;
* myApps Web App (WebRTC)&lt;br /&gt;
* myApps for IP270&lt;br /&gt;
version 16r1&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
Not all features are available or required on all platforms.&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot;| Availability&lt;br /&gt;
|-&lt;br /&gt;
| || || Windows || iOS || Android || macOS || Browser&amp;lt;ref&amp;gt;This refers to the myApps web application running in a browser with no platform services available&amp;lt;/ref&amp;gt;&lt;br /&gt;
|IP270&lt;br /&gt;
|-&lt;br /&gt;
| [[#Device handling|Audio Devices]] || manage local audio devices to record and playback audio conversations || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; (audio available but devices managed by web browser) || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Video || manage local displays and cameras to capture and render video live stream || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; (video available but devices managed by web browser) || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Ringer || manage local ringing device || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Application sharing|Application sharing]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; presenter || share an application || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; consumer  || view an application shared by the peer || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Hot keys|Hot keys]] || capture key presses for quick invocation of phone apps (e.g. dial selected number) || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#URL Handler|tel: and sip: URI handler]] || intercept clicks on tel: and sip: links in web sites to invoke phone apps || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#User activity|User activity]] || set presence state according to user activity ||  &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004;&amp;lt;ref&amp;gt;limited, see [[#User activity|User activity]] below&amp;lt;/ref&amp;gt; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Docking || myApps can be docked persistently to the right or left edge of your screens ||  &amp;amp;#10004;  || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Multi-windowing || Apps can be launched in separate windows||  &amp;amp;#10004;  || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Recording|Recording]] || Calls can be recorded to recording app||  &amp;amp;#10004;  || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Notifications|Notifications]] || ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; display notifications || display notifications with OS standard mechanism ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; push notifications || receive push notifications while myApps is not running  ||  &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&amp;lt;ref&amp;gt;The browser needs to be running in order to receive push notifications.&amp;lt;/ref&amp;gt; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; chat and apps || display notifications for chat and other apps  ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; calls || display notifications for incoming calls  ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&amp;lt;ref&amp;gt;Call notifications are only displayed locally while the phone or softphone app is started.&amp;lt;/ref&amp;gt; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Local phonebook access|Local phonebook]] || access local phone book ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Microsoft Office Integration|Office presence provider]] || maps PBX presence state to Microsoft office presence state ||  &amp;amp;#10004;  || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Call an external application for calls|External application start]] || start arbitrary external applications for calls || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#App Proxy|App Proxy]]|| a caching proxy that provides app persistence  || &amp;amp;#10004;  || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Auto update|Auto update]] || automatically updates myApps platform services to the same version the PBX has || &amp;amp;#10004;  || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004;&amp;lt;ref&amp;gt;The then-current web app is always loaded from the PBX upon startup and hence up-to-date by definition&amp;lt;/ref&amp;gt; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Three party conference || initiate 3-pty-conference using Softphone-App || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Exclude VPN || disable use of VPN connections for audio and appsharing || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Screen lock || myApps screen lock against unauthorised use || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
* innovaphone PBX 16r1 and up&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Recommended hardware requirements&lt;br /&gt;
* Processor: Dual-core 2Ghz or higher&lt;br /&gt;
* RAM: 4 Gb&lt;br /&gt;
&lt;br /&gt;
== myApps for Windows ==&lt;br /&gt;
* Windows 11 and up&lt;br /&gt;
* Windows Server 2016 and later versions&lt;br /&gt;
&lt;br /&gt;
=== 32 &amp;amp; 64 bit Windows ===&lt;br /&gt;
* 32 bit Windows: install the myAppsSetup32.msi from the App Store&lt;br /&gt;
* 64 bit Windows: install the myAppsSetup.msi from the App Store&lt;br /&gt;
** the 64 bit variant still installs into Program Files (x86), as the main myApps.exe is still a 32bit application&lt;br /&gt;
** the 64 bit variant just contains an additional 64 bit binary for the outlook search&lt;br /&gt;
&lt;br /&gt;
=== Windows N editions ===&lt;br /&gt;
&lt;br /&gt;
Windows N editions are missing the &#039;&#039;Media Feature Pack&#039;&#039; which is pre installed on other Windows versions.&lt;br /&gt;
&lt;br /&gt;
Please install the pack from [https://www.microsoft.com/en-us/software-download/mediafeaturepack Microsoft (Windows 10 pack)] before you install myApps. The installer will check if the file &amp;lt;code&amp;gt;C:\Windows\SysWOW64\mfplat.dll&amp;lt;/code&amp;gt; exist on your system.&lt;br /&gt;
&lt;br /&gt;
Make sure to install the correct pack depending on your Windows version! There are different packs for Windows 10 1703, 1803, 1809 and 32bit or 64bit etc.&lt;br /&gt;
&lt;br /&gt;
NB: Sometimes the myApps installation will not work even though the media pack is already installed. This is because the installer has no read access to check if the package is already installed. If the above-mentioned file exists and the installer asks to install the Windows Media Feature Pack nevertheless, you have to start the myApps install with administrative rights.&lt;br /&gt;
&lt;br /&gt;
=== Terminal Server environments ===&lt;br /&gt;
&lt;br /&gt;
Audio driver was removed if myApps discovers that it is running in a terminal server environment like Citrix.&lt;br /&gt;
&lt;br /&gt;
The audio driver is needed for the Softphone App but the Softphone App should not use an audio driver at the server side because the audio devices are plugged locally and there would be a delay sending and receiving audio data with the server.&lt;br /&gt;
&lt;br /&gt;
If a customer wants to use the Softphone App at the server side he needs to make use of the myApps Plugin for virtual desktops solution:&lt;br /&gt;
&lt;br /&gt;
[[{{NAMESPACE}}:MyApps_Plugin_for_Virtual_Desktops|Reference15r1:MyApps_Plugin_for_Virtual_Desktops]]&lt;br /&gt;
&lt;br /&gt;
== myApps for macOS ==&lt;br /&gt;
* macOS 13 or higher&lt;br /&gt;
&lt;br /&gt;
== myApps for iOS ==&lt;br /&gt;
* iOS 12 or higher&lt;br /&gt;
&lt;br /&gt;
== myApps for Android ==&lt;br /&gt;
* Android 6.0 or higher. Android 6.x may need an update of the Chrome browser.&lt;br /&gt;
== myApps for IP270 ==&lt;br /&gt;
Exclusively used in IP270 with Yocto-based Linux distribution.&lt;br /&gt;
&lt;br /&gt;
= Licenses =&lt;br /&gt;
* No license needed for myApps platform services&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
myApps platform services is a native executable that is installed using the standard mechanisms on the respective operating system. It provides various advanced services which can be used by the myApps web client code as well as the Apps running in the myApps context. &lt;br /&gt;
&lt;br /&gt;
Also, on Windows, the platform services come with their own, dedicated browser to run myApps in.  This browser is based on [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium].  On iOS, macOS and Android, it is based upon native embedded web view facilities (such as WKWebView) instead.&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
=== RTP service for audio and appsharing ===&lt;br /&gt;
The RTP service provides audio and appsharing as a video stream. VoIP RTP endpoints (e.g. for softphones).  It supports STUN, TURN, ICE, SRTP, DTLS. Note however that unlike WebRTC, these endpoints do not &#039;&#039;require&#039;&#039; ICE and DTLS. In other words, they can communicate also with non-compliant (i.e. older) VoIP devices.&lt;br /&gt;
&lt;br /&gt;
Note that the available capabilities when not running the myApps platform services depend on the used browser&#039;s WebRTC implementation. See your browser documentation for details.&lt;br /&gt;
&lt;br /&gt;
Apps can request RTP channels using the [https://sdk.innovaphone.com/doc/launcher/Media.htm Media Protocol]&#039;s &#039;&#039;AllocChannel&#039;&#039; message.&lt;br /&gt;
&lt;br /&gt;
==== RTP ports ====&lt;br /&gt;
{|&lt;br /&gt;
|  audio || 50000 -&amp;gt; 50099&lt;br /&gt;
|-&lt;br /&gt;
| video (app sharing) || 50100 -&amp;gt; 50199&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The RTP service will enumerate all local interfaces and create local HOST candidates for ICE.  There is an option however to disregard VPN interfaces (more precisely such interfaces with type of &#039;&#039;IF_TYPE_PPP&#039;&#039; or &#039;&#039;IF_TYPE_TUNNEL&#039;&#039;).  This can eliminate quality issues when RTP data is transmitted through TCP based VPN tunnels.&lt;br /&gt;
&lt;br /&gt;
SRFLX and RELAY candidates are obtained using the STUN and TURN server configuration passed by the App (e.g the &#039;&#039;softphone&#039;&#039; App) as part of the &#039;&#039;AllocChannel&#039;&#039; request.&lt;br /&gt;
&amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;AllocChannel&amp;quot;,&amp;quot;channel&amp;quot;:&amp;quot;81429cba-396d-43de-8a76-ec020ba8796e&amp;quot;,&amp;quot;iceServers&amp;quot;:[{&amp;quot;urls&amp;quot;:&amp;quot;turn:myturn.domaincom:4077?transport=udp&amp;quot;,&amp;quot;username&amp;quot;:&amp;quot;turnuser&amp;quot;,&amp;quot;credential&amp;quot;:&amp;quot;pwd&amp;quot;,&amp;quot;credentialType&amp;quot;:&amp;quot;password&amp;quot;},{&amp;quot;urls&amp;quot;:&amp;quot;stun:mystun.domain.com:4077&amp;quot;}],&amp;quot;dn&amp;quot;:&amp;quot;Foo Bar&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;RemoteRtp&amp;quot;,&amp;quot;kind&amp;quot;:&amp;quot;video&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Codecs ====&lt;br /&gt;
The installed myApps launchers provide codecs that can be used by softphone apps for media streams. When running in a web browser the codecs depend on the browser version and operating system. See the documentation of your browser for details.&lt;br /&gt;
&lt;br /&gt;
The following codecs are supported:&lt;br /&gt;
{|&lt;br /&gt;
!style=&amp;quot;text-align:left;width:100px;&amp;quot;|Codec&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Windows-Launcher&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Android&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|iOS&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|macOS&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Firefox (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Chrome (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Edge (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Safari (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Opera (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|IP270&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:left; background-color:lightgray&amp;quot; colspan=&amp;quot;11&amp;quot;|Audio&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|G711A&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|G711u&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|G722&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=Opus OPUS-NB]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=Opus OPUS-WB]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;11&amp;quot; style=&amp;quot;text-align:left; background-color:lightgray&amp;quot; |Video&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=VP8 VP8]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=VP9 VP9]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=H264 H264]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:left; background-color:lightgray&amp;quot; colspan=&amp;quot;11&amp;quot;|Application Sharing&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Share&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|-&lt;br /&gt;
|Watch&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔*&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔*&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔*&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;* small presentation only&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;** only for 1:1 calls, not for conferences&lt;br /&gt;
&lt;br /&gt;
==== Video capture ====&lt;br /&gt;
The default resolution for video capture is 1920x1080 if available.  Otherwise, 1280x720, 640x480, 352x288 or 320x240 will be used.  The frame rate is 30 fps if available, otherwise 15 fps. The resulting average bandwidth could reach 1 Mbps.&lt;br /&gt;
&lt;br /&gt;
==== Application sharing ====&lt;br /&gt;
Screen content will be transmitted as video stream by the presenter&lt;br /&gt;
&lt;br /&gt;
==== Device handling ====&lt;br /&gt;
The RTP service enumerates microphones, loudspeaker, cameras and ringing devices and notifies apps when devices come and go. It is up to the apps using the devices to store preferences.&lt;br /&gt;
&lt;br /&gt;
The RTP service also enables some extended features (such as hook switch or volume control) for supported USB headsets or Bluetooth headsets connected to myApps.&lt;br /&gt;
The supported headset-SDKs determine which headset vendors are recommended to be used with the myApps softphone app. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this to work, the following vendor specific development kits are integrated in our myApps client. Be aware that the SDK are updated within our Service release :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SDK Vendor !! Supported OS !! SDK Version !! innovaphone Service Release&lt;br /&gt;
|-&lt;br /&gt;
| Jabra|| MacOS || 1.12.2.0 || 13r3sr9&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || 1.12.2.0 || 13r3sr10&lt;br /&gt;
|-&lt;br /&gt;
| Epos &#039;&#039;(formerly Sennheiser)&#039;&#039; || MacOS || 12.4.0.5478 || 14r1sr3&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || n.a. - [[Support:13r3 sr10 MyApps Windows Client - Epos/Sennheiser-Headsets require installed Epos-Connect Software|to be installed separately]]|| 13r3sr10&lt;br /&gt;
|-&lt;br /&gt;
| Poly &#039;&#039;(formerly Plantronics)&#039;&#039; || MacOS || 3.25.53799.37131 || 13r3sr9&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || 3.25.53800.37131 || 13r3sr10&lt;br /&gt;
|-&lt;br /&gt;
| Yealink || MacOS || 3.1.1.20 || 14r1sr3&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || 3.1.1.20 || 14r1sr3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* It is possible to inhibit the start of the Sennheiser SDK (SenncomSDK.exe) using the &amp;lt;code&amp;gt;DISABLEHEADSETS&amp;lt;/code&amp;gt; directive of the installer (see [[#MSI Parameters and install options|  MSI parameters]]  below).&lt;br /&gt;
&lt;br /&gt;
* Starting with V13r3sr10, the Epos-SDK needs to be installed separately using the Epos Connect software to ensure full compatibility between current Epos headset models and native myApps-Windows client. For details [[Support:13r3 sr10 MyApps Windows Client - Epos/Sennheiser-Headsets require installed Epos-Connect Software|refer to this article]].&lt;br /&gt;
&amp;lt;!--Keywords: myapps softphone supported headsets sdk--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
myApps-IP270 supports use of [[Reference9:Concept USB Headset|USB devices known for innovpahone desk phones]].&lt;br /&gt;
&lt;br /&gt;
==== Ring tones ====&lt;br /&gt;
Ring tones can be played. Apps can choose the tone from a pre-defined list of ring tones.&lt;br /&gt;
&lt;br /&gt;
On Windows, custom ring tones can be uploaded as .mp3 files to the &amp;lt;code&amp;gt;ringtones&amp;lt;/code&amp;gt; sub-directory of myApps&#039; roaming directory (which usually is in &amp;lt;code&amp;gt;%appdata%\innovaphone\myApps\ringtones&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
On Android, custom ring tones can be added to the system via Android settings.&lt;br /&gt;
&lt;br /&gt;
On iOS, custom ring tones can be uploaded as .mp3 files to the &amp;lt;code&amp;gt;Ringtones&amp;lt;/code&amp;gt; subdirectory of the myApps file share that is available in iTunes if the iPhone has been connected via USB.&lt;br /&gt;
&lt;br /&gt;
On macOS, custom ring tones can be uploaded as .mp3 files to &amp;lt;code&amp;gt;~/Library/Containers/com.innovaphone.client-macos/Data/Documents/Ringtones&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Debugging ====&lt;br /&gt;
For extended debugging, turn on the &#039;&#039;Audio&#039;&#039;, &#039;&#039;Media&#039;&#039; and &#039;&#039;AppSharing&#039;&#039; traces in myApps.&lt;br /&gt;
=== Hot keys ===&lt;br /&gt;
On Windows and macOS systems, myApps platform services can listen for hot keys and invoke certain functions. Invocation is done by sending API messages to myApps which passes it to an appropriate API provider (in the cases described here, this will be a &#039;&#039;phone&#039;&#039; or &#039;&#039;softphone&#039;&#039; or &#039;&#039;rcc&#039;&#039; App typically.  See [[{{NAMESPACE}}:Concept_myApps#Client_APIs_and_default_apps | Client APIs and default apps]] for more details about this mechanism.&lt;br /&gt;
&lt;br /&gt;
The hot keys can be specified using the &#039;&#039;advanced settings&#039;&#039; user interface (see [[#UI elements| UI elements]] below. Any of the function keys F1 to F11 (optionally combined with up to two modifier keys &#039;&#039;alt&#039;&#039;, &#039;&#039;ctrl&#039;&#039;, &#039;&#039;shift&#039;&#039; or &#039;&#039;win&#039;&#039;) can be chosen for each function. If you do not want to start the call with &amp;quot;Hotkey+Enter&amp;quot; because you would have to wait for the focus, the hotkey can also be pressed twice and the number is dialled directly.&lt;br /&gt;
&lt;br /&gt;
; dial selected number : Initiates a call using the currently selected text as target.&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;PrepareCall&#039;&#039; message with the &#039;&#039;text&#039;&#039; argument set to the selected text and the &#039;&#039;adjust&#039;&#039; argument set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:&amp;quot;mt&amp;quot;:&amp;quot;PrepareCall&amp;quot;,&amp;quot;text&amp;quot;:&amp;quot;13&amp;quot;,&amp;quot;adjust&amp;quot;:true}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; accept call : Accepts a currently alerting call.&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;ConnectCall&#039;&#039; message will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;ConnectCall&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; reject/disconnect call : Rejects a currently alerting call or disconnects an active call.&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;DisconnectCall&#039;&#039; message will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;DisconnectCall&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== URL Handler ===&lt;br /&gt;
&lt;br /&gt;
On Windows systems, two URI-handler are installed with the myApps platform services.  Windows will call up this URI handler when a user clicks on an appropriate link, for example in a web site.&lt;br /&gt;
&lt;br /&gt;
The handler will the send an API message to myApps which passes it to an appropriate API provider (in the cases described here, this will be a &#039;&#039;phone&#039;&#039; or &#039;&#039;softphone&#039;&#039; or &#039;&#039;rcc&#039;&#039; App typically.  See [[{{NAMESPACE}}:Concept_myApps#Client_APIs_and_default_apps | Client APIs and default apps]] for more details about this mechanism.&lt;br /&gt;
&lt;br /&gt;
; tel URI : call a number, e.g. &amp;lt;code&amp;gt;tel:4711&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;PrepareCall&#039;&#039; message with the &#039;&#039;num&#039;&#039; argument set to the selected text and the &#039;&#039;adjust&#039;&#039; argument set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;StartCall&amp;quot;,&amp;quot;num&amp;quot;:&amp;quot;4711&amp;quot;,&amp;quot;adjust&amp;quot;:true}}&amp;lt;/code&amp;gt;&lt;br /&gt;
; sip URI : call a SIP name, e.g. &amp;lt;code&amp;gt;sip:zkl@innovaphone.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;PrepareCall&#039;&#039; message with the &#039;&#039;sip&#039;&#039; argument set to the selected text and the &#039;&#039;adjust&#039;&#039; argument set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;StartCall&amp;quot;,&amp;quot;sip&amp;quot;:&amp;quot;zkl@innovaphone.com&amp;quot;,&amp;quot;adjust&amp;quot;:true}}&amp;lt;/code&amp;gt;&lt;br /&gt;
; im URI : start chat with SIP name, e.g. &amp;lt;code&amp;gt;im:zkl@innovaphone.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;StartChat&#039;&#039; message with the &#039;&#039;sip&#039;&#039; argument set to the selected text will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.chat/com.innovaphone.chat.htm &#039;&#039;com.innovaphone.chat&#039;&#039; API].&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.chat&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;StartChat&amp;quot;,&amp;quot;sip&amp;quot;:&amp;quot;zkl@innovaphone.com&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On macOS systems myApps might be made the default application to handle tel URI e.g. &amp;lt;code&amp;gt;tel:4711&amp;lt;/code&amp;gt; via Apple FaceTime. Open the &amp;quot;FaceTime&amp;quot; menu &amp;quot;Settings...&amp;quot; and select myApps as &amp;quot;Default for phone calls&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
On iOS &#039;&#039;tel&#039;&#039; URIs are always dialed via GSM. Therefore myApps iOS also reacts to URI schemes &#039;&#039;com.innovaphone.tel&#039;&#039;, &#039;&#039;com.innovaphone.sip&#039;&#039; and &#039;&#039;com.innovaphone.im&#039;&#039;, e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;com.innovaphone.tel:4711&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;com.innovaphone.sip:zkl@innovaphone.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;com.innovaphone.im:zkl@innovaphone.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== User activity ===&lt;br /&gt;
On Windows and macOS systems, the myApps platform services can monitor user keyboard/mouse activity and change the user&#039;s presence state after a certain amount of inactivity.  The timeout can be specified using the &#039;&#039;advanced settings&#039;&#039; user interface (see [[#UI elements| UI elements]] below.&lt;br /&gt;
&lt;br /&gt;
myApps will then send a [https://sdk.innovaphone.com/doc/appwebsocket/myApps.htm#SetUserActivity&#039;&#039;SetUserActivity&#039;&#039;] message to the PBX using the &#039;&#039;myApps&#039;&#039; protocol.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;SetUserActivity&amp;quot;,&amp;quot;inactive&amp;quot;:true}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will change the &#039;&#039;status&#039;&#039; property of the &#039;&#039;im:&#039;&#039; contact for the user&#039;s own presence and hence result in a presence update from the PBX to myApps&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;UpdateOwnPresence&amp;quot;,&amp;quot;presence&amp;quot;:[{...},{&amp;quot;contact&amp;quot;:&amp;quot;im:&amp;quot;,&amp;quot;activity&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;status&amp;quot;:&amp;quot;closed&amp;quot;}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
The &#039;&#039;closed&#039;&#039; status is reflected in the grey status color when displaying a contact [[Image:myapps-inactive.png|myapps-inactive.png/|myapps-inactive.png/]].&lt;br /&gt;
&lt;br /&gt;
On iOS and Android, the state is set to &#039;&#039;inactive&#039;&#039; as soon as the App is brought to background.&lt;br /&gt;
When myApps platform services are not available (i.e. when running the web application in a browser solely) a limited user activity monitoring is available: the state is set to active when the web page is not used for more than 5 minutes.&lt;br /&gt;
&lt;br /&gt;
=== Recording ===&lt;br /&gt;
&lt;br /&gt;
The new launcher offers the possibility to record the audio of incoming and outgoing calls. In order to activate that functionality the URL of the recording instance must be configured in either the PBX (PBX-&amp;gt;myApps-&amp;gt;Config: Recording URL) or the softphone App (Settings-&amp;gt;Audio Recording (URL)) &lt;br /&gt;
&lt;br /&gt;
[[Image:PBX-Recording-Settings.png|pbx-recording-settings.png/|pbx-recording-settings.png/]] [[Image:Recording-Softphone-Settings.png|recording-softphone-settings.png/|recording-softphone-settings.png/]]. &lt;br /&gt;
&lt;br /&gt;
As long as that URL is configured the audio data of all calls are stored as pcap-files under that URL.&lt;br /&gt;
If the URL points to a CF device in the PBX, write access must be granted for that URL (PBX-&amp;gt;Services-&amp;gt;HTTP-&amp;gt;Server:Public compact flash access) and if the URL points to the recording app, the files can be accessed via the recording app [[{{NAMESPACE}}:Concept_App_Service_Recordings|recording]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Under PBX-&amp;gt;myApps the administrator can set a certain default behaviour of the audio recording like whether or not the recording should start automatically at the beginning of the call (Recording by Default ON/OFF), only calls with external numbers should be recorded (Record external calls only) or whether or not the user should be able to start/stop the recording himself (Allow user incall recording control). Except for the last parameter these parameters can also be modified by the user in its softphone settings if the administrator doesn&#039;t set the FORCE flag.&lt;br /&gt;
&lt;br /&gt;
If the user was allowed by the admin to control the recording a recording switch is active during the call when the &amp;quot;Media&amp;quot; Panel is opened. There the audio recording may be stopped and continued at will. A red recording notice is shown in the top right corner when the recording actually takes place.&lt;br /&gt;
 &lt;br /&gt;
[[Image:Recording-incall-switch.png|recording-incall-switch.png/|recording-incall-switch.png/]]&lt;br /&gt;
&lt;br /&gt;
=== Notifications ===&lt;br /&gt;
&lt;br /&gt;
The myApps platform services can use the OS specific notification mechanism (e.g. &#039;&#039;desktop notifications&#039;&#039; on Windows) to display messages (e.g. &#039;&#039;incoming new chat message&#039;&#039;) to the user.&lt;br /&gt;
&lt;br /&gt;
Note that the actual rendering of the notification is under control of the OS.  Therefore, myApps must be allowed to show notifications and its appearance can be restricted by OS native settings.&lt;br /&gt;
&lt;br /&gt;
==== Microsoft Windows Notifications ====&lt;br /&gt;
&lt;br /&gt;
Microsoft Windows Server editions (2016, 2019, 2022) are just capable of showing a single &#039;&#039;IncomingCall&#039;&#039; notification at the same time (we couldn&#039;t find a workaround for this limitation).&amp;lt;br/&amp;gt;&lt;br /&gt;
An &#039;&#039;IncomingCall&#039;&#039; notification is visible the whole time instead of being moved to the action center after a certain time.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
A notification about a missed call uses the &#039;&#039;IncomingCall&#039;&#039; type so that this notification is visible until the user returns.&amp;lt;br/&amp;gt;&lt;br /&gt;
Due to the above limitation, on a new arriving call such a missed call notification is transformed to a default notification which will be moved to the action center automatically.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
On non server editions, you can have multiple IncomingCall notifications at the same time (so two parallel incoming calls will be indeed notified at the same time), but the missed call notification handling is the same on both platforms!&lt;br /&gt;
&lt;br /&gt;
 Thus there will be always just &#039;&#039;&#039;one&#039;&#039;&#039; missed call notification visible and previous missed calls can be found inside your action center!&lt;br /&gt;
&lt;br /&gt;
To see myApps notifications, ensure:&lt;br /&gt;
* System -&amp;gt; Notifications &lt;br /&gt;
** enable notifications&lt;br /&gt;
** disable &amp;quot;Do not disturb&amp;quot; or allow myApps as priority application while &amp;quot;Do not disturb&amp;quot; is active&lt;br /&gt;
** enable notifications for myApps in the list of applications&lt;br /&gt;
* System -&amp;gt; Focus &lt;br /&gt;
** if a focus session is active and the &amp;quot;Do not disturb&amp;quot; is activated during a focus session, make sure that myApps is a priority application (see above)&lt;br /&gt;
&lt;br /&gt;
==== macOS Notifications ====&lt;br /&gt;
Notifications are the same as on Windows.&lt;br /&gt;
The difference is, that for macOS, notifications need to be allowed in the system settings.&lt;br /&gt;
Go to Notifications - myApps, select Banner and enable all check marks.&lt;br /&gt;
&lt;br /&gt;
=== Local phonebook access ===&lt;br /&gt;
&#039;&#039;&#039;Contact Search:&#039;&#039;&#039; The myApps platform services implement an &#039;&#039;API provider&#039;&#039; for the [http://sdk.innovaphone.com/web1/com.innovaphone.search/lib1_api_search.htm &#039;&#039;com.innovaphone.search&#039;&#039; API]]. They perform search capabilities on the OS&#039; local phone books which can be used by Apps like the &#039;&#039;phoneapp&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Apps would send a &#039;&#039;Search&#039;&#039; request to the API:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;*&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;4&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;Search&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;contact&amp;quot;,&amp;quot;search&amp;quot;:&amp;quot;john doe&amp;quot;},&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.search&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
Search results are delivered as &#039;&#039;SearchInfo&#039;&#039; messages:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiResult&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;3&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;@local-8125d22e37-519d-4056-bfe5-c52ef2ae8fabb0&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;client&amp;quot;:&amp;quot;@client-f62702dd86-be3f-47fc-b4bc-7a21627b75b2ea&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;SearchInfo&amp;quot;,&amp;quot;relevance&amp;quot;:2000,&amp;quot;adjust&amp;quot;:true,&amp;quot;type&amp;quot;:&amp;quot;contact&amp;quot;,&amp;quot;contact&amp;quot;:{&amp;quot;givenname&amp;quot;:&amp;quot;John&amp;quot;,&amp;quot;sn&amp;quot;:&amp;quot;Doe&amp;quot;,&amp;quot;company&amp;quot;:&amp;quot;ACME&amp;quot;,&amp;quot;position&amp;quot;:&amp;quot;Head of everything&amp;quot;,&amp;quot;telephonenumber&amp;quot;:[&amp;quot;11111&amp;quot;,&amp;quot;22222&amp;quot;],&amp;quot;homephone&amp;quot;:[&amp;quot;+4944444&amp;quot;,&amp;quot;33333&amp;quot;],&amp;quot;mobile&amp;quot;:[&amp;quot;+49 (123) 55555&amp;quot;]}},&amp;quot;api&amp;quot;:&amp;quot;com.innovaphone.search&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reverse Lookup:&#039;&#039;&#039; The myApps platform services implement an &#039;&#039;API provider&#039;&#039; for the [http://sdk.innovaphone.com/web1/com.innovaphone.phonelookup/lib1_api_phonelookup.htm &#039;&#039;com.innovaphone.phonelookup&#039;&#039; API]. They perform search capabilities on the OS&#039; local phone books which can be used by Apps like the &#039;&#039;phoneapp&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Apps would send a &#039;&#039;Lookup&#039;&#039; request to the API: &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;*&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;4&amp;quot;,&amp;quot;msg&amp;quot;:{ mt: &amp;quot;Lookup&amp;quot;, prefixIntl: &amp;quot;000&amp;quot;, prefixNtl: &amp;quot;00&amp;quot;, prefixExt:&amp;quot;0&amp;quot;, area: &amp;quot;7031&amp;quot;, country: &amp;quot;49&amp;quot;, lookup: &amp;quot;0004970311234567&amp;quot; },&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.lookup&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Search results are delivered as &#039;&#039;LookupInfo&#039;&#039; messages:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiResult&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;3&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;@local-8125d22e37-519d-4056-bfe5-c52ef2ae8fabb0&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;client&amp;quot;:&amp;quot;@client-f62702dd86-be3f-47fc-b4bc-7a21627b75b2ea&amp;quot;,&amp;quot;msg&amp;quot;:{mt: &amp;quot;LookupInfo&amp;quot;, dn: &amp;quot;Jake Blues&amp;quot;, contact: { telephonenumber: [&amp;quot;0004970311234567&amp;quot;], givenname: &amp;quot;Jake&amp;quot;, sn: &amp;quot;Blues&amp;quot;, company: &amp;quot;Blues Brothers&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Windows ====&lt;br /&gt;
On Windows, the search and lookup are performed in all of the user&#039;s Outlook contact folders.  As opposed to the search implemented in the &#039;&#039;Contacts&#039;&#039; and &#039;&#039;Users&#039;&#039; App, all items are returned which match any of the search words (i.e. searching for &#039;&#039;a b&#039;&#039; will return items matching either &#039;&#039;a&#039;&#039; or &#039;&#039;b&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
; searched properties : firstname, lastname&lt;br /&gt;
; returned properties : Following Outlook contact phone number properties are returned  (if available):&lt;br /&gt;
&lt;br /&gt;
:* OFFICE_TELEPHONE_NUMBER as &#039;&#039;telephonenumber&#039;&#039;&lt;br /&gt;
:* OFFICE2_TELEPHONE_NUMBER as &#039;&#039;telephonenumber&#039;&#039;&lt;br /&gt;
:* HOME_TELEPHONE_NUMBER as &#039;&#039;homephone&#039;&#039;&lt;br /&gt;
:* HOME2_TELEPHONE_NUMBER as &#039;&#039;homephone&#039;&#039;&lt;br /&gt;
:* MOBILE_TELEPHONE_NUMBER as &#039;&#039;mobile&#039;&#039;&lt;br /&gt;
:* BUSINESS_FAX_NUMBER as &#039;&#039;facsimiletelephonenumber&#039;&#039;&lt;br /&gt;
Note that contact information is cached in the search provider.  Updated contacts may therefore become effective after a while only.&lt;br /&gt;
Outlook search will create its own trace file &amp;lt;code&amp;gt;myAppsOutlookSearch-&amp;lt;/code&amp;gt;&#039;&#039;date-time&#039;&#039;&amp;lt;code&amp;gt;.txt&amp;lt;/code&amp;gt; in the standard trace directory.&lt;br /&gt;
&lt;br /&gt;
This search provider is always installed and can be disabled.  There is no need (nor possibility) to enable it in the &#039;&#039;Apps&#039;&#039; tab of the PBX&#039;s user object.  Also, no &#039;&#039;App&#039;&#039; object needs to be created for it.&lt;br /&gt;
&lt;br /&gt;
==== Android/iOS ====&lt;br /&gt;
The search and lookup are performed in the contacts.&lt;br /&gt;
&lt;br /&gt;
==== macOS ====&lt;br /&gt;
The search and lookup are performed in the contacts. If you wish to disable local contact lookup, go to system settings - Security &amp;amp; Privacy and disable the access to contacts for myapps.&lt;br /&gt;
=== Microsoft Office integration ===&lt;br /&gt;
&lt;br /&gt;
The myApps platform services has a &#039;&#039;office presence provider&#039;&#039; that can provide the user&#039;s presence state to Office applications.  See [[{{NAMESPACE}}:Concept_myApps_Office_Integration|myApps Office Integration]] for details.&lt;br /&gt;
&lt;br /&gt;
This feature is installed by default.  However, it can be disabled using the &#039;&#039;OFFICEPRESENCE&#039;&#039; MSI Parameter.  Also, a check-mark is available in the setup dialog.&lt;br /&gt;
&lt;br /&gt;
=== Call an external application for calls ===&lt;br /&gt;
&lt;br /&gt;
Phone Apps (such as the phoneapp or softphone) can initiate the start of an external application when a new call appears (either incoming or outgoing).  The actual spawning of the application is done by the myApps platform service.  Also, the application properties (such as e.g. the executable&#039;s path) is configured in the myApps platform services (see [[#UI elements|Advanced settings]] in the &#039;&#039;UI elements&#039;&#039; section below).&lt;br /&gt;
&lt;br /&gt;
A number of arguments can be passed to the application by substituting $-variables in the &#039;&#039;Parameter&#039;&#039; field:&lt;br /&gt;
&lt;br /&gt;
; $n : phone number as dialed (called party number for outgoing calls) or received (calling party number for incoming calls)&lt;br /&gt;
&lt;br /&gt;
; $N : called or calling party number in &#039;&#039;national&#039;&#039; format (e.g. 07031730090)&lt;br /&gt;
&lt;br /&gt;
; $I : called or calling party number in &#039;&#039;international&#039;&#039; format (e.g. +497031730090)&lt;br /&gt;
&lt;br /&gt;
: note that both $N and $I only work if $n includes both subscriber number and area code (e.g. 07031730090). Otherwise they are equal to $n&lt;br /&gt;
&lt;br /&gt;
; $d : display name of peer (if known)&lt;br /&gt;
&lt;br /&gt;
; $u : URI name of the peer (if available eg with a federation call)&lt;br /&gt;
&lt;br /&gt;
; $c : conference id&lt;br /&gt;
&lt;br /&gt;
: this is a globally unique ID for this call and may be used to relate the call to the &#039;&#039;guid&#039;&#039; found in the CallInfo structure in the [http://wiki.innovaphone.com/index.php?title=Reference10:SOAP_API#CallInfo SOAP-API] and [http://sdk.innovaphone.com/doc/appwebsocket/RCC.htm RCC-API ].  Also, corresponding [[Reference10:Call Detail Record CDR PBX|CDRs]] can be related using the &#039;&#039;event&#039;&#039; tag&#039;s &#039;&#039;conf&#039;&#039; attribute.&lt;br /&gt;
The start of an external application can be requested using the &#039;&#039;com.innovaphone.externalapps&#039;&#039; API.&lt;br /&gt;
&lt;br /&gt;
Some setup examples are [[Howto:Integrate External Apps in innovaphone UC clients|shown here]].&lt;br /&gt;
&lt;br /&gt;
=== Push ===&lt;br /&gt;
&lt;br /&gt;
Mobile operating systems usually inhibit network operation of apps which run in the background or are closed by the user.  This is done in order to reduce battery consumption.  Unfortunately, this also stops such apps to maintain a registration by regularly sending &#039;&#039;keep alive&#039;&#039; messages to a server (in our case to the PBX).  As a result, myApps will be disconnected from the PBX.   When the PBX determines that there is an event for the application which needs a response, it needs to wake up the app using a dedicated channel provided by the operating system.  This mechanism is know as &#039;&#039;push&#039;&#039;. When running on iOS or Android, myApps supports &#039;&#039;push&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;push&#039;&#039; to work, a [[{{NAMESPACE}}:PBX/Objects/Push|&#039;&#039;push object&#039;&#039;]] needs to be configured in the PBX .  Also, it needs to be enabled on the mobile phone for the myApps app.&lt;br /&gt;
This mechanism is quite similar in v12 and v13, so you can refer to [[{{NAMESPACE}}:Concept_Push_Notifications_for_iOS_and_Android|the concept for push notifications for iOS and Android]] for more details. &lt;br /&gt;
&lt;br /&gt;
Also, helpful hints can be found in [[Howto:Troubleshoot v13 Push with myApps for Android and iOS]].&lt;br /&gt;
&lt;br /&gt;
=== App Proxy ===&lt;br /&gt;
&lt;br /&gt;
myApps runs further &#039;&#039;Apps&#039;&#039; (such as e.g. the &#039;&#039;phoneapp&#039;&#039;) as a web page in an IFRAME of the browser myApps is running in.  The App&#039;s page code is loaded either from the PBX or from an &#039;&#039;application platform&#039;&#039; (AP).   This however would mean that the App&#039;s IFRAME would remain empty (a dead white screen) when the PBX or AP is not available. To make sure the App can start-up anyway, the myApps platform services feature the so-called &#039;&#039;App Proxy&#039;&#039;.  This is a caching proxy that caches all the App code so it is available even in case of network failure. When myApps runs in the context of the platform services, Apps are therefore not loaded from the App source directly, but from the local App proxy. &lt;br /&gt;
&lt;br /&gt;
The cached files are stored in the PCs local file system in the &amp;lt;code&amp;gt;%LOCALAPPDATA%\innovaphone\myApps\appproxy&amp;lt;/path&amp;gt;&amp;lt;/code&amp;gt;.  There is no configuration required.  However, if myApps seems to run with outdated or corrupt cached copies of the App, you can safely delete the entire directory.&lt;br /&gt;
&lt;br /&gt;
=== Auto update ===&lt;br /&gt;
&lt;br /&gt;
On Windows and on macOS, the myApps platform services can auto-update themselves to a common version.  This is controlled by the [[{{NAMESPACE}}:PBX/Config/myApps#Launcher_Software_Update | &#039;&#039;Launcher Software Update&#039;&#039;]] settings under &#039;&#039;PBX/Config/myApps&#039;&#039; in the PBX. &lt;br /&gt;
&lt;br /&gt;
When myApps is started or the user logs in or myApps needs to re-connect to the PBX, the platform services will use the [http://sdk.innovaphone.com/web1/com.innovaphone.client/lib1_api_client.htm com.innovaphone.client API] to learn the desired version (&#039;&#039;launcherUpdateBuild&#039;&#039;, which is part of the API&#039;s &#039;&#039;model&#039;&#039;). If this differs from the current version, the platform services will try to download the respective new version. &lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;mt&amp;quot;: &amp;quot;ApiUpdate&amp;quot;,&lt;br /&gt;
    &amp;quot;apis&amp;quot;: {&lt;br /&gt;
        &amp;quot;com.innovaphone.client&amp;quot;: {&lt;br /&gt;
            &amp;quot;@client&amp;quot;: {&lt;br /&gt;
                &amp;quot;title&amp;quot;: &amp;quot;innovaphone myApps&amp;quot;,&lt;br /&gt;
                &amp;quot;model&amp;quot;: {&lt;br /&gt;
                    &amp;quot;launcher&amp;quot;: true,&lt;br /&gt;
                    &amp;quot;launcherUpdateBuild&amp;quot;: &amp;quot;134906&amp;quot;,&lt;br /&gt;
                    &amp;quot;appStoreUrl&amp;quot;: &amp;quot;http://store.innovaphone.com/release/download/&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The installation of the downloaded version is done by the &#039;&#039;innovaphonemyAppsUpdateService&#039;&#039;. This service is installed and enabled during the initial installation of the myApps platform services.  To disable auto-update, either leave the &#039;&#039;Launcher Software Update&#039;&#039; settings empty or set the service&#039;s start mode to &#039;&#039;disabled&#039;&#039; in the Windows &#039;&#039;services control panel&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note that on Windows the update service does not work on terminal servers. Administrators must do myApps base services updates using standard windows mechanisms.&lt;br /&gt;
&lt;br /&gt;
Note that on macOS if myApps has been installed from the Apple Store it is assumed that auto update from the PBX is not desired and disabled therefore.&lt;br /&gt;
&lt;br /&gt;
On Android/iOS/macOS updates can be downloaded from the respective app store.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;Devices&#039;&#039; app can not update software installed on Windows PCs directly. However, when the PBX is updated using an &#039;&#039;update job&#039;&#039; in the &#039;&#039;Devices&#039;&#039; App, the &#039;&#039;Launcher Software Update&#039;&#039; settings will be updated accordingly and hence the myApps base services will ultimately also be updated to the same version.&lt;br /&gt;
&lt;br /&gt;
==== Auto update flow on Windows ====&lt;br /&gt;
&lt;br /&gt;
* On start of myApps, myApps checks if an update is available and ready for installation&lt;br /&gt;
** if yes, the update is installed directly, without user interaction (a popup is shown during the installation)&lt;br /&gt;
** if not, myApps starts&lt;br /&gt;
* if an update is available while myApps is already running, an update notification will be shown which let&#039;s the user choose to install the update now or later (the notification will then popup again after one hour)&lt;br /&gt;
&lt;br /&gt;
==UI elements ==&lt;br /&gt;
There are a few user interfaces provided by the platform services:&lt;br /&gt;
===tray-icon (Windows only) ===&lt;br /&gt;
::[[Image:myapps-tray.png|myapps-tray.png/|myapps-tray.png/]]&lt;br /&gt;
:Allows to&lt;br /&gt;
:* terminate myApps&lt;br /&gt;
:* toggle the &#039;&#039;autostart&#039;&#039; state&lt;br /&gt;
:* toggle the &#039;&#039;show in task bar&#039;&#039; state&lt;br /&gt;
:* open the trace folder&lt;br /&gt;
:&lt;br /&gt;
=== PBX connect form===&lt;br /&gt;
:: [[Image:myapps-connect.png|myapps-connect.png/|myapps-connect.png/]]&lt;br /&gt;
: Allows the user to specify the connect data for the PBX (i.e. IP address or DNS name)&lt;br /&gt;
:&lt;br /&gt;
=== Advanced settings===&lt;br /&gt;
::[[Image:myapps-settings0.png|myapps-settings0.png/|myapps-settings0.png/]]&lt;br /&gt;
::[[Image:myapps-settings.png|myapps-settings.png/|myapps-settings.png/]] [[Image:myapps-settings2.png|myapps-settings2.png/|myapps-settings2.png/]] [[Image:myapps-settings3.png|myapps-settings3.png/|myapps-settings3.png/]]&lt;br /&gt;
&lt;br /&gt;
: Allows to modify various platform dependant settings (such as e.g. the hotkey selection on Windows)&lt;br /&gt;
&lt;br /&gt;
== Interfaces ==&lt;br /&gt;
=== Provided APIs ===&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.search/lib1_api_search.htm com.innovaphone.search] : access to local phone book entries by the [[#Local phonebook access|Local phonebook access]] component.&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.launcher/com.innovaphone.launcher.htm com.innovaphone.launcher] : display of OS specific user notifications and receipt of related user actions&lt;br /&gt;
; com.innovaphone.notificationhandler : reports back click on a notification.&lt;br /&gt;
; com.innovaphone.externalapps : to start external applications, see [[#Call an external application for calls|Call an external application for calls]]  above&lt;br /&gt;
&lt;br /&gt;
=== Used APIs ===&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm com.innovaphone.phone] : used to initiate new or manipulate existing calls by the [[#Hot keys|Hot keys]] and [[#URL handler|URL handler]] components.&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.chat/com.innovaphone.chat.htm com.innovaphone.chat] : used to start a new chat by the [[#URL handler|URL handler]] component.&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.client/lib1_api_client.htm com.innovaphone.client] : the model is used to learn the update settings, see [[#Auto update|Auto update]] above&lt;br /&gt;
&lt;br /&gt;
=== Protocols ===&lt;br /&gt;
&lt;br /&gt;
; [https://sdk.innovaphone.com/doc/launcher/Media.htm Media Protocol] : used by apps to allocate RTP channels, see [[#RTP service for audio.2C video and data|RTP service for audio, video and data]] above&lt;br /&gt;
&lt;br /&gt;
== Related App Services ==&lt;br /&gt;
&lt;br /&gt;
none&lt;br /&gt;
&lt;br /&gt;
== Known limitations ==&lt;br /&gt;
; Incoming call as banner on myApps for iOS : Since iOS 14 the iOS CallKit presents incoming calls as a banner leaving the original green answer button of myApps visible. Use only the blue button of the banner to accept the call or change iPhone Settings, App &amp;quot;Phone&amp;quot;, &amp;quot;Incoming Calls&amp;quot; to &amp;quot;Full Screen&amp;quot; to hide the myApps user interface again during call answering.&lt;br /&gt;
&lt;br /&gt;
; Call answer in speakerphone mode even with active Bluetooth headset on myApps for iOS : This causes unwanted speakerphone operation if the smartphone is used with a Bluetooth car audio system. The behaviour can be changed by selecting &#039;&#039;Bluetooth Headset&#039;&#039; in this setting:&lt;br /&gt;
:&#039;&#039;iOS Settings-&amp;gt;Accessibility-&amp;gt;Touch-&amp;gt;Call Audio Routing: Automatic / Bluetooth Headset / Speaker&#039;&#039;&lt;br /&gt;
:&#039;&#039;iOS Einstellungen-&amp;gt;Bedienungshilfen-&amp;gt;Tippen-&amp;gt;Anrufaudioausgabe: Automatisch / Bluetooth-Headset / Lautsprecher&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; Windows Server 2016 (Windows 10 Build 1607) : windows just shows the first notification. Further notifications aren&#039;t displayed until the previous ones are removed from the notification center. Current windows builds do not show this behaviour anymore.&lt;br /&gt;
&lt;br /&gt;
; Problems on Mac computers with Yealink USB headsets&lt;br /&gt;
: we have received reports that myApps quits unexpectedly on some Mac computers when a Yealink headset is plugged in.  Unfortunately, we could not find out the cause yet.  If you use Yealink USB headsets and have a similar issue, please open a support ticket and send myApps traces.&lt;br /&gt;
&lt;br /&gt;
; Poly / Plantronics headset buttons only functional if myApps is started with Rosetta&lt;br /&gt;
: myApps macOS supports Apple M1/M2 hardware natively. However, the Poly / Plantronics headset SDK is only available for Intel platform and thus myApps needs to be started via Apple&#039;s Intel emulator Rosetta if a Poly / Plantronics headset is used. This is done with right-click on the myApps executable, &#039;&#039;Information&#039;&#039;, &#039;&#039;Open with Rosetta&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
; Windows surface devices may not work correctly&lt;br /&gt;
: Chromium does not get touch keyboard events. USB Keyboards may not be recognized either.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services are installed on Windows using the .msi file found in the &#039;&#039;myApps Windows&#039;&#039; package from [https://store.innovaphone.com/release/download.htm store.innovaphone.com].&lt;br /&gt;
&lt;br /&gt;
myApps can update itself automatically, see [[#Auto update|Auto update]] above.&lt;br /&gt;
&lt;br /&gt;
=== MSI Parameters and install options ===&lt;br /&gt;
&lt;br /&gt;
The MSI installer of myApps for Windows supports the following parameters and can be edited with [https://docs.microsoft.com/en-us/windows/win32/msi/orca-exe Microsoft Orca]. You can add your parameters in the table &#039;&#039;property&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
; SERVER (REG_SZ): the PBX&#039;s server address (without protocol like https://)&lt;br /&gt;
; OFFICEPRESENCE (REG_DWORD): &#039;&#039;&#039;false&#039;&#039;&#039; to disable presence integration in Microsoft Office&lt;br /&gt;
: this is also available as a check-mark when running the install manually&lt;br /&gt;
&lt;br /&gt;
; DISABLEHEADSETS (REG_DWORD): &#039;&#039;&#039;true&#039;&#039;&#039; to disable headsets support, see [[#Device handling|Device handling]] above&lt;br /&gt;
&lt;br /&gt;
; EXTERNALAPPS (REG_SZ): pre-define external applications, see [[#Call an external application for calls|Call an external application for calls]] above&lt;br /&gt;
: e.g. &amp;lt;code&amp;gt;&amp;quot;{&amp;quot;&amp;quot;externalApps&amp;quot;&amp;quot;:[{&amp;quot;&amp;quot;id&amp;quot;&amp;quot;:0,&amp;quot;&amp;quot;name&amp;quot;&amp;quot;:&amp;quot;&amp;quot;Wireshark&amp;quot;&amp;quot;,&amp;quot;&amp;quot;path&amp;quot;&amp;quot;:&amp;quot;&amp;quot;C:\\Program Files\\Wireshark\\Wireshark.exe&amp;quot;&amp;quot;,&amp;quot;&amp;quot;param&amp;quot;&amp;quot;:&amp;quot;&amp;quot;test $I&amp;quot;&amp;quot;}]}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; FORCERESTART (REG_DWORD): &#039;&#039;&#039;true&#039;&#039;&#039; (or any string ...) kills myApps during the installation and restarts it for the currently logged in user, if it was running&lt;br /&gt;
&lt;br /&gt;
; DISABLELOCALHOST (REG_DWORD): &#039;&#039;&#039;true&#039;&#039;&#039; to disable use of &#039;&#039;&#039;localhost&#039;&#039;&#039; string to access the local webserver. Use &#039;&#039;&#039;127.0.0.1&#039;&#039;&#039; instead&lt;br /&gt;
&lt;br /&gt;
; EXCLUDEINTERFACES (REG_SZ): some VPN interfaces are not detected by Windows as IF_TYPE_PPP or IF_TYPE_TUNNEL and therefore the &#039;&#039;&#039;media outside VPN&#039;&#039;&#039; setting is not taking effect. With this option interfaces can be pre-defined that will not be used for media. Interfaces must be comma separated&lt;br /&gt;
: e.g. &amp;lt;code&amp;gt;EXCLUDEINTERFACES=&amp;quot;172,192.168,10.10&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Current settings are stored in the registry at &amp;lt;code&amp;gt;Computer\HKEY_CURRENT_USER\Software\innovaphone\myApps&amp;lt;/code&amp;gt; or at &amp;lt;code&amp;gt;Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\innovaphone\myApps&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Boolean values like OfficePresence are stored in registry entries with type REG_DWORD and values 1 or 0. 0 disables the setting and 1 enables it.&lt;br /&gt;
&lt;br /&gt;
== iOS ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services are installed on iOS by loading &#039;&#039;innovaphone myApps&#039;&#039; from the &#039;&#039;App Store&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Configuration via MDM ===&lt;br /&gt;
&lt;br /&gt;
the PBX&#039;s server URL can be pre-configured by specifying this dictionary in the MDM&lt;br /&gt;
 &amp;lt;plist&amp;gt;&lt;br /&gt;
   &amp;lt;dict&amp;gt;&lt;br /&gt;
     &amp;lt;key&amp;gt;server&amp;lt;/key&amp;gt;&lt;br /&gt;
     &amp;lt;string&amp;gt;pbx.example.com&amp;lt;/string&amp;gt;&lt;br /&gt;
   &amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt;/plist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== macOS ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services might be installed directly from the Apple store. An installer package &amp;lt;code&amp;gt;myapps.pkg&amp;lt;/code&amp;gt; and a disk image &amp;lt;code&amp;gt;myapps.dmg&amp;lt;/code&amp;gt; is also available from the innovaphone app store. Install &amp;lt;code&amp;gt;myapps.pkg&amp;lt;/code&amp;gt; by double-click on the file and follow the instructions of the installer. myApps becomes available in the Applications folder and can be opened by double-click. Or download and open &amp;lt;code&amp;gt;myapps.dmg&amp;lt;/code&amp;gt; and double klick myApps. If desired integrate it into the app dock by right click, &#039;&#039;Options, Keep in the dock&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If installed from the innovaphone app store, myApps can update itself automatically, see [[#Auto update|Auto update]] above.&lt;br /&gt;
&lt;br /&gt;
If installed from the Apple store, macOS notifies about updates on the Apple store. myApps [[#Auto update|Auto update]] is disabled then.&lt;br /&gt;
&lt;br /&gt;
If a clean-install of the client is necessary, the folder &amp;quot;/Users/username/Library/Containers/myapps&amp;quot; needs to be deleted. To be on the safe side also delete it from the trash bin.&lt;br /&gt;
&lt;br /&gt;
=== Configuration via MDM ===&lt;br /&gt;
&lt;br /&gt;
the PBX&#039;s server URL can be pre-configured by specifying this dictionary in the MDM&lt;br /&gt;
 &amp;lt;plist&amp;gt;&lt;br /&gt;
   &amp;lt;dict&amp;gt;&lt;br /&gt;
     &amp;lt;key&amp;gt;server&amp;lt;/key&amp;gt;&lt;br /&gt;
     &amp;lt;string&amp;gt;pbx.example.com&amp;lt;/string&amp;gt;&lt;br /&gt;
   &amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt;/plist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preferences ===&lt;br /&gt;
&lt;br /&gt;
macOS supports preference settings that can be set via a shell command or via Mac remote management&lt;br /&gt;
&lt;br /&gt;
 defaults write com.innovaphone.client-ios-14r1 server &amp;quot;PBX-server-URL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The following parameters and can be set through this method:&lt;br /&gt;
&lt;br /&gt;
; server: the PBX&#039;s server URL&lt;br /&gt;
&lt;br /&gt;
=== Setting myApps as Default App for SIP-URLs ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|defaults write com.apple.LaunchServices/com.apple.launchservices.secure LSHandlers -array-add &#039;{&lt;br /&gt;
   LSHandlerURLScheme = sip;&lt;br /&gt;
   LSHandlerRoleAll = &amp;quot;&amp;lt;CFBundleIdentifier&amp;gt;&amp;quot;;&lt;br /&gt;
}&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To find the “CFBundleIdentifier”, proceed as follows:&lt;br /&gt;
* In the Finder under “Applications”, search for the desired myApps client that you want to set as the default app.&lt;br /&gt;
* Right-click on “Show package contents” -&amp;gt; you will find the “CFBundleIdentifier” in the Info.plist file.&lt;br /&gt;
&lt;br /&gt;
A restart of the MAC is required.&lt;br /&gt;
&lt;br /&gt;
=== Using Sennheiser headsets ===&lt;br /&gt;
If you use Sennheiser headsets, you should also install the then-current &amp;lt;code&amp;gt;DSEA_SDK_v&amp;lt;/code&amp;gt;&#039;&#039;version&#039;&#039;&amp;lt;code&amp;gt;.pkg&amp;lt;/code&amp;gt; package, after you installed the myApps client.  Without that, audio will still work, but not the controls on the headset.  You will need to keep that up-to-date yourself, as it is not updated by myApps&#039;s auto-update function.&lt;br /&gt;
&lt;br /&gt;
== Android ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services are installed on Android by loading &#039;&#039;innovaphone myApps&#039;&#039; from the &#039;&#039;Play Store&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Configuration via MDM ===&lt;br /&gt;
&lt;br /&gt;
the PBX&#039;s server URL can be pre-configured by specifying a property &amp;quot;server&amp;quot; with string value &amp;quot;pbx.example.com&amp;quot; in the MDM.&lt;br /&gt;
&lt;br /&gt;
== IP270 ==&lt;br /&gt;
For configuration instructions, refer to the [[Reference16r1:Concept IP270&amp;amp;action=edit&amp;amp;redlink=1|IP270 concept article]].&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
&lt;br /&gt;
== Server configuration ==&lt;br /&gt;
When opening myApps for the first time, the user is prompted for the Server. Usually only the hostname (DNS host name or IP address) needs to be configured.&lt;br /&gt;
&lt;br /&gt;
But there are more options for special PBX configurations.&lt;br /&gt;
&lt;br /&gt;
; Non-standard HTTPS port&lt;br /&gt;
: If the PBX uses a non-standard HTTPS port, it must be appended to the host name separated by a colon (&amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;).&lt;br /&gt;
: Example: &amp;lt;code&amp;gt;pbx.example.com:4444&amp;lt;/code&amp;gt; (expands to &amp;lt;code&amp;gt;https://pbx.example.com:4444/PBX0/APPCLIENT/appclient.htm&amp;lt;/code&amp;gt;)&lt;br /&gt;
; DynPBX module name&lt;br /&gt;
: If the PBX is a DynPBX, the module id must be appended to PBX0 separated - (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;).&lt;br /&gt;
: Example: &amp;lt;code&amp;gt;pbx.example.com/PBX0-1&amp;lt;/code&amp;gt; (expands to &amp;lt;code&amp;gt;https://pbx.example.com/PBX0-1/APPCLIENT/appclient.htm&amp;lt;/code&amp;gt;)&lt;br /&gt;
; Softphone physical location&lt;br /&gt;
: If user defined physical location shall be used for softphone, you can append it using a parameter &amp;lt;code&amp;gt;#phys=&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Example: &amp;lt;code&amp;gt;pbx.example.com#phys=slave&amp;lt;/code&amp;gt; (expands to &amp;lt;code&amp;gt;https://pbx.example.com/PBX0/APPCLIENT/appclient.htm#phys=slave&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Example 1: PBX pbx.example.com with standard configuration&lt;br /&gt;
 pbx.example.com&lt;br /&gt;
&lt;br /&gt;
Example 2: PBX slave.example with DynPBX module ID 1, HTTPS port 4444 and physical location master&lt;br /&gt;
 slave.example.com:4444/PBX0-1#phys=master&lt;br /&gt;
&lt;br /&gt;
=== HTTP proxy support ===&lt;br /&gt;
&lt;br /&gt;
myApps platform services do support operation via HTTP proxy now. If one or more proxies have been configured in the network settings of the operating system for the active network connection, HTTP CONNECT tunnels are established.&lt;br /&gt;
&lt;br /&gt;
On Windows user name and password can be specified for the tunnel servers as generic credentials in the credentials manager (Anmeldeinformationsverwaltung). The name of the credentials must be the tunnel server hostname.&lt;br /&gt;
&lt;br /&gt;
On Android user name and password can be specified through Android &#039;&#039;Settings, Accounts&#039;&#039; by adding a myApps &#039;&#039;HTTP Proxy Credentials&#039;&#039; account. The name of the account must be the tunnel server hostname.&lt;br /&gt;
&lt;br /&gt;
== Platform specific settings ==&lt;br /&gt;
When myApps runs under the myApps platform services, it will show various platform specific settings as part of its &#039;&#039;burger menu&#039;&#039;, so the user can set them.  See &#039;&#039;Advanced settings&#039;&#039; in [[#UI elements|UI elements]] above.&lt;br /&gt;
&lt;br /&gt;
Some options can also be set globally for all myApps clients in the PBX&#039;s [[{{NAMESPACE}}:PBX/Config/myApps#Client_Settings|PBX/Config/myApps &#039;&#039;Client Settings&#039;&#039;]]&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Option&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Description&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Where to set&lt;br /&gt;
&lt;br /&gt;
!&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot;| Availability&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| || || User menu || PBX &#039;&#039;Client Settings&#039;&#039; || Windows || iOS || Android || macOS&lt;br /&gt;
|IP270&amp;lt;ref&amp;gt;myApps-IP270 offers device specific settings explained in [[Reference16r1:Concept IP270&amp;amp;action=edit&amp;amp;redlink=1|IP270 concept article]]&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Autostart || Launch myApps on login || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Appear offline after || controls after which idle time a user is considered &#039;&#039;inactive&#039;&#039;. See [[#User activity|User activity]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Hotkeys || Hotkeys for call dial, accept, reject. See [[#Hot keys|Hot keys]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Docking || Docking mode (left, right, none). See [[#???|??]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Desktop notifications|| Turn on/off platform notifications. See [[#Notifications|  Notifications]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| VPN || Disable VPN address for ICE candidate selection. See [[#RTP ports| RTP ports]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Show in taskbar|| Show myApps in the taskbar in addition to it&#039;s tray icon.  || &amp;amp;#10004; ||&amp;amp;#10007; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Log flags || turn on/off certain trace levels. See [[#Troubleshooting|Troubleshooting]] below.  || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10004;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| External applications || define the applications available for Apps to be started. See [[#Call an external application for calls|Call an external application for calls]] above.  || &amp;amp;#10004; ||&amp;amp;#10007; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Ring in headset || send ring tone for incoming to headset instead of loudspeaker.  || &amp;amp;#10004; ||&amp;amp;#10007; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start parameters for Windows ==&lt;br /&gt;
&lt;br /&gt;
On Windows, it is not possible to pass start parameters from the [https://www.chromium.org/developers Chromium documentation] to the myApps process.&lt;br /&gt;
&lt;br /&gt;
== OS Settings for Windows ==&lt;br /&gt;
Windows settings can influence the display of &#039;&#039;Desktop notifications&#039;&#039;. See [https://support.microsoft.com/en-us/help/4028678/windows-10-change-notification-settings Change notification settings in Windows 10/11] for details.&lt;br /&gt;
&lt;br /&gt;
=== Windows 11 ===&lt;br /&gt;
&lt;br /&gt;
* Windows 11 has a feature &amp;quot;do not disturb&amp;quot;. This hides notifications if enabled.&lt;br /&gt;
* Windows 11 has a feature &amp;quot;focus&amp;quot;. This enables &amp;quot;do not disturb&amp;quot; and thus hides notifications too.&lt;br /&gt;
* Windows 11 has priority settings for notifications. Ensure that VoIP notifications for calls are allowed any maybe also include myApps as an App which is allowed to show notifications.&lt;br /&gt;
&lt;br /&gt;
== OS settings for Android ==&lt;br /&gt;
; Events : The appearance of notifications can be controlled here.&lt;br /&gt;
&lt;br /&gt;
; Call accounts : For proper incoming call signaling, the call account &#039;&#039;myApps&#039;&#039; needs to be enabled. Note that on Samsung smartphones the call account switch likely toggles back and a few tries may need to be done until it persists. Please double-check the state.&lt;br /&gt;
&lt;br /&gt;
; Preferred Calling Account : Choose which calling account (myApps/SIM/..) should be used for outgoing calls initiated from within the native phone app / phone book.&lt;br /&gt;
&lt;br /&gt;
; Background data, unlimited data usage : Grant background data use to enable &#039;&#039;myApps&#039;&#039; to connect to the PBX immediately on an incoming call.&lt;br /&gt;
&lt;br /&gt;
; Overlaying : This setting is not needed if call account &#039;&#039;myApps&#039;&#039; has been enabled. Should there be a reason for not enabling call account &#039;&#039;myApps&#039;&#039;, the permission for overlaying needs to be granted on Android 10 or higher for proper call signaling.&lt;br /&gt;
&lt;br /&gt;
Note: If no SIM card is installed some Android smartphones exhibit a problem dialing from the smartphone contacts. The contacts app shows a choice &#039;&#039;Select SIM card for this call&#039;&#039; but all possible dialers are greyed out. In this case make myApps the default phone app in Android settings &#039;&#039;Apps, Default apps, Telephony&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== OS settings for iOS ==&lt;br /&gt;
; Notifications : The appearance of notifications can be controlled in iOS &#039;&#039;Settings, myApps&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== OS settings for macOS ==&lt;br /&gt;
&lt;br /&gt;
; Notifications : The appearance of notifications can be controlled in macOS &#039;&#039;Preferences, Notifications, myApps&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
myApps platform services can write various traces for debugging.  Trace can be turned on and off selectively in the [[#Advanced settings|Advanced settings]].&lt;br /&gt;
&lt;br /&gt;
The following trace flags can be set:&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;Recommended trace options are: &#039;&#039;&#039;App, Browser, ICE, TURN, Signaling and Audio&#039;&#039;&#039;. Please do not activate other flags unless innovaphone support says otherwise&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!style=&amp;quot;text-align: left; font-weight: bold&amp;quot; |  Abbreviation&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align: left; font-weight: bold&amp;quot; |code&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| App||0x000000001|| logs from the App Service itself&lt;br /&gt;
|-&lt;br /&gt;
| DNS||0x000000008|| logs DNS requests and results&lt;br /&gt;
|-&lt;br /&gt;
| HTTP client||0x000000080|| http client logs&lt;br /&gt;
|-&lt;br /&gt;
| TLS||0x000000400|| TLS logs&lt;br /&gt;
|-&lt;br /&gt;
| TCP||0x000000800|| TCP logs&lt;br /&gt;
|-&lt;br /&gt;
| LDS||0x000001000|| local domain sockets&lt;br /&gt;
|-&lt;br /&gt;
| WebSocket client||0x000004000|| logs outgoing websocket connections&lt;br /&gt;
|-&lt;br /&gt;
| App WebSocket||0x000008000|| logs app websocket connections (e.g. from PBX objects to an App Service or from the UI to the App Service)&lt;br /&gt;
|-&lt;br /&gt;
| UDP||0x000200000|| UDP logs&lt;br /&gt;
|-&lt;br /&gt;
| DTLS||0x000400000|| logs DTLS handshake and messages&lt;br /&gt;
|-&lt;br /&gt;
| Media||0x000800000|| logs media events&lt;br /&gt;
|-&lt;br /&gt;
| Media channel||0x001000000|| logs RTP/SCTP media connections&lt;br /&gt;
|-&lt;br /&gt;
| ICE||0x002000000|| logs ICE messages between peers&lt;br /&gt;
|-&lt;br /&gt;
| TURN||0x004000000|| logs TURN messages between peers&lt;br /&gt;
|-&lt;br /&gt;
| AppSharing||0x008000000|| logs AppSharing connection&lt;br /&gt;
|-&lt;br /&gt;
| Audio||0x010000000|| logs Audio connection and headset events&lt;br /&gt;
|-&lt;br /&gt;
| Video||0x020000000|| logs video connection and webcam events&lt;br /&gt;
|-&lt;br /&gt;
| Browser||0x040000000|| logs Chromium events&lt;br /&gt;
|-&lt;br /&gt;
| AppProxy||0x080000000|| logs requests which are proxied between the local webserver and the remote server&lt;br /&gt;
|-&lt;br /&gt;
| Webserver ||0x200000000|| enables webserver specific logs&lt;br /&gt;
|-&lt;br /&gt;
| Browser Console ||0x400000000|| logs browser console events&lt;br /&gt;
|-&lt;br /&gt;
| Signaling||0x800000000|| enables logs in the signaling module for debugging calls&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;code&#039;&#039; can be or&#039;ed and used as value for the &#039;&#039;Log flags&#039;&#039; field in [[{{NAMESPACE}}:PBX/Config/myApps#Client_Settings|PBX/Config/myApps/Client Settings]].&lt;br /&gt;
&lt;br /&gt;
; Windows :On Windows, traces are written to the &amp;lt;code&amp;gt;%LOCALAPPDATA%\innovaphone\myApps&amp;lt;/code&amp;gt; directory. If you start myApps with --log-size as parameter, you can define the maximum size of a log file (e.g. --log-size=100000000 would be 100MB for each file)&lt;br /&gt;
&lt;br /&gt;
:* myApps-&#039;&#039;date-time&#039;&#039;.txt : main log file for the platform services&lt;br /&gt;
&lt;br /&gt;
:* myAppsOutlookSearch-&#039;&#039;date-time&#039;&#039;.txt : log file for the Outlook phone book access&lt;br /&gt;
&lt;br /&gt;
:* myAppsHookController-&#039;&#039;date-time&#039;&#039;.txt : log file for the hot-key interceptor (see [[#Hot keys|Hot keys]])&lt;br /&gt;
&lt;br /&gt;
; :myApps update installation traces are written to the &amp;lt;code&amp;gt;%windir%\temp\&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
:* myAppsInstall.txt: MSI installation file&lt;br /&gt;
&lt;br /&gt;
; :myApps update service traces are written to the &amp;lt;code&amp;gt;%ProgramData%\innovaphone\myAppsUpdateService&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
:* myAppsUpdateService-&#039;&#039;date-time&#039;&#039;.txt: myApps update service traces&lt;br /&gt;
&lt;br /&gt;
;Android : traces can be sent by e-mail.&lt;br /&gt;
: also, an Android device might also be connected to a PC via an USB cable to get the traces. The files can be found in &amp;lt;code&amp;gt;Android/data/com.innovaphone.clientandroid/files&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; iOS : traces can be sent by e-mail.&lt;br /&gt;
&lt;br /&gt;
; macOS : traces can be sent by e-mail.&lt;br /&gt;
: also, the files can be found in &amp;lt;code&amp;gt;~/Library/Containers/com.innovaphone.client-ios/Data/Documents/&amp;lt;/code&amp;gt;. Press &#039;&#039;Alt+N&#039;&#039; followed by space to get tilde &#039;&#039;~&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
; IP270 : Refer to the [[Reference16r1:Concept IP270&amp;amp;action=edit&amp;amp;redlink=1#Troubleshooting|IP270 concept article section troubleshooting]].&lt;br /&gt;
&lt;br /&gt;
= Known Problems =&lt;br /&gt;
[[:Category:Problem myApps platform services|Known Problems]]&lt;br /&gt;
&lt;br /&gt;
= Related Articles =&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myApps]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myApps_Redundancy|Concept myApps Redundancy]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myApps_Office_Integration|Concept myApps Office Integration]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myAPPs_Search_in_local-Outlook_Contacts|Concept myAPPs Search in local Outlook Contacts]]&lt;br /&gt;
* [[{{NAMESPACE}}:Call_Detail_Record_CDR_PBX|Call Detail Records]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept Push Notifications for myPBX iOS and Android|Concept Push Notifications for myPBX iOS and Android]]&lt;br /&gt;
* [[Howto:Troubleshoot v13 Push with myApps for Android and iOS]]&lt;br /&gt;
* [[{{NAMESPACE}}:PBX/Config/myApps|Reference16r1:PBX/Config/myApps]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_IP270|IP270 concept article]]&lt;br /&gt;
[[Category:Concept myApps platform services]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_myApps_platform_services&amp;diff=78877</id>
		<title>Reference16r1:Concept myApps platform services</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_myApps_platform_services&amp;diff=78877"/>
		<updated>2026-02-10T12:32:29Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* myApps for Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|myApps]]&lt;br /&gt;
&lt;br /&gt;
myApps platform services provide various operating system specific services which can be used by other &#039;&#039;Apps&#039;&#039; running in the [[{{NAMESPACE}}:Concept myApps|myApps client]]. Those services typically are not available in the browser&#039;s JavaScript environment and hence must be implemented in native platform code. Therefore, the platform services are installed as native executable on the respective platform.&lt;br /&gt;
&lt;br /&gt;
When myApps is started in a web browser (and hence has no access to the platform services), some Apps will use [https://en.wikipedia.org/wiki/WebRTC WebRTC] services implemented by the browser instead.  For ease of reference, features available in this scenario are also described here.&lt;br /&gt;
&lt;br /&gt;
On windows, the platform services also come with their own web browser in which the myApps web App will be started then.  This browser is based on google&#039;s [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium] open source software.&lt;br /&gt;
= Applies To =&lt;br /&gt;
&lt;br /&gt;
* [[{{NAMESPACE}}:Concept myApps|myApps]]&lt;br /&gt;
* myApps for Windows&lt;br /&gt;
* myApps for macOS&lt;br /&gt;
* myApps for iOS&lt;br /&gt;
* myApps for Android&lt;br /&gt;
* myApps Web App (WebRTC)&lt;br /&gt;
* myApps for IP270&lt;br /&gt;
version 16r1&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
Not all features are available or required on all platforms.&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot;| Availability&lt;br /&gt;
|-&lt;br /&gt;
| || || Windows || iOS || Android || macOS || Browser&amp;lt;ref&amp;gt;This refers to the myApps web application running in a browser with no platform services available&amp;lt;/ref&amp;gt;&lt;br /&gt;
|IP270&lt;br /&gt;
|-&lt;br /&gt;
| [[#Device handling|Audio Devices]] || manage local audio devices to record and playback audio conversations || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; (audio available but devices managed by web browser) || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Video || manage local displays and cameras to capture and render video live stream || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; (video available but devices managed by web browser) || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Ringer || manage local ringing device || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Application sharing|Application sharing]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; presenter || share an application || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; consumer  || view an application shared by the peer || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Hot keys|Hot keys]] || capture key presses for quick invocation of phone apps (e.g. dial selected number) || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#URL Handler|tel: and sip: URI handler]] || intercept clicks on tel: and sip: links in web sites to invoke phone apps || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#User activity|User activity]] || set presence state according to user activity ||  &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004;&amp;lt;ref&amp;gt;limited, see [[#User activity|User activity]] below&amp;lt;/ref&amp;gt; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Docking || myApps can be docked persistently to the right or left edge of your screens ||  &amp;amp;#10004;  || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Multi-windowing || Apps can be launched in separate windows||  &amp;amp;#10004;  || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Recording|Recording]] || Calls can be recorded to recording app||  &amp;amp;#10004;  || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Notifications|Notifications]] || ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; display notifications || display notifications with OS standard mechanism ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; push notifications || receive push notifications while myApps is not running  ||  &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&amp;lt;ref&amp;gt;The browser needs to be running in order to receive push notifications.&amp;lt;/ref&amp;gt; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; chat and apps || display notifications for chat and other apps  ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; calls || display notifications for incoming calls  ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&amp;lt;ref&amp;gt;Call notifications are only displayed locally while the phone or softphone app is started.&amp;lt;/ref&amp;gt; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Local phonebook access|Local phonebook]] || access local phone book ||  &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Microsoft Office Integration|Office presence provider]] || maps PBX presence state to Microsoft office presence state ||  &amp;amp;#10004;  || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Call an external application for calls|External application start]] || start arbitrary external applications for calls || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#App Proxy|App Proxy]]|| a caching proxy that provides app persistence  || &amp;amp;#10004;  || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Auto update|Auto update]] || automatically updates myApps platform services to the same version the PBX has || &amp;amp;#10004;  || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004;&amp;lt;ref&amp;gt;The then-current web app is always loaded from the PBX upon startup and hence up-to-date by definition&amp;lt;/ref&amp;gt; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Three party conference || initiate 3-pty-conference using Softphone-App || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Exclude VPN || disable use of VPN connections for audio and appsharing || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Screen lock || myApps screen lock against unauthorised use || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
* innovaphone PBX 16r1 and up&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Recommended hardware requirements&lt;br /&gt;
* Processor: Dual-core 2Ghz or higher&lt;br /&gt;
* RAM: 4 Gb&lt;br /&gt;
&lt;br /&gt;
== myApps for Windows ==&lt;br /&gt;
* Windows 11 and up&lt;br /&gt;
* Windows Server 2016 and later versions&lt;br /&gt;
&lt;br /&gt;
=== 32 &amp;amp; 64 bit Windows ===&lt;br /&gt;
* 32 bit Windows: install the myAppsSetup32.msi from the App Store&lt;br /&gt;
* 64 bit Windows: install the myAppsSetup.msi from the App Store&lt;br /&gt;
** the 64 bit variant still installs into Program Files (x86), as the main myApps.exe is still a 32bit application&lt;br /&gt;
** the 64 bit variant just contains an additional 64 bit binary for the outlook search&lt;br /&gt;
&lt;br /&gt;
=== Windows N editions ===&lt;br /&gt;
&lt;br /&gt;
Windows N editions are missing the &#039;&#039;Media Feature Pack&#039;&#039; which is pre installed on other Windows versions.&lt;br /&gt;
&lt;br /&gt;
Please install the pack from [https://www.microsoft.com/en-us/software-download/mediafeaturepack Microsoft (Windows 10 pack)] before you install myApps. The installer will check if the file &amp;lt;code&amp;gt;C:\Windows\SysWOW64\mfplat.dll&amp;lt;/code&amp;gt; exist on your system.&lt;br /&gt;
&lt;br /&gt;
Make sure to install the correct pack depending on your Windows version! There are different packs for Windows 10 1703, 1803, 1809 and 32bit or 64bit etc.&lt;br /&gt;
&lt;br /&gt;
NB: Sometimes the myApps installation will not work even though the media pack is already installed. This is because the installer has no read access to check if the package is already installed. If the above-mentioned file exists and the installer asks to install the Windows Media Feature Pack nevertheless, you have to start the myApps install with administrative rights.&lt;br /&gt;
&lt;br /&gt;
=== Terminal Server environments ===&lt;br /&gt;
&lt;br /&gt;
Audio driver was removed if myApps discovers that it is running in a terminal server environment like Citrix.&lt;br /&gt;
&lt;br /&gt;
The audio driver is needed for the Softphone App but the Softphone App should not use an audio driver at the server side because the audio devices are plugged locally and there would be a delay sending and receiving audio data with the server.&lt;br /&gt;
&lt;br /&gt;
If a customer wants to use the Softphone App at the server side he needs to make use of the myApps Plugin for virtual desktops solution:&lt;br /&gt;
&lt;br /&gt;
[[{{NAMESPACE}}:MyApps_Plugin_for_Virtual_Desktops|Reference15r1:MyApps_Plugin_for_Virtual_Desktops]]&lt;br /&gt;
&lt;br /&gt;
== myApps for macOS ==&lt;br /&gt;
* macOS 10.13 or higher&lt;br /&gt;
&lt;br /&gt;
== myApps for iOS ==&lt;br /&gt;
* iOS 12 or higher&lt;br /&gt;
&lt;br /&gt;
== myApps for Android ==&lt;br /&gt;
* Android 6.0 or higher. Android 6.x may need an update of the Chrome browser.&lt;br /&gt;
== myApps for IP270 ==&lt;br /&gt;
Exclusively used in IP270 with Yocto-based Linux distribution.&lt;br /&gt;
&lt;br /&gt;
= Licenses =&lt;br /&gt;
* No license needed for myApps platform services&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
myApps platform services is a native executable that is installed using the standard mechanisms on the respective operating system. It provides various advanced services which can be used by the myApps web client code as well as the Apps running in the myApps context. &lt;br /&gt;
&lt;br /&gt;
Also, on Windows, the platform services come with their own, dedicated browser to run myApps in.  This browser is based on [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium].  On iOS, macOS and Android, it is based upon native embedded web view facilities (such as WKWebView) instead.&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
=== RTP service for audio and appsharing ===&lt;br /&gt;
The RTP service provides audio and appsharing as a video stream. VoIP RTP endpoints (e.g. for softphones).  It supports STUN, TURN, ICE, SRTP, DTLS. Note however that unlike WebRTC, these endpoints do not &#039;&#039;require&#039;&#039; ICE and DTLS. In other words, they can communicate also with non-compliant (i.e. older) VoIP devices.&lt;br /&gt;
&lt;br /&gt;
Note that the available capabilities when not running the myApps platform services depend on the used browser&#039;s WebRTC implementation. See your browser documentation for details.&lt;br /&gt;
&lt;br /&gt;
Apps can request RTP channels using the [https://sdk.innovaphone.com/doc/launcher/Media.htm Media Protocol]&#039;s &#039;&#039;AllocChannel&#039;&#039; message.&lt;br /&gt;
&lt;br /&gt;
==== RTP ports ====&lt;br /&gt;
{|&lt;br /&gt;
|  audio || 50000 -&amp;gt; 50099&lt;br /&gt;
|-&lt;br /&gt;
| video (app sharing) || 50100 -&amp;gt; 50199&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The RTP service will enumerate all local interfaces and create local HOST candidates for ICE.  There is an option however to disregard VPN interfaces (more precisely such interfaces with type of &#039;&#039;IF_TYPE_PPP&#039;&#039; or &#039;&#039;IF_TYPE_TUNNEL&#039;&#039;).  This can eliminate quality issues when RTP data is transmitted through TCP based VPN tunnels.&lt;br /&gt;
&lt;br /&gt;
SRFLX and RELAY candidates are obtained using the STUN and TURN server configuration passed by the App (e.g the &#039;&#039;softphone&#039;&#039; App) as part of the &#039;&#039;AllocChannel&#039;&#039; request.&lt;br /&gt;
&amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;AllocChannel&amp;quot;,&amp;quot;channel&amp;quot;:&amp;quot;81429cba-396d-43de-8a76-ec020ba8796e&amp;quot;,&amp;quot;iceServers&amp;quot;:[{&amp;quot;urls&amp;quot;:&amp;quot;turn:myturn.domaincom:4077?transport=udp&amp;quot;,&amp;quot;username&amp;quot;:&amp;quot;turnuser&amp;quot;,&amp;quot;credential&amp;quot;:&amp;quot;pwd&amp;quot;,&amp;quot;credentialType&amp;quot;:&amp;quot;password&amp;quot;},{&amp;quot;urls&amp;quot;:&amp;quot;stun:mystun.domain.com:4077&amp;quot;}],&amp;quot;dn&amp;quot;:&amp;quot;Foo Bar&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;RemoteRtp&amp;quot;,&amp;quot;kind&amp;quot;:&amp;quot;video&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Codecs ====&lt;br /&gt;
The installed myApps launchers provide codecs that can be used by softphone apps for media streams. When running in a web browser the codecs depend on the browser version and operating system. See the documentation of your browser for details.&lt;br /&gt;
&lt;br /&gt;
The following codecs are supported:&lt;br /&gt;
{|&lt;br /&gt;
!style=&amp;quot;text-align:left;width:100px;&amp;quot;|Codec&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Windows-Launcher&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Android&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|iOS&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|macOS&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Firefox (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Chrome (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Edge (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Safari (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Opera (Browser)&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|IP270&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:left; background-color:lightgray&amp;quot; colspan=&amp;quot;11&amp;quot;|Audio&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|G711A&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|G711u&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|G722&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=Opus OPUS-NB]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=Opus OPUS-WB]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;11&amp;quot; style=&amp;quot;text-align:left; background-color:lightgray&amp;quot; |Video&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=VP8 VP8]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=VP9 VP9]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|-&lt;br /&gt;
|[https://caniuse.com/#search=H264 H264]&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔**&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:left; background-color:lightgray&amp;quot; colspan=&amp;quot;11&amp;quot;|Application Sharing&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Share&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|-&lt;br /&gt;
|Watch&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔*&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔*&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:red;text-align:center;font-weight:bold;&amp;quot;|X&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔&lt;br /&gt;
|style=&amp;quot;color:green;text-align:center&amp;quot;|✔*&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;* small presentation only&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;** only for 1:1 calls, not for conferences&lt;br /&gt;
&lt;br /&gt;
==== Video capture ====&lt;br /&gt;
The default resolution for video capture is 1920x1080 if available.  Otherwise, 1280x720, 640x480, 352x288 or 320x240 will be used.  The frame rate is 30 fps if available, otherwise 15 fps. The resulting average bandwidth could reach 1 Mbps.&lt;br /&gt;
&lt;br /&gt;
==== Application sharing ====&lt;br /&gt;
Screen content will be transmitted as video stream by the presenter&lt;br /&gt;
&lt;br /&gt;
==== Device handling ====&lt;br /&gt;
The RTP service enumerates microphones, loudspeaker, cameras and ringing devices and notifies apps when devices come and go. It is up to the apps using the devices to store preferences.&lt;br /&gt;
&lt;br /&gt;
The RTP service also enables some extended features (such as hook switch or volume control) for supported USB headsets or Bluetooth headsets connected to myApps.&lt;br /&gt;
The supported headset-SDKs determine which headset vendors are recommended to be used with the myApps softphone app. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this to work, the following vendor specific development kits are integrated in our myApps client. Be aware that the SDK are updated within our Service release :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SDK Vendor !! Supported OS !! SDK Version !! innovaphone Service Release&lt;br /&gt;
|-&lt;br /&gt;
| Jabra|| MacOS || 1.12.2.0 || 13r3sr9&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || 1.12.2.0 || 13r3sr10&lt;br /&gt;
|-&lt;br /&gt;
| Epos &#039;&#039;(formerly Sennheiser)&#039;&#039; || MacOS || 12.4.0.5478 || 14r1sr3&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || n.a. - [[Support:13r3 sr10 MyApps Windows Client - Epos/Sennheiser-Headsets require installed Epos-Connect Software|to be installed separately]]|| 13r3sr10&lt;br /&gt;
|-&lt;br /&gt;
| Poly &#039;&#039;(formerly Plantronics)&#039;&#039; || MacOS || 3.25.53799.37131 || 13r3sr9&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || 3.25.53800.37131 || 13r3sr10&lt;br /&gt;
|-&lt;br /&gt;
| Yealink || MacOS || 3.1.1.20 || 14r1sr3&lt;br /&gt;
|-&lt;br /&gt;
||| Windows || 3.1.1.20 || 14r1sr3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* It is possible to inhibit the start of the Sennheiser SDK (SenncomSDK.exe) using the &amp;lt;code&amp;gt;DISABLEHEADSETS&amp;lt;/code&amp;gt; directive of the installer (see [[#MSI Parameters and install options|  MSI parameters]]  below).&lt;br /&gt;
&lt;br /&gt;
* Starting with V13r3sr10, the Epos-SDK needs to be installed separately using the Epos Connect software to ensure full compatibility between current Epos headset models and native myApps-Windows client. For details [[Support:13r3 sr10 MyApps Windows Client - Epos/Sennheiser-Headsets require installed Epos-Connect Software|refer to this article]].&lt;br /&gt;
&amp;lt;!--Keywords: myapps softphone supported headsets sdk--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
myApps-IP270 supports use of [[Reference9:Concept USB Headset|USB devices known for innovpahone desk phones]].&lt;br /&gt;
&lt;br /&gt;
==== Ring tones ====&lt;br /&gt;
Ring tones can be played. Apps can choose the tone from a pre-defined list of ring tones.&lt;br /&gt;
&lt;br /&gt;
On Windows, custom ring tones can be uploaded as .mp3 files to the &amp;lt;code&amp;gt;ringtones&amp;lt;/code&amp;gt; sub-directory of myApps&#039; roaming directory (which usually is in &amp;lt;code&amp;gt;%appdata%\innovaphone\myApps\ringtones&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
On Android, custom ring tones can be added to the system via Android settings.&lt;br /&gt;
&lt;br /&gt;
On iOS, custom ring tones can be uploaded as .mp3 files to the &amp;lt;code&amp;gt;Ringtones&amp;lt;/code&amp;gt; subdirectory of the myApps file share that is available in iTunes if the iPhone has been connected via USB.&lt;br /&gt;
&lt;br /&gt;
On macOS, custom ring tones can be uploaded as .mp3 files to &amp;lt;code&amp;gt;~/Library/Containers/com.innovaphone.client-macos/Data/Documents/Ringtones&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Debugging ====&lt;br /&gt;
For extended debugging, turn on the &#039;&#039;Audio&#039;&#039;, &#039;&#039;Media&#039;&#039; and &#039;&#039;AppSharing&#039;&#039; traces in myApps.&lt;br /&gt;
=== Hot keys ===&lt;br /&gt;
On Windows and macOS systems, myApps platform services can listen for hot keys and invoke certain functions. Invocation is done by sending API messages to myApps which passes it to an appropriate API provider (in the cases described here, this will be a &#039;&#039;phone&#039;&#039; or &#039;&#039;softphone&#039;&#039; or &#039;&#039;rcc&#039;&#039; App typically.  See [[{{NAMESPACE}}:Concept_myApps#Client_APIs_and_default_apps | Client APIs and default apps]] for more details about this mechanism.&lt;br /&gt;
&lt;br /&gt;
The hot keys can be specified using the &#039;&#039;advanced settings&#039;&#039; user interface (see [[#UI elements| UI elements]] below. Any of the function keys F1 to F11 (optionally combined with up to two modifier keys &#039;&#039;alt&#039;&#039;, &#039;&#039;ctrl&#039;&#039;, &#039;&#039;shift&#039;&#039; or &#039;&#039;win&#039;&#039;) can be chosen for each function. If you do not want to start the call with &amp;quot;Hotkey+Enter&amp;quot; because you would have to wait for the focus, the hotkey can also be pressed twice and the number is dialled directly.&lt;br /&gt;
&lt;br /&gt;
; dial selected number : Initiates a call using the currently selected text as target.&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;PrepareCall&#039;&#039; message with the &#039;&#039;text&#039;&#039; argument set to the selected text and the &#039;&#039;adjust&#039;&#039; argument set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:&amp;quot;mt&amp;quot;:&amp;quot;PrepareCall&amp;quot;,&amp;quot;text&amp;quot;:&amp;quot;13&amp;quot;,&amp;quot;adjust&amp;quot;:true}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; accept call : Accepts a currently alerting call.&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;ConnectCall&#039;&#039; message will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;ConnectCall&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; reject/disconnect call : Rejects a currently alerting call or disconnects an active call.&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;DisconnectCall&#039;&#039; message will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;DisconnectCall&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== URL Handler ===&lt;br /&gt;
&lt;br /&gt;
On Windows systems, two URI-handler are installed with the myApps platform services.  Windows will call up this URI handler when a user clicks on an appropriate link, for example in a web site.&lt;br /&gt;
&lt;br /&gt;
The handler will the send an API message to myApps which passes it to an appropriate API provider (in the cases described here, this will be a &#039;&#039;phone&#039;&#039; or &#039;&#039;softphone&#039;&#039; or &#039;&#039;rcc&#039;&#039; App typically.  See [[{{NAMESPACE}}:Concept_myApps#Client_APIs_and_default_apps | Client APIs and default apps]] for more details about this mechanism.&lt;br /&gt;
&lt;br /&gt;
; tel URI : call a number, e.g. &amp;lt;code&amp;gt;tel:4711&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;PrepareCall&#039;&#039; message with the &#039;&#039;num&#039;&#039; argument set to the selected text and the &#039;&#039;adjust&#039;&#039; argument set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;StartCall&amp;quot;,&amp;quot;num&amp;quot;:&amp;quot;4711&amp;quot;,&amp;quot;adjust&amp;quot;:true}}&amp;lt;/code&amp;gt;&lt;br /&gt;
; sip URI : call a SIP name, e.g. &amp;lt;code&amp;gt;sip:zkl@innovaphone.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;PrepareCall&#039;&#039; message with the &#039;&#039;sip&#039;&#039; argument set to the selected text and the &#039;&#039;adjust&#039;&#039; argument set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm &#039;&#039;com.innovaphone.phone&#039;&#039; API].&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.phone&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;StartCall&amp;quot;,&amp;quot;sip&amp;quot;:&amp;quot;zkl@innovaphone.com&amp;quot;,&amp;quot;adjust&amp;quot;:true}}&amp;lt;/code&amp;gt;&lt;br /&gt;
; im URI : start chat with SIP name, e.g. &amp;lt;code&amp;gt;im:zkl@innovaphone.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: A &#039;&#039;StartChat&#039;&#039; message with the &#039;&#039;sip&#039;&#039; argument set to the selected text will be sent to the [http://sdk.innovaphone.com/web1/com.innovaphone.chat/com.innovaphone.chat.htm &#039;&#039;com.innovaphone.chat&#039;&#039; API].&lt;br /&gt;
:: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.chat&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;StartChat&amp;quot;,&amp;quot;sip&amp;quot;:&amp;quot;zkl@innovaphone.com&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On macOS systems myApps might be made the default application to handle tel URI e.g. &amp;lt;code&amp;gt;tel:4711&amp;lt;/code&amp;gt; via Apple FaceTime. Open the &amp;quot;FaceTime&amp;quot; menu &amp;quot;Settings...&amp;quot; and select myApps as &amp;quot;Default for phone calls&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
On iOS &#039;&#039;tel&#039;&#039; URIs are always dialed via GSM. Therefore myApps iOS also reacts to URI schemes &#039;&#039;com.innovaphone.tel&#039;&#039;, &#039;&#039;com.innovaphone.sip&#039;&#039; and &#039;&#039;com.innovaphone.im&#039;&#039;, e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;com.innovaphone.tel:4711&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;com.innovaphone.sip:zkl@innovaphone.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;com.innovaphone.im:zkl@innovaphone.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== User activity ===&lt;br /&gt;
On Windows and macOS systems, the myApps platform services can monitor user keyboard/mouse activity and change the user&#039;s presence state after a certain amount of inactivity.  The timeout can be specified using the &#039;&#039;advanced settings&#039;&#039; user interface (see [[#UI elements| UI elements]] below.&lt;br /&gt;
&lt;br /&gt;
myApps will then send a [https://sdk.innovaphone.com/doc/appwebsocket/myApps.htm#SetUserActivity&#039;&#039;SetUserActivity&#039;&#039;] message to the PBX using the &#039;&#039;myApps&#039;&#039; protocol.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;SetUserActivity&amp;quot;,&amp;quot;inactive&amp;quot;:true}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will change the &#039;&#039;status&#039;&#039; property of the &#039;&#039;im:&#039;&#039; contact for the user&#039;s own presence and hence result in a presence update from the PBX to myApps&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;UpdateOwnPresence&amp;quot;,&amp;quot;presence&amp;quot;:[{...},{&amp;quot;contact&amp;quot;:&amp;quot;im:&amp;quot;,&amp;quot;activity&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;status&amp;quot;:&amp;quot;closed&amp;quot;}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
The &#039;&#039;closed&#039;&#039; status is reflected in the grey status color when displaying a contact [[Image:myapps-inactive.png|myapps-inactive.png/|myapps-inactive.png/]].&lt;br /&gt;
&lt;br /&gt;
On iOS and Android, the state is set to &#039;&#039;inactive&#039;&#039; as soon as the App is brought to background.&lt;br /&gt;
When myApps platform services are not available (i.e. when running the web application in a browser solely) a limited user activity monitoring is available: the state is set to active when the web page is not used for more than 5 minutes.&lt;br /&gt;
&lt;br /&gt;
=== Recording ===&lt;br /&gt;
&lt;br /&gt;
The new launcher offers the possibility to record the audio of incoming and outgoing calls. In order to activate that functionality the URL of the recording instance must be configured in either the PBX (PBX-&amp;gt;myApps-&amp;gt;Config: Recording URL) or the softphone App (Settings-&amp;gt;Audio Recording (URL)) &lt;br /&gt;
&lt;br /&gt;
[[Image:PBX-Recording-Settings.png|pbx-recording-settings.png/|pbx-recording-settings.png/]] [[Image:Recording-Softphone-Settings.png|recording-softphone-settings.png/|recording-softphone-settings.png/]]. &lt;br /&gt;
&lt;br /&gt;
As long as that URL is configured the audio data of all calls are stored as pcap-files under that URL.&lt;br /&gt;
If the URL points to a CF device in the PBX, write access must be granted for that URL (PBX-&amp;gt;Services-&amp;gt;HTTP-&amp;gt;Server:Public compact flash access) and if the URL points to the recording app, the files can be accessed via the recording app [[{{NAMESPACE}}:Concept_App_Service_Recordings|recording]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Under PBX-&amp;gt;myApps the administrator can set a certain default behaviour of the audio recording like whether or not the recording should start automatically at the beginning of the call (Recording by Default ON/OFF), only calls with external numbers should be recorded (Record external calls only) or whether or not the user should be able to start/stop the recording himself (Allow user incall recording control). Except for the last parameter these parameters can also be modified by the user in its softphone settings if the administrator doesn&#039;t set the FORCE flag.&lt;br /&gt;
&lt;br /&gt;
If the user was allowed by the admin to control the recording a recording switch is active during the call when the &amp;quot;Media&amp;quot; Panel is opened. There the audio recording may be stopped and continued at will. A red recording notice is shown in the top right corner when the recording actually takes place.&lt;br /&gt;
 &lt;br /&gt;
[[Image:Recording-incall-switch.png|recording-incall-switch.png/|recording-incall-switch.png/]]&lt;br /&gt;
&lt;br /&gt;
=== Notifications ===&lt;br /&gt;
&lt;br /&gt;
The myApps platform services can use the OS specific notification mechanism (e.g. &#039;&#039;desktop notifications&#039;&#039; on Windows) to display messages (e.g. &#039;&#039;incoming new chat message&#039;&#039;) to the user.&lt;br /&gt;
&lt;br /&gt;
Note that the actual rendering of the notification is under control of the OS.  Therefore, myApps must be allowed to show notifications and its appearance can be restricted by OS native settings.&lt;br /&gt;
&lt;br /&gt;
==== Microsoft Windows Notifications ====&lt;br /&gt;
&lt;br /&gt;
Microsoft Windows Server editions (2016, 2019, 2022) are just capable of showing a single &#039;&#039;IncomingCall&#039;&#039; notification at the same time (we couldn&#039;t find a workaround for this limitation).&amp;lt;br/&amp;gt;&lt;br /&gt;
An &#039;&#039;IncomingCall&#039;&#039; notification is visible the whole time instead of being moved to the action center after a certain time.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
A notification about a missed call uses the &#039;&#039;IncomingCall&#039;&#039; type so that this notification is visible until the user returns.&amp;lt;br/&amp;gt;&lt;br /&gt;
Due to the above limitation, on a new arriving call such a missed call notification is transformed to a default notification which will be moved to the action center automatically.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
On non server editions, you can have multiple IncomingCall notifications at the same time (so two parallel incoming calls will be indeed notified at the same time), but the missed call notification handling is the same on both platforms!&lt;br /&gt;
&lt;br /&gt;
 Thus there will be always just &#039;&#039;&#039;one&#039;&#039;&#039; missed call notification visible and previous missed calls can be found inside your action center!&lt;br /&gt;
&lt;br /&gt;
To see myApps notifications, ensure:&lt;br /&gt;
* System -&amp;gt; Notifications &lt;br /&gt;
** enable notifications&lt;br /&gt;
** disable &amp;quot;Do not disturb&amp;quot; or allow myApps as priority application while &amp;quot;Do not disturb&amp;quot; is active&lt;br /&gt;
** enable notifications for myApps in the list of applications&lt;br /&gt;
* System -&amp;gt; Focus &lt;br /&gt;
** if a focus session is active and the &amp;quot;Do not disturb&amp;quot; is activated during a focus session, make sure that myApps is a priority application (see above)&lt;br /&gt;
&lt;br /&gt;
==== macOS Notifications ====&lt;br /&gt;
Notifications are the same as on Windows.&lt;br /&gt;
The difference is, that for macOS, notifications need to be allowed in the system settings.&lt;br /&gt;
Go to Notifications - myApps, select Banner and enable all check marks.&lt;br /&gt;
&lt;br /&gt;
=== Local phonebook access ===&lt;br /&gt;
&#039;&#039;&#039;Contact Search:&#039;&#039;&#039; The myApps platform services implement an &#039;&#039;API provider&#039;&#039; for the [http://sdk.innovaphone.com/web1/com.innovaphone.search/lib1_api_search.htm &#039;&#039;com.innovaphone.search&#039;&#039; API]]. They perform search capabilities on the OS&#039; local phone books which can be used by Apps like the &#039;&#039;phoneapp&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Apps would send a &#039;&#039;Search&#039;&#039; request to the API:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;*&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;4&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;Search&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;contact&amp;quot;,&amp;quot;search&amp;quot;:&amp;quot;john doe&amp;quot;},&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.search&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
Search results are delivered as &#039;&#039;SearchInfo&#039;&#039; messages:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiResult&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;3&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;@local-8125d22e37-519d-4056-bfe5-c52ef2ae8fabb0&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;client&amp;quot;:&amp;quot;@client-f62702dd86-be3f-47fc-b4bc-7a21627b75b2ea&amp;quot;,&amp;quot;msg&amp;quot;:{&amp;quot;mt&amp;quot;:&amp;quot;SearchInfo&amp;quot;,&amp;quot;relevance&amp;quot;:2000,&amp;quot;adjust&amp;quot;:true,&amp;quot;type&amp;quot;:&amp;quot;contact&amp;quot;,&amp;quot;contact&amp;quot;:{&amp;quot;givenname&amp;quot;:&amp;quot;John&amp;quot;,&amp;quot;sn&amp;quot;:&amp;quot;Doe&amp;quot;,&amp;quot;company&amp;quot;:&amp;quot;ACME&amp;quot;,&amp;quot;position&amp;quot;:&amp;quot;Head of everything&amp;quot;,&amp;quot;telephonenumber&amp;quot;:[&amp;quot;11111&amp;quot;,&amp;quot;22222&amp;quot;],&amp;quot;homephone&amp;quot;:[&amp;quot;+4944444&amp;quot;,&amp;quot;33333&amp;quot;],&amp;quot;mobile&amp;quot;:[&amp;quot;+49 (123) 55555&amp;quot;]}},&amp;quot;api&amp;quot;:&amp;quot;com.innovaphone.search&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reverse Lookup:&#039;&#039;&#039; The myApps platform services implement an &#039;&#039;API provider&#039;&#039; for the [http://sdk.innovaphone.com/web1/com.innovaphone.phonelookup/lib1_api_phonelookup.htm &#039;&#039;com.innovaphone.phonelookup&#039;&#039; API]. They perform search capabilities on the OS&#039; local phone books which can be used by Apps like the &#039;&#039;phoneapp&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Apps would send a &#039;&#039;Lookup&#039;&#039; request to the API: &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiRequest&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;*&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;4&amp;quot;,&amp;quot;msg&amp;quot;:{ mt: &amp;quot;Lookup&amp;quot;, prefixIntl: &amp;quot;000&amp;quot;, prefixNtl: &amp;quot;00&amp;quot;, prefixExt:&amp;quot;0&amp;quot;, area: &amp;quot;7031&amp;quot;, country: &amp;quot;49&amp;quot;, lookup: &amp;quot;0004970311234567&amp;quot; },&amp;quot;apiId&amp;quot;:&amp;quot;com.innovaphone.lookup&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Search results are delivered as &#039;&#039;LookupInfo&#039;&#039; messages:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;{&amp;quot;mt&amp;quot;:&amp;quot;ApiResult&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;3&amp;quot;,&amp;quot;provider&amp;quot;:&amp;quot;@local-8125d22e37-519d-4056-bfe5-c52ef2ae8fabb0&amp;quot;,&amp;quot;consumer&amp;quot;:&amp;quot;dev:SwPh_zkl_5e42e884&amp;quot;,&amp;quot;client&amp;quot;:&amp;quot;@client-f62702dd86-be3f-47fc-b4bc-7a21627b75b2ea&amp;quot;,&amp;quot;msg&amp;quot;:{mt: &amp;quot;LookupInfo&amp;quot;, dn: &amp;quot;Jake Blues&amp;quot;, contact: { telephonenumber: [&amp;quot;0004970311234567&amp;quot;], givenname: &amp;quot;Jake&amp;quot;, sn: &amp;quot;Blues&amp;quot;, company: &amp;quot;Blues Brothers&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Windows ====&lt;br /&gt;
On Windows, the search and lookup are performed in all of the user&#039;s Outlook contact folders.  As opposed to the search implemented in the &#039;&#039;Contacts&#039;&#039; and &#039;&#039;Users&#039;&#039; App, all items are returned which match any of the search words (i.e. searching for &#039;&#039;a b&#039;&#039; will return items matching either &#039;&#039;a&#039;&#039; or &#039;&#039;b&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
; searched properties : firstname, lastname&lt;br /&gt;
; returned properties : Following Outlook contact phone number properties are returned  (if available):&lt;br /&gt;
&lt;br /&gt;
:* OFFICE_TELEPHONE_NUMBER as &#039;&#039;telephonenumber&#039;&#039;&lt;br /&gt;
:* OFFICE2_TELEPHONE_NUMBER as &#039;&#039;telephonenumber&#039;&#039;&lt;br /&gt;
:* HOME_TELEPHONE_NUMBER as &#039;&#039;homephone&#039;&#039;&lt;br /&gt;
:* HOME2_TELEPHONE_NUMBER as &#039;&#039;homephone&#039;&#039;&lt;br /&gt;
:* MOBILE_TELEPHONE_NUMBER as &#039;&#039;mobile&#039;&#039;&lt;br /&gt;
:* BUSINESS_FAX_NUMBER as &#039;&#039;facsimiletelephonenumber&#039;&#039;&lt;br /&gt;
Note that contact information is cached in the search provider.  Updated contacts may therefore become effective after a while only.&lt;br /&gt;
Outlook search will create its own trace file &amp;lt;code&amp;gt;myAppsOutlookSearch-&amp;lt;/code&amp;gt;&#039;&#039;date-time&#039;&#039;&amp;lt;code&amp;gt;.txt&amp;lt;/code&amp;gt; in the standard trace directory.&lt;br /&gt;
&lt;br /&gt;
This search provider is always installed and can be disabled.  There is no need (nor possibility) to enable it in the &#039;&#039;Apps&#039;&#039; tab of the PBX&#039;s user object.  Also, no &#039;&#039;App&#039;&#039; object needs to be created for it.&lt;br /&gt;
&lt;br /&gt;
==== Android/iOS ====&lt;br /&gt;
The search and lookup are performed in the contacts.&lt;br /&gt;
&lt;br /&gt;
==== macOS ====&lt;br /&gt;
The search and lookup are performed in the contacts. If you wish to disable local contact lookup, go to system settings - Security &amp;amp; Privacy and disable the access to contacts for myapps.&lt;br /&gt;
=== Microsoft Office integration ===&lt;br /&gt;
&lt;br /&gt;
The myApps platform services has a &#039;&#039;office presence provider&#039;&#039; that can provide the user&#039;s presence state to Office applications.  See [[{{NAMESPACE}}:Concept_myApps_Office_Integration|myApps Office Integration]] for details.&lt;br /&gt;
&lt;br /&gt;
This feature is installed by default.  However, it can be disabled using the &#039;&#039;OFFICEPRESENCE&#039;&#039; MSI Parameter.  Also, a check-mark is available in the setup dialog.&lt;br /&gt;
&lt;br /&gt;
=== Call an external application for calls ===&lt;br /&gt;
&lt;br /&gt;
Phone Apps (such as the phoneapp or softphone) can initiate the start of an external application when a new call appears (either incoming or outgoing).  The actual spawning of the application is done by the myApps platform service.  Also, the application properties (such as e.g. the executable&#039;s path) is configured in the myApps platform services (see [[#UI elements|Advanced settings]] in the &#039;&#039;UI elements&#039;&#039; section below).&lt;br /&gt;
&lt;br /&gt;
A number of arguments can be passed to the application by substituting $-variables in the &#039;&#039;Parameter&#039;&#039; field:&lt;br /&gt;
&lt;br /&gt;
; $n : phone number as dialed (called party number for outgoing calls) or received (calling party number for incoming calls)&lt;br /&gt;
&lt;br /&gt;
; $N : called or calling party number in &#039;&#039;national&#039;&#039; format (e.g. 07031730090)&lt;br /&gt;
&lt;br /&gt;
; $I : called or calling party number in &#039;&#039;international&#039;&#039; format (e.g. +497031730090)&lt;br /&gt;
&lt;br /&gt;
: note that both $N and $I only work if $n includes both subscriber number and area code (e.g. 07031730090). Otherwise they are equal to $n&lt;br /&gt;
&lt;br /&gt;
; $d : display name of peer (if known)&lt;br /&gt;
&lt;br /&gt;
; $u : URI name of the peer (if available eg with a federation call)&lt;br /&gt;
&lt;br /&gt;
; $c : conference id&lt;br /&gt;
&lt;br /&gt;
: this is a globally unique ID for this call and may be used to relate the call to the &#039;&#039;guid&#039;&#039; found in the CallInfo structure in the [http://wiki.innovaphone.com/index.php?title=Reference10:SOAP_API#CallInfo SOAP-API] and [http://sdk.innovaphone.com/doc/appwebsocket/RCC.htm RCC-API ].  Also, corresponding [[Reference10:Call Detail Record CDR PBX|CDRs]] can be related using the &#039;&#039;event&#039;&#039; tag&#039;s &#039;&#039;conf&#039;&#039; attribute.&lt;br /&gt;
The start of an external application can be requested using the &#039;&#039;com.innovaphone.externalapps&#039;&#039; API.&lt;br /&gt;
&lt;br /&gt;
Some setup examples are [[Howto:Integrate External Apps in innovaphone UC clients|shown here]].&lt;br /&gt;
&lt;br /&gt;
=== Push ===&lt;br /&gt;
&lt;br /&gt;
Mobile operating systems usually inhibit network operation of apps which run in the background or are closed by the user.  This is done in order to reduce battery consumption.  Unfortunately, this also stops such apps to maintain a registration by regularly sending &#039;&#039;keep alive&#039;&#039; messages to a server (in our case to the PBX).  As a result, myApps will be disconnected from the PBX.   When the PBX determines that there is an event for the application which needs a response, it needs to wake up the app using a dedicated channel provided by the operating system.  This mechanism is know as &#039;&#039;push&#039;&#039;. When running on iOS or Android, myApps supports &#039;&#039;push&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;push&#039;&#039; to work, a [[{{NAMESPACE}}:PBX/Objects/Push|&#039;&#039;push object&#039;&#039;]] needs to be configured in the PBX .  Also, it needs to be enabled on the mobile phone for the myApps app.&lt;br /&gt;
This mechanism is quite similar in v12 and v13, so you can refer to [[{{NAMESPACE}}:Concept_Push_Notifications_for_iOS_and_Android|the concept for push notifications for iOS and Android]] for more details. &lt;br /&gt;
&lt;br /&gt;
Also, helpful hints can be found in [[Howto:Troubleshoot v13 Push with myApps for Android and iOS]].&lt;br /&gt;
&lt;br /&gt;
=== App Proxy ===&lt;br /&gt;
&lt;br /&gt;
myApps runs further &#039;&#039;Apps&#039;&#039; (such as e.g. the &#039;&#039;phoneapp&#039;&#039;) as a web page in an IFRAME of the browser myApps is running in.  The App&#039;s page code is loaded either from the PBX or from an &#039;&#039;application platform&#039;&#039; (AP).   This however would mean that the App&#039;s IFRAME would remain empty (a dead white screen) when the PBX or AP is not available. To make sure the App can start-up anyway, the myApps platform services feature the so-called &#039;&#039;App Proxy&#039;&#039;.  This is a caching proxy that caches all the App code so it is available even in case of network failure. When myApps runs in the context of the platform services, Apps are therefore not loaded from the App source directly, but from the local App proxy. &lt;br /&gt;
&lt;br /&gt;
The cached files are stored in the PCs local file system in the &amp;lt;code&amp;gt;%LOCALAPPDATA%\innovaphone\myApps\appproxy&amp;lt;/path&amp;gt;&amp;lt;/code&amp;gt;.  There is no configuration required.  However, if myApps seems to run with outdated or corrupt cached copies of the App, you can safely delete the entire directory.&lt;br /&gt;
&lt;br /&gt;
=== Auto update ===&lt;br /&gt;
&lt;br /&gt;
On Windows and on macOS, the myApps platform services can auto-update themselves to a common version.  This is controlled by the [[{{NAMESPACE}}:PBX/Config/myApps#Launcher_Software_Update | &#039;&#039;Launcher Software Update&#039;&#039;]] settings under &#039;&#039;PBX/Config/myApps&#039;&#039; in the PBX. &lt;br /&gt;
&lt;br /&gt;
When myApps is started or the user logs in or myApps needs to re-connect to the PBX, the platform services will use the [http://sdk.innovaphone.com/web1/com.innovaphone.client/lib1_api_client.htm com.innovaphone.client API] to learn the desired version (&#039;&#039;launcherUpdateBuild&#039;&#039;, which is part of the API&#039;s &#039;&#039;model&#039;&#039;). If this differs from the current version, the platform services will try to download the respective new version. &lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;mt&amp;quot;: &amp;quot;ApiUpdate&amp;quot;,&lt;br /&gt;
    &amp;quot;apis&amp;quot;: {&lt;br /&gt;
        &amp;quot;com.innovaphone.client&amp;quot;: {&lt;br /&gt;
            &amp;quot;@client&amp;quot;: {&lt;br /&gt;
                &amp;quot;title&amp;quot;: &amp;quot;innovaphone myApps&amp;quot;,&lt;br /&gt;
                &amp;quot;model&amp;quot;: {&lt;br /&gt;
                    &amp;quot;launcher&amp;quot;: true,&lt;br /&gt;
                    &amp;quot;launcherUpdateBuild&amp;quot;: &amp;quot;134906&amp;quot;,&lt;br /&gt;
                    &amp;quot;appStoreUrl&amp;quot;: &amp;quot;http://store.innovaphone.com/release/download/&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The installation of the downloaded version is done by the &#039;&#039;innovaphonemyAppsUpdateService&#039;&#039;. This service is installed and enabled during the initial installation of the myApps platform services.  To disable auto-update, either leave the &#039;&#039;Launcher Software Update&#039;&#039; settings empty or set the service&#039;s start mode to &#039;&#039;disabled&#039;&#039; in the Windows &#039;&#039;services control panel&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note that on Windows the update service does not work on terminal servers. Administrators must do myApps base services updates using standard windows mechanisms.&lt;br /&gt;
&lt;br /&gt;
Note that on macOS if myApps has been installed from the Apple Store it is assumed that auto update from the PBX is not desired and disabled therefore.&lt;br /&gt;
&lt;br /&gt;
On Android/iOS/macOS updates can be downloaded from the respective app store.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;Devices&#039;&#039; app can not update software installed on Windows PCs directly. However, when the PBX is updated using an &#039;&#039;update job&#039;&#039; in the &#039;&#039;Devices&#039;&#039; App, the &#039;&#039;Launcher Software Update&#039;&#039; settings will be updated accordingly and hence the myApps base services will ultimately also be updated to the same version.&lt;br /&gt;
&lt;br /&gt;
==== Auto update flow on Windows ====&lt;br /&gt;
&lt;br /&gt;
* On start of myApps, myApps checks if an update is available and ready for installation&lt;br /&gt;
** if yes, the update is installed directly, without user interaction (a popup is shown during the installation)&lt;br /&gt;
** if not, myApps starts&lt;br /&gt;
* if an update is available while myApps is already running, an update notification will be shown which let&#039;s the user choose to install the update now or later (the notification will then popup again after one hour)&lt;br /&gt;
&lt;br /&gt;
==UI elements ==&lt;br /&gt;
There are a few user interfaces provided by the platform services:&lt;br /&gt;
===tray-icon (Windows only) ===&lt;br /&gt;
::[[Image:myapps-tray.png|myapps-tray.png/|myapps-tray.png/]]&lt;br /&gt;
:Allows to&lt;br /&gt;
:* terminate myApps&lt;br /&gt;
:* toggle the &#039;&#039;autostart&#039;&#039; state&lt;br /&gt;
:* toggle the &#039;&#039;show in task bar&#039;&#039; state&lt;br /&gt;
:* open the trace folder&lt;br /&gt;
:&lt;br /&gt;
=== PBX connect form===&lt;br /&gt;
:: [[Image:myapps-connect.png|myapps-connect.png/|myapps-connect.png/]]&lt;br /&gt;
: Allows the user to specify the connect data for the PBX (i.e. IP address or DNS name)&lt;br /&gt;
:&lt;br /&gt;
=== Advanced settings===&lt;br /&gt;
::[[Image:myapps-settings0.png|myapps-settings0.png/|myapps-settings0.png/]]&lt;br /&gt;
::[[Image:myapps-settings.png|myapps-settings.png/|myapps-settings.png/]] [[Image:myapps-settings2.png|myapps-settings2.png/|myapps-settings2.png/]] [[Image:myapps-settings3.png|myapps-settings3.png/|myapps-settings3.png/]]&lt;br /&gt;
&lt;br /&gt;
: Allows to modify various platform dependant settings (such as e.g. the hotkey selection on Windows)&lt;br /&gt;
&lt;br /&gt;
== Interfaces ==&lt;br /&gt;
=== Provided APIs ===&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.search/lib1_api_search.htm com.innovaphone.search] : access to local phone book entries by the [[#Local phonebook access|Local phonebook access]] component.&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.launcher/com.innovaphone.launcher.htm com.innovaphone.launcher] : display of OS specific user notifications and receipt of related user actions&lt;br /&gt;
; com.innovaphone.notificationhandler : reports back click on a notification.&lt;br /&gt;
; com.innovaphone.externalapps : to start external applications, see [[#Call an external application for calls|Call an external application for calls]]  above&lt;br /&gt;
&lt;br /&gt;
=== Used APIs ===&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.phone/com.innovaphone.phone.htm com.innovaphone.phone] : used to initiate new or manipulate existing calls by the [[#Hot keys|Hot keys]] and [[#URL handler|URL handler]] components.&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.chat/com.innovaphone.chat.htm com.innovaphone.chat] : used to start a new chat by the [[#URL handler|URL handler]] component.&lt;br /&gt;
&lt;br /&gt;
; [http://sdk.innovaphone.com/web1/com.innovaphone.client/lib1_api_client.htm com.innovaphone.client] : the model is used to learn the update settings, see [[#Auto update|Auto update]] above&lt;br /&gt;
&lt;br /&gt;
=== Protocols ===&lt;br /&gt;
&lt;br /&gt;
; [https://sdk.innovaphone.com/doc/launcher/Media.htm Media Protocol] : used by apps to allocate RTP channels, see [[#RTP service for audio.2C video and data|RTP service for audio, video and data]] above&lt;br /&gt;
&lt;br /&gt;
== Related App Services ==&lt;br /&gt;
&lt;br /&gt;
none&lt;br /&gt;
&lt;br /&gt;
== Known limitations ==&lt;br /&gt;
; Incoming call as banner on myApps for iOS : Since iOS 14 the iOS CallKit presents incoming calls as a banner leaving the original green answer button of myApps visible. Use only the blue button of the banner to accept the call or change iPhone Settings, App &amp;quot;Phone&amp;quot;, &amp;quot;Incoming Calls&amp;quot; to &amp;quot;Full Screen&amp;quot; to hide the myApps user interface again during call answering.&lt;br /&gt;
&lt;br /&gt;
; Call answer in speakerphone mode even with active Bluetooth headset on myApps for iOS : This causes unwanted speakerphone operation if the smartphone is used with a Bluetooth car audio system. The behaviour can be changed by selecting &#039;&#039;Bluetooth Headset&#039;&#039; in this setting:&lt;br /&gt;
:&#039;&#039;iOS Settings-&amp;gt;Accessibility-&amp;gt;Touch-&amp;gt;Call Audio Routing: Automatic / Bluetooth Headset / Speaker&#039;&#039;&lt;br /&gt;
:&#039;&#039;iOS Einstellungen-&amp;gt;Bedienungshilfen-&amp;gt;Tippen-&amp;gt;Anrufaudioausgabe: Automatisch / Bluetooth-Headset / Lautsprecher&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; Windows Server 2016 (Windows 10 Build 1607) : windows just shows the first notification. Further notifications aren&#039;t displayed until the previous ones are removed from the notification center. Current windows builds do not show this behaviour anymore.&lt;br /&gt;
&lt;br /&gt;
; Problems on Mac computers with Yealink USB headsets&lt;br /&gt;
: we have received reports that myApps quits unexpectedly on some Mac computers when a Yealink headset is plugged in.  Unfortunately, we could not find out the cause yet.  If you use Yealink USB headsets and have a similar issue, please open a support ticket and send myApps traces.&lt;br /&gt;
&lt;br /&gt;
; Poly / Plantronics headset buttons only functional if myApps is started with Rosetta&lt;br /&gt;
: myApps macOS supports Apple M1/M2 hardware natively. However, the Poly / Plantronics headset SDK is only available for Intel platform and thus myApps needs to be started via Apple&#039;s Intel emulator Rosetta if a Poly / Plantronics headset is used. This is done with right-click on the myApps executable, &#039;&#039;Information&#039;&#039;, &#039;&#039;Open with Rosetta&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
; Windows surface devices may not work correctly&lt;br /&gt;
: Chromium does not get touch keyboard events. USB Keyboards may not be recognized either.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services are installed on Windows using the .msi file found in the &#039;&#039;myApps Windows&#039;&#039; package from [https://store.innovaphone.com/release/download.htm store.innovaphone.com].&lt;br /&gt;
&lt;br /&gt;
myApps can update itself automatically, see [[#Auto update|Auto update]] above.&lt;br /&gt;
&lt;br /&gt;
=== MSI Parameters and install options ===&lt;br /&gt;
&lt;br /&gt;
The MSI installer of myApps for Windows supports the following parameters and can be edited with [https://docs.microsoft.com/en-us/windows/win32/msi/orca-exe Microsoft Orca]. You can add your parameters in the table &#039;&#039;property&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
; SERVER (REG_SZ): the PBX&#039;s server address (without protocol like https://)&lt;br /&gt;
; OFFICEPRESENCE (REG_DWORD): &#039;&#039;&#039;false&#039;&#039;&#039; to disable presence integration in Microsoft Office&lt;br /&gt;
: this is also available as a check-mark when running the install manually&lt;br /&gt;
&lt;br /&gt;
; DISABLEHEADSETS (REG_DWORD): &#039;&#039;&#039;true&#039;&#039;&#039; to disable headsets support, see [[#Device handling|Device handling]] above&lt;br /&gt;
&lt;br /&gt;
; EXTERNALAPPS (REG_SZ): pre-define external applications, see [[#Call an external application for calls|Call an external application for calls]] above&lt;br /&gt;
: e.g. &amp;lt;code&amp;gt;&amp;quot;{&amp;quot;&amp;quot;externalApps&amp;quot;&amp;quot;:[{&amp;quot;&amp;quot;id&amp;quot;&amp;quot;:0,&amp;quot;&amp;quot;name&amp;quot;&amp;quot;:&amp;quot;&amp;quot;Wireshark&amp;quot;&amp;quot;,&amp;quot;&amp;quot;path&amp;quot;&amp;quot;:&amp;quot;&amp;quot;C:\\Program Files\\Wireshark\\Wireshark.exe&amp;quot;&amp;quot;,&amp;quot;&amp;quot;param&amp;quot;&amp;quot;:&amp;quot;&amp;quot;test $I&amp;quot;&amp;quot;}]}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; FORCERESTART (REG_DWORD): &#039;&#039;&#039;true&#039;&#039;&#039; (or any string ...) kills myApps during the installation and restarts it for the currently logged in user, if it was running&lt;br /&gt;
&lt;br /&gt;
; DISABLELOCALHOST (REG_DWORD): &#039;&#039;&#039;true&#039;&#039;&#039; to disable use of &#039;&#039;&#039;localhost&#039;&#039;&#039; string to access the local webserver. Use &#039;&#039;&#039;127.0.0.1&#039;&#039;&#039; instead&lt;br /&gt;
&lt;br /&gt;
; EXCLUDEINTERFACES (REG_SZ): some VPN interfaces are not detected by Windows as IF_TYPE_PPP or IF_TYPE_TUNNEL and therefore the &#039;&#039;&#039;media outside VPN&#039;&#039;&#039; setting is not taking effect. With this option interfaces can be pre-defined that will not be used for media. Interfaces must be comma separated&lt;br /&gt;
: e.g. &amp;lt;code&amp;gt;EXCLUDEINTERFACES=&amp;quot;172,192.168,10.10&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Current settings are stored in the registry at &amp;lt;code&amp;gt;Computer\HKEY_CURRENT_USER\Software\innovaphone\myApps&amp;lt;/code&amp;gt; or at &amp;lt;code&amp;gt;Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\innovaphone\myApps&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Boolean values like OfficePresence are stored in registry entries with type REG_DWORD and values 1 or 0. 0 disables the setting and 1 enables it.&lt;br /&gt;
&lt;br /&gt;
== iOS ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services are installed on iOS by loading &#039;&#039;innovaphone myApps&#039;&#039; from the &#039;&#039;App Store&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Configuration via MDM ===&lt;br /&gt;
&lt;br /&gt;
the PBX&#039;s server URL can be pre-configured by specifying this dictionary in the MDM&lt;br /&gt;
 &amp;lt;plist&amp;gt;&lt;br /&gt;
   &amp;lt;dict&amp;gt;&lt;br /&gt;
     &amp;lt;key&amp;gt;server&amp;lt;/key&amp;gt;&lt;br /&gt;
     &amp;lt;string&amp;gt;pbx.example.com&amp;lt;/string&amp;gt;&lt;br /&gt;
   &amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt;/plist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== macOS ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services might be installed directly from the Apple store. An installer package &amp;lt;code&amp;gt;myapps.pkg&amp;lt;/code&amp;gt; and a disk image &amp;lt;code&amp;gt;myapps.dmg&amp;lt;/code&amp;gt; is also available from the innovaphone app store. Install &amp;lt;code&amp;gt;myapps.pkg&amp;lt;/code&amp;gt; by double-click on the file and follow the instructions of the installer. myApps becomes available in the Applications folder and can be opened by double-click. Or download and open &amp;lt;code&amp;gt;myapps.dmg&amp;lt;/code&amp;gt; and double klick myApps. If desired integrate it into the app dock by right click, &#039;&#039;Options, Keep in the dock&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If installed from the innovaphone app store, myApps can update itself automatically, see [[#Auto update|Auto update]] above.&lt;br /&gt;
&lt;br /&gt;
If installed from the Apple store, macOS notifies about updates on the Apple store. myApps [[#Auto update|Auto update]] is disabled then.&lt;br /&gt;
&lt;br /&gt;
If a clean-install of the client is necessary, the folder &amp;quot;/Users/username/Library/Containers/myapps&amp;quot; needs to be deleted. To be on the safe side also delete it from the trash bin.&lt;br /&gt;
&lt;br /&gt;
=== Configuration via MDM ===&lt;br /&gt;
&lt;br /&gt;
the PBX&#039;s server URL can be pre-configured by specifying this dictionary in the MDM&lt;br /&gt;
 &amp;lt;plist&amp;gt;&lt;br /&gt;
   &amp;lt;dict&amp;gt;&lt;br /&gt;
     &amp;lt;key&amp;gt;server&amp;lt;/key&amp;gt;&lt;br /&gt;
     &amp;lt;string&amp;gt;pbx.example.com&amp;lt;/string&amp;gt;&lt;br /&gt;
   &amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt;/plist&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preferences ===&lt;br /&gt;
&lt;br /&gt;
macOS supports preference settings that can be set via a shell command or via Mac remote management&lt;br /&gt;
&lt;br /&gt;
 defaults write com.innovaphone.client-ios-14r1 server &amp;quot;PBX-server-URL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The following parameters and can be set through this method:&lt;br /&gt;
&lt;br /&gt;
; server: the PBX&#039;s server URL&lt;br /&gt;
&lt;br /&gt;
=== Setting myApps as Default App for SIP-URLs ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|defaults write com.apple.LaunchServices/com.apple.launchservices.secure LSHandlers -array-add &#039;{&lt;br /&gt;
   LSHandlerURLScheme = sip;&lt;br /&gt;
   LSHandlerRoleAll = &amp;quot;&amp;lt;CFBundleIdentifier&amp;gt;&amp;quot;;&lt;br /&gt;
}&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To find the “CFBundleIdentifier”, proceed as follows:&lt;br /&gt;
* In the Finder under “Applications”, search for the desired myApps client that you want to set as the default app.&lt;br /&gt;
* Right-click on “Show package contents” -&amp;gt; you will find the “CFBundleIdentifier” in the Info.plist file.&lt;br /&gt;
&lt;br /&gt;
A restart of the MAC is required.&lt;br /&gt;
&lt;br /&gt;
=== Using Sennheiser headsets ===&lt;br /&gt;
If you use Sennheiser headsets, you should also install the then-current &amp;lt;code&amp;gt;DSEA_SDK_v&amp;lt;/code&amp;gt;&#039;&#039;version&#039;&#039;&amp;lt;code&amp;gt;.pkg&amp;lt;/code&amp;gt; package, after you installed the myApps client.  Without that, audio will still work, but not the controls on the headset.  You will need to keep that up-to-date yourself, as it is not updated by myApps&#039;s auto-update function.&lt;br /&gt;
&lt;br /&gt;
== Android ==&lt;br /&gt;
&lt;br /&gt;
myApps platform services are installed on Android by loading &#039;&#039;innovaphone myApps&#039;&#039; from the &#039;&#039;Play Store&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Configuration via MDM ===&lt;br /&gt;
&lt;br /&gt;
the PBX&#039;s server URL can be pre-configured by specifying a property &amp;quot;server&amp;quot; with string value &amp;quot;pbx.example.com&amp;quot; in the MDM.&lt;br /&gt;
&lt;br /&gt;
== IP270 ==&lt;br /&gt;
For configuration instructions, refer to the [[Reference16r1:Concept IP270&amp;amp;action=edit&amp;amp;redlink=1|IP270 concept article]].&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
&lt;br /&gt;
== Server configuration ==&lt;br /&gt;
When opening myApps for the first time, the user is prompted for the Server. Usually only the hostname (DNS host name or IP address) needs to be configured.&lt;br /&gt;
&lt;br /&gt;
But there are more options for special PBX configurations.&lt;br /&gt;
&lt;br /&gt;
; Non-standard HTTPS port&lt;br /&gt;
: If the PBX uses a non-standard HTTPS port, it must be appended to the host name separated by a colon (&amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;).&lt;br /&gt;
: Example: &amp;lt;code&amp;gt;pbx.example.com:4444&amp;lt;/code&amp;gt; (expands to &amp;lt;code&amp;gt;https://pbx.example.com:4444/PBX0/APPCLIENT/appclient.htm&amp;lt;/code&amp;gt;)&lt;br /&gt;
; DynPBX module name&lt;br /&gt;
: If the PBX is a DynPBX, the module id must be appended to PBX0 separated - (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;).&lt;br /&gt;
: Example: &amp;lt;code&amp;gt;pbx.example.com/PBX0-1&amp;lt;/code&amp;gt; (expands to &amp;lt;code&amp;gt;https://pbx.example.com/PBX0-1/APPCLIENT/appclient.htm&amp;lt;/code&amp;gt;)&lt;br /&gt;
; Softphone physical location&lt;br /&gt;
: If user defined physical location shall be used for softphone, you can append it using a parameter &amp;lt;code&amp;gt;#phys=&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Example: &amp;lt;code&amp;gt;pbx.example.com#phys=slave&amp;lt;/code&amp;gt; (expands to &amp;lt;code&amp;gt;https://pbx.example.com/PBX0/APPCLIENT/appclient.htm#phys=slave&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Example 1: PBX pbx.example.com with standard configuration&lt;br /&gt;
 pbx.example.com&lt;br /&gt;
&lt;br /&gt;
Example 2: PBX slave.example with DynPBX module ID 1, HTTPS port 4444 and physical location master&lt;br /&gt;
 slave.example.com:4444/PBX0-1#phys=master&lt;br /&gt;
&lt;br /&gt;
=== HTTP proxy support ===&lt;br /&gt;
&lt;br /&gt;
myApps platform services do support operation via HTTP proxy now. If one or more proxies have been configured in the network settings of the operating system for the active network connection, HTTP CONNECT tunnels are established.&lt;br /&gt;
&lt;br /&gt;
On Windows user name and password can be specified for the tunnel servers as generic credentials in the credentials manager (Anmeldeinformationsverwaltung). The name of the credentials must be the tunnel server hostname.&lt;br /&gt;
&lt;br /&gt;
On Android user name and password can be specified through Android &#039;&#039;Settings, Accounts&#039;&#039; by adding a myApps &#039;&#039;HTTP Proxy Credentials&#039;&#039; account. The name of the account must be the tunnel server hostname.&lt;br /&gt;
&lt;br /&gt;
== Platform specific settings ==&lt;br /&gt;
When myApps runs under the myApps platform services, it will show various platform specific settings as part of its &#039;&#039;burger menu&#039;&#039;, so the user can set them.  See &#039;&#039;Advanced settings&#039;&#039; in [[#UI elements|UI elements]] above.&lt;br /&gt;
&lt;br /&gt;
Some options can also be set globally for all myApps clients in the PBX&#039;s [[{{NAMESPACE}}:PBX/Config/myApps#Client_Settings|PBX/Config/myApps &#039;&#039;Client Settings&#039;&#039;]]&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Option&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Description&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Where to set&lt;br /&gt;
&lt;br /&gt;
!&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot;| Availability&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| || || User menu || PBX &#039;&#039;Client Settings&#039;&#039; || Windows || iOS || Android || macOS&lt;br /&gt;
|IP270&amp;lt;ref&amp;gt;myApps-IP270 offers device specific settings explained in [[Reference16r1:Concept IP270&amp;amp;action=edit&amp;amp;redlink=1|IP270 concept article]]&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Autostart || Launch myApps on login || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Appear offline after || controls after which idle time a user is considered &#039;&#039;inactive&#039;&#039;. See [[#User activity|User activity]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Hotkeys || Hotkeys for call dial, accept, reject. See [[#Hot keys|Hot keys]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Docking || Docking mode (left, right, none). See [[#???|??]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Desktop notifications|| Turn on/off platform notifications. See [[#Notifications|  Notifications]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| VPN || Disable VPN address for ICE candidate selection. See [[#RTP ports| RTP ports]] above || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Show in taskbar|| Show myApps in the taskbar in addition to it&#039;s tray icon.  || &amp;amp;#10004; ||&amp;amp;#10007; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Log flags || turn on/off certain trace levels. See [[#Troubleshooting|Troubleshooting]] below.  || &amp;amp;#10004; ||&amp;amp;#10004; ||&amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10004;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| External applications || define the applications available for Apps to be started. See [[#Call an external application for calls|Call an external application for calls]] above.  || &amp;amp;#10004; ||&amp;amp;#10007; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Ring in headset || send ring tone for incoming to headset instead of loudspeaker.  || &amp;amp;#10004; ||&amp;amp;#10007; ||&amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10007;&lt;br /&gt;
|&amp;amp;#10007;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start parameters for Windows ==&lt;br /&gt;
&lt;br /&gt;
On Windows, it is not possible to pass start parameters from the [https://www.chromium.org/developers Chromium documentation] to the myApps process.&lt;br /&gt;
&lt;br /&gt;
== OS Settings for Windows ==&lt;br /&gt;
Windows settings can influence the display of &#039;&#039;Desktop notifications&#039;&#039;. See [https://support.microsoft.com/en-us/help/4028678/windows-10-change-notification-settings Change notification settings in Windows 10/11] for details.&lt;br /&gt;
&lt;br /&gt;
=== Windows 11 ===&lt;br /&gt;
&lt;br /&gt;
* Windows 11 has a feature &amp;quot;do not disturb&amp;quot;. This hides notifications if enabled.&lt;br /&gt;
* Windows 11 has a feature &amp;quot;focus&amp;quot;. This enables &amp;quot;do not disturb&amp;quot; and thus hides notifications too.&lt;br /&gt;
* Windows 11 has priority settings for notifications. Ensure that VoIP notifications for calls are allowed any maybe also include myApps as an App which is allowed to show notifications.&lt;br /&gt;
&lt;br /&gt;
== OS settings for Android ==&lt;br /&gt;
; Events : The appearance of notifications can be controlled here.&lt;br /&gt;
&lt;br /&gt;
; Call accounts : For proper incoming call signaling, the call account &#039;&#039;myApps&#039;&#039; needs to be enabled. Note that on Samsung smartphones the call account switch likely toggles back and a few tries may need to be done until it persists. Please double-check the state.&lt;br /&gt;
&lt;br /&gt;
; Preferred Calling Account : Choose which calling account (myApps/SIM/..) should be used for outgoing calls initiated from within the native phone app / phone book.&lt;br /&gt;
&lt;br /&gt;
; Background data, unlimited data usage : Grant background data use to enable &#039;&#039;myApps&#039;&#039; to connect to the PBX immediately on an incoming call.&lt;br /&gt;
&lt;br /&gt;
; Overlaying : This setting is not needed if call account &#039;&#039;myApps&#039;&#039; has been enabled. Should there be a reason for not enabling call account &#039;&#039;myApps&#039;&#039;, the permission for overlaying needs to be granted on Android 10 or higher for proper call signaling.&lt;br /&gt;
&lt;br /&gt;
Note: If no SIM card is installed some Android smartphones exhibit a problem dialing from the smartphone contacts. The contacts app shows a choice &#039;&#039;Select SIM card for this call&#039;&#039; but all possible dialers are greyed out. In this case make myApps the default phone app in Android settings &#039;&#039;Apps, Default apps, Telephony&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== OS settings for iOS ==&lt;br /&gt;
; Notifications : The appearance of notifications can be controlled in iOS &#039;&#039;Settings, myApps&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== OS settings for macOS ==&lt;br /&gt;
&lt;br /&gt;
; Notifications : The appearance of notifications can be controlled in macOS &#039;&#039;Preferences, Notifications, myApps&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
myApps platform services can write various traces for debugging.  Trace can be turned on and off selectively in the [[#Advanced settings|Advanced settings]].&lt;br /&gt;
&lt;br /&gt;
The following trace flags can be set:&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;Recommended trace options are: &#039;&#039;&#039;App, Browser, ICE, TURN, Signaling and Audio&#039;&#039;&#039;. Please do not activate other flags unless innovaphone support says otherwise&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!style=&amp;quot;text-align: left; font-weight: bold&amp;quot; |  Abbreviation&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align: left; font-weight: bold&amp;quot; |code&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| App||0x000000001|| logs from the App Service itself&lt;br /&gt;
|-&lt;br /&gt;
| DNS||0x000000008|| logs DNS requests and results&lt;br /&gt;
|-&lt;br /&gt;
| HTTP client||0x000000080|| http client logs&lt;br /&gt;
|-&lt;br /&gt;
| TLS||0x000000400|| TLS logs&lt;br /&gt;
|-&lt;br /&gt;
| TCP||0x000000800|| TCP logs&lt;br /&gt;
|-&lt;br /&gt;
| LDS||0x000001000|| local domain sockets&lt;br /&gt;
|-&lt;br /&gt;
| WebSocket client||0x000004000|| logs outgoing websocket connections&lt;br /&gt;
|-&lt;br /&gt;
| App WebSocket||0x000008000|| logs app websocket connections (e.g. from PBX objects to an App Service or from the UI to the App Service)&lt;br /&gt;
|-&lt;br /&gt;
| UDP||0x000200000|| UDP logs&lt;br /&gt;
|-&lt;br /&gt;
| DTLS||0x000400000|| logs DTLS handshake and messages&lt;br /&gt;
|-&lt;br /&gt;
| Media||0x000800000|| logs media events&lt;br /&gt;
|-&lt;br /&gt;
| Media channel||0x001000000|| logs RTP/SCTP media connections&lt;br /&gt;
|-&lt;br /&gt;
| ICE||0x002000000|| logs ICE messages between peers&lt;br /&gt;
|-&lt;br /&gt;
| TURN||0x004000000|| logs TURN messages between peers&lt;br /&gt;
|-&lt;br /&gt;
| AppSharing||0x008000000|| logs AppSharing connection&lt;br /&gt;
|-&lt;br /&gt;
| Audio||0x010000000|| logs Audio connection and headset events&lt;br /&gt;
|-&lt;br /&gt;
| Video||0x020000000|| logs video connection and webcam events&lt;br /&gt;
|-&lt;br /&gt;
| Browser||0x040000000|| logs Chromium events&lt;br /&gt;
|-&lt;br /&gt;
| AppProxy||0x080000000|| logs requests which are proxied between the local webserver and the remote server&lt;br /&gt;
|-&lt;br /&gt;
| Webserver ||0x200000000|| enables webserver specific logs&lt;br /&gt;
|-&lt;br /&gt;
| Browser Console ||0x400000000|| logs browser console events&lt;br /&gt;
|-&lt;br /&gt;
| Signaling||0x800000000|| enables logs in the signaling module for debugging calls&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;code&#039;&#039; can be or&#039;ed and used as value for the &#039;&#039;Log flags&#039;&#039; field in [[{{NAMESPACE}}:PBX/Config/myApps#Client_Settings|PBX/Config/myApps/Client Settings]].&lt;br /&gt;
&lt;br /&gt;
; Windows :On Windows, traces are written to the &amp;lt;code&amp;gt;%LOCALAPPDATA%\innovaphone\myApps&amp;lt;/code&amp;gt; directory. If you start myApps with --log-size as parameter, you can define the maximum size of a log file (e.g. --log-size=100000000 would be 100MB for each file)&lt;br /&gt;
&lt;br /&gt;
:* myApps-&#039;&#039;date-time&#039;&#039;.txt : main log file for the platform services&lt;br /&gt;
&lt;br /&gt;
:* myAppsOutlookSearch-&#039;&#039;date-time&#039;&#039;.txt : log file for the Outlook phone book access&lt;br /&gt;
&lt;br /&gt;
:* myAppsHookController-&#039;&#039;date-time&#039;&#039;.txt : log file for the hot-key interceptor (see [[#Hot keys|Hot keys]])&lt;br /&gt;
&lt;br /&gt;
; :myApps update installation traces are written to the &amp;lt;code&amp;gt;%windir%\temp\&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
:* myAppsInstall.txt: MSI installation file&lt;br /&gt;
&lt;br /&gt;
; :myApps update service traces are written to the &amp;lt;code&amp;gt;%ProgramData%\innovaphone\myAppsUpdateService&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
:* myAppsUpdateService-&#039;&#039;date-time&#039;&#039;.txt: myApps update service traces&lt;br /&gt;
&lt;br /&gt;
;Android : traces can be sent by e-mail.&lt;br /&gt;
: also, an Android device might also be connected to a PC via an USB cable to get the traces. The files can be found in &amp;lt;code&amp;gt;Android/data/com.innovaphone.clientandroid/files&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; iOS : traces can be sent by e-mail.&lt;br /&gt;
&lt;br /&gt;
; macOS : traces can be sent by e-mail.&lt;br /&gt;
: also, the files can be found in &amp;lt;code&amp;gt;~/Library/Containers/com.innovaphone.client-ios/Data/Documents/&amp;lt;/code&amp;gt;. Press &#039;&#039;Alt+N&#039;&#039; followed by space to get tilde &#039;&#039;~&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
; IP270 : Refer to the [[Reference16r1:Concept IP270&amp;amp;action=edit&amp;amp;redlink=1#Troubleshooting|IP270 concept article section troubleshooting]].&lt;br /&gt;
&lt;br /&gt;
= Known Problems =&lt;br /&gt;
[[:Category:Problem myApps platform services|Known Problems]]&lt;br /&gt;
&lt;br /&gt;
= Related Articles =&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myApps]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myApps_Redundancy|Concept myApps Redundancy]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myApps_Office_Integration|Concept myApps Office Integration]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_myAPPs_Search_in_local-Outlook_Contacts|Concept myAPPs Search in local Outlook Contacts]]&lt;br /&gt;
* [[{{NAMESPACE}}:Call_Detail_Record_CDR_PBX|Call Detail Records]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept Push Notifications for myPBX iOS and Android|Concept Push Notifications for myPBX iOS and Android]]&lt;br /&gt;
* [[Howto:Troubleshoot v13 Push with myApps for Android and iOS]]&lt;br /&gt;
* [[{{NAMESPACE}}:PBX/Config/myApps|Reference16r1:PBX/Config/myApps]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_IP270|IP270 concept article]]&lt;br /&gt;
[[Category:Concept myApps platform services]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=78859</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=78859"/>
		<updated>2026-02-02T14:05:22Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Latest News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;!-- Message of the day --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
== Remote Support ==&lt;br /&gt;
[[Image:RemoteControl-click.png|left|60px|RemoteControl.png/|Download Remote Control|link=https://store.innovaphone.com/alpha/download/software/remotecontrolwindowsportable/16r1/remoteControl.exe]]&lt;br /&gt;
innovaphone only carries out scheduled remote maintenance via our ticket system by prior consultation.&amp;lt;br/&amp;gt;&lt;br /&gt;
As Remote Support Tool, we use our own product Remote Control ([https://www.innovaphone.com/en/all-apps/apps-to-work-with/remote-control-app.html more info]).&lt;br /&gt;
&lt;br /&gt;
You can &#039;&#039;&#039;[https://store.innovaphone.com/alpha/download/software/remotecontrolwindowsportable/16r1/remoteControl.exe download]&#039;&#039;&#039; the Remote Control client already or use the support link received from our support team.&amp;lt;br/&amp;gt;&lt;br /&gt;
After installing and opening the client you can &#039;&#039;&#039;pass the shown ID&#039;&#039;&#039; or &#039;&#039;&#039;use the received link&#039;&#039;&#039; to request the support session.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
Searching in wiki works, but is sometimes cumbersome.  However, you can have Google do the job for you.  Try [https://www.google.de/search?q=site%3Ainnovaphone.com+xml+documentation &amp;lt;code&amp;gt;site:innovaphone.com your search terms&amp;lt;/code&amp;gt;] to search the innovaphone sites for matches!&lt;br /&gt;
&lt;br /&gt;
If you still don&#039;t find what you are looking for, [mailto:presales@innovaphone.com drop us a message]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- latest news commented out, may be reactivated once there are new really --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- please insert new message ON TOP and remove extraneous (more than 5) old messages --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;nowiki&amp;gt; ~~~~ is replaced by your name and date automatically &amp;lt;/nowiki&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest News ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msc|Msc]] ([[User talk:Msc|talk]]) 15:05, 2 February 2026 (CET)&amp;lt;/p&amp;gt; [[Support:Firmware_V16r1_product/16r1/firmware_1610613_(beta5)_available | Version 16r1 Beta 5]] is now available from the [http://store.innovaphone.com/beta/download.htm Beta Store]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Lmi|Lmi]] ([[User talk:Lmi|talk]]) 09:45, 22 January 2026 (CET)&amp;lt;/p&amp;gt; [[Support:Firmware V15r1 product/15r1/firmware 1510655 (sr9) available | Version 15r1 Service Release 9]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Lmi|Lmi]] ([[User talk:Lmi|talk]]) 09:45, 22 January 2026 (CET)&amp;lt;/p&amp;gt; [[Support:Firmware V14r2 product/14r2/firmware 1420574 (sr17) available | Version 14r2 Service Release 17]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Lmi|Lmi]] ([[User talk:Lmi|talk]]) 09:45, 22 January 2026 (CET)&amp;lt;/p&amp;gt; [[Support:Firmware V13r3 product/13r3/firmware 138043 (sr34) available | Version 13r3 Service Release 34]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Tfu|Tfu]] ([[User talk:Tfu&amp;amp;action=edit&amp;amp;redlink=1|talk]]) 15:28, 13 March 2025 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP73 1012 (6.1.13) released| Wireless Handset Firmware IP73 1012 (6.1.13) released]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msu|Msu]] ([[User talk:Msu&amp;amp;action=edit&amp;amp;redlink=1|talk]]) 15:54, 18 February 2025 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP64 10317 (4.3.2)/IP65 10122 (4.3.2) released| Wireless Handset Firmware IP64 10317 (4.3.2)/IP65 10122 (4.3.2)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msu|Msu]] ([[User talk:Msu&amp;amp;action=edit&amp;amp;redlink=1|talk]]) 15:54, 18 February 2025 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware D83 10002 (2.0.5) released| Wireless Handset Firmware D83 10002 (2.0.5)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 15:38, 6 February 2023 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP62 3040621 (6.2.7) released| Wireless Handset Firmware IP62 3040621 (6.2.7)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 13:13, 6 February 2023 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:WinPDM Software 3130113 (4.1.8) released| WinPDM Software 3130113 (4.1.8)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 12:46, 16 June 2021 (CEST))&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:TAPI Service Provider 8188 (hotfix21) available|TAPI Service Provider 8188 (hotfix21)]] is now available from [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 18:21, 12 October 2020 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP61 3022811 (4.7.8)/IP63 3022912 (4.7.8) released| Wireless Handset Firmware IP61 3022811 (4.7.8)/IP63 3022912 (4.7.8)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 21:30, 27 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware and Management Software product/9.00/wireless 100037 (hotfix19) available| Wireless Package hotfix 19]] is now available from the [http://download.innovaphone.com/ice/9.00#wireless V9 download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Articles ==&lt;br /&gt;
&amp;lt;!-- https://www.mediawiki.org/wiki/Extension:Newest_Pages --&amp;gt;&lt;br /&gt;
{{Special:Newestpages/all/20}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em; font-size:1&amp;quot;&amp;gt;&lt;br /&gt;
== More innovaphone Ressources ==&lt;br /&gt;
* [http://www.innovaphone.com Home Page]&lt;br /&gt;
* [http://download.innovaphone.com Download Site ]&lt;br /&gt;
* [http://my.innovaphone.com my.innovaphone ]&lt;br /&gt;
* [http://mantis.innovaphone.com/ Ticketing System ]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_App_Service_Devices&amp;diff=78855</id>
		<title>Reference15r1:Concept App Service Devices</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_App_Service_Devices&amp;diff=78855"/>
		<updated>2026-02-02T12:04:16Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Certificates configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
The App Service Devices is an App Service which can be installed on an innovaphone App Platform. It is used to administrate the innovaphone devices which belong to the whole installation.&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r1&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
=== Devices App (innovaphone-devices) ===&lt;br /&gt;
This is the standard UI App for Devices.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
&lt;br /&gt;
;Websocket: to publish the com.innovaphone.devicesui-API, which can be used to link directly to devices (which is done e.g. inside the Events app)&lt;br /&gt;
&lt;br /&gt;
=== Devices API (innovaphone-devices-api) ===&lt;br /&gt;
This is a hidden App, which provides the Devices API (com.innovaphone.devices). This API can be used to find and communicate with devices which are registered to the Devices App.&lt;br /&gt;
&lt;br /&gt;
Additionally it acts as a provider of the Search API (com.innovaphone.search). So you can find devices and domains in other apps like the Search App.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
&lt;br /&gt;
;Hidden: DevicesApi must be a hidden App&lt;br /&gt;
;Websocket: to get the URL of the Devices App itself which is used for provisioning&lt;br /&gt;
&lt;br /&gt;
== PBX Manager Plugins ==&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
With the Devices plugin App objects can be created, edited and deleted for Devices and the Devices API on the PBX.&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
All innovaphone hard phones and gateways starting from version 13r1 can establish a registration inside the Devices App and therefor administrative tasks can be performed through the App.&lt;br /&gt;
&lt;br /&gt;
=== Domains ===&lt;br /&gt;
&lt;br /&gt;
In a hosted environment, it might be needed to add multiple domains to the Devices App.&amp;lt;br&amp;gt;&lt;br /&gt;
After the initial installation of Devices through Install, you have administrative rights and can add more domains. &lt;br /&gt;
&lt;br /&gt;
==== Administrative rights ====&lt;br /&gt;
You have administrative rights if the configured PBX App object for Devices uses the password of the instance which is configured in the Manager App and the PBX uses the same domain as this instance.&lt;br /&gt;
&lt;br /&gt;
==== Domain local rights ====&lt;br /&gt;
You have just rights to a certain domain if the configured PBX App object for Devices uses the domain password which can be configured in Devices for each domain and the PBX uses the same domain name as configured in Devices.&lt;br /&gt;
&lt;br /&gt;
==== Assign rights to other domains ====&lt;br /&gt;
Domains can gain access to other domains by configuring these access rights in the Devices App.&lt;br /&gt;
&lt;br /&gt;
==== Deploy passwords and access rights ====&lt;br /&gt;
During install, a domain is created inside the Devices App. There is a checkmark Deploy the domain password on all devices which is set by default and which is the same as the administrative password.&lt;br /&gt;
If you change the domain password, all passwords on all administrative devices and app platforms which are connected to this domain will be also changed.&amp;lt;br/&amp;gt;&lt;br /&gt;
Since 13r2sr25/13r3sr7/14rx: devices which are auto provisioned or provisioned through the Profile/Users Admin App will get a random password instead of the domain password.&lt;br /&gt;
If you add a phone device manually to a domain inside the Devices App, this phone device will also get a random password. Other device types added manually or devices added with a provisioning code which has been created within the Devices App directly, will get the domain password instead.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
This will also set the manager password and the SSH passwords of App Platforms.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
The clear text random passwords can be requested and viewed in the settings of a device in the Devices App.&lt;br /&gt;
&lt;br /&gt;
 Attention: If you untick the &#039;&#039;&#039;Deploy administrative devices passwords&#039;&#039;&#039; checkmark, the password won&#039;t be deployed anymore, but also not reconfigured to the default password!&lt;br /&gt;
&lt;br /&gt;
 Attention: After each reconnect of a client, the password will be deployed again.&lt;br /&gt;
 This means, if the checkmark is set and you set another password somewhere else (e.g. under General::Admin),&lt;br /&gt;
 this password will be just valid until the next reboot or reconnect to the Devices App!&lt;br /&gt;
&lt;br /&gt;
;Create new random passwords&lt;br /&gt;
You can rollout new random passwords by unticking the &#039;&#039;&#039;Deploy administrative devices passwords&#039;&#039;&#039; checkmark and ticking it again.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Devices with multiple domains (Cloud)&lt;br /&gt;
In a hosted environment, you can use the Devices App with multiple domains. The corresponding instance of Devices has a configured domain and an instance password set inside the manager.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hosting PBX has a domain inside Devices with a specific password.&amp;lt;br&amp;gt;&lt;br /&gt;
If this domain name matches the instance domain of the Devices instance and the password matches either the instance password or the domain password, you will be logged in as admin and have access to all domains.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each newly created domain has its own password inside Devices. If you create an App Object inside a PBX with this domain and the password of this domain (inside Devices), you will just have access to this single domain.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Devices also has the possibility to grant access to other domains for a specific domain.&lt;br /&gt;
&lt;br /&gt;
=== Categories ===&lt;br /&gt;
&lt;br /&gt;
There are two types of categories:&lt;br /&gt;
* provisioning category: used for device configurations and provisioning&lt;br /&gt;
* standard category: used for update/backup jobs and device management&lt;br /&gt;
&lt;br /&gt;
Each device can have just a &#039;&#039;&#039;single&#039;&#039;&#039; provisioning category, as it receives it&#039;s configuration by all configured device configurations for this provisioning category.&lt;br /&gt;
&lt;br /&gt;
In addition, a provisioning category, which is used inside an analogue phone/phone device configuration &#039;&#039;&#039;cannot&#039;&#039;&#039; be used to provision a gateway.&lt;br /&gt;
&lt;br /&gt;
=== Device connections ===&lt;br /&gt;
The Devices registration is done through a websocket connection to the webserver of the App Platform and the Devices instance (standard HTTP/s port).&amp;lt;br&amp;gt;&lt;br /&gt;
The URL used can be configured manually under [http://wiki.innovaphone.com/index.php?title={{NAMESPACE}}:General/Devices_Registration Devices Registration] or through a new provisioning mechanism.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A binary protocol is used to transfer information between the device and the devices App. The MAC address is the unique key to identify a device.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
If a device is added to a domain in Devices, the device gets a unique random password. Without such a password, a device shows up as &#039;&#039;&#039;unassigned&#039;&#039;&#039; in the Devices app.&lt;br /&gt;
This is also the case after a long reset or when the device lost its configuration.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In such a case, the device has to be manually added again to a domain or it has to be provisioned again.&lt;br /&gt;
&lt;br /&gt;
 If a device is not assigned to a domain or provisioning category, it won&#039;t receive any configurations.&lt;br /&gt;
&lt;br /&gt;
==== Devices Registrations ====&lt;br /&gt;
See [http://wiki.innovaphone.com/index.php?title={{NAMESPACE}}:General/Devices_Registration Devices Registration]&lt;br /&gt;
&lt;br /&gt;
==== Second Devices Registration URL ====&lt;br /&gt;
&lt;br /&gt;
The firmware has a second SYSCLIENT2 module, which can be configured to point to a different Devices instance and the AP Manager also has a second Devices Registration URL.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
If you use this configuration option, you should take care and consider:&lt;br /&gt;
&lt;br /&gt;
* if the Devices domain from the second configuration provides a password for all devices, the password is ignored, as it would lead to inconsistend passwords otherwise (from 13r1 SR12 on)&lt;br /&gt;
* the Devices domain from the second configuration should not provide Devices Configurations or Update Jobs as these might collide with configurations from the first Devices instance!&lt;br /&gt;
&lt;br /&gt;
Generally, only one of the two  &#039;&#039;Devices&#039;&#039;  App instances connected to the device must apply changes to the device.&lt;br /&gt;
&lt;br /&gt;
 We strongly discourage the usage of this second configuration option due to unexpected behaviour if incorrectly used!&lt;br /&gt;
 Never use the second URL if you use software or hardware rental!&lt;br /&gt;
&lt;br /&gt;
==== Device information ====&lt;br /&gt;
&lt;br /&gt;
The following data is transferred:&lt;br /&gt;
* MAC address&lt;br /&gt;
* device type (e.g. IPVA, AppPlatform, IP112)&lt;br /&gt;
* IP addresses (IPv4, IPv6)&lt;br /&gt;
* version (not searchable)&lt;br /&gt;
&lt;br /&gt;
You can also search for this data inside the devices tab in the App.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--==== Device Advanced UI ====&lt;br /&gt;
By default, Devices administrators and non admins can access the advanced UI of any device without limitations.&amp;lt;br/&amp;gt;&lt;br /&gt;
In certain scenerios (e.g. Cloud), you may want to restrict this access to just the PBX on gateways and IPVAs for non adminstrative users, which just have access to certain domains.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
In this case, you can set the corresponding checkmark in the device settings tab of the specific device.&amp;lt;br/&amp;gt;&lt;br /&gt;
If the flag is set, just the PBX tab of the advanced UI is accessible for non administrative Devices users.&lt;br /&gt;
&lt;br /&gt;
 Technically this means, that every HTTP request is checked if it starts with PBX0 and if not, the request is rejected with 401 unauthorized.&lt;br /&gt;
&lt;br /&gt;
If the device can be accessed directly without Devices, you may need a reverse proxy in between to filter HTTP requests.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=== Provisioning ===&lt;br /&gt;
Devices can be added by provisioning (both phones and gateways). &lt;br /&gt;
The standard online provisioning looks like this:&lt;br /&gt;
* a user or administrator creates a provisioning code in the Devices or Users App (this stores the Devices URL on the provisioning server side)&lt;br /&gt;
* a device with 13r1 or newer is connected to the network after a long reset&lt;br /&gt;
* the provisioning code has to be entered within one hour (after one hour, the Update URL isn&#039;t polled anymore)&lt;br /&gt;
* the device sends this code to config.innovaphone.com and retrieves the Devices URL&lt;br /&gt;
* the device connects to the Devices URL and is added to the domain where the code has been created&lt;br /&gt;
&lt;br /&gt;
There is also an [http://wiki.innovaphone.com/index.php?title={{NAMESPACE}}:Concept_Offline_Provisioning offline provisioning mode].&amp;lt;br&amp;gt;&lt;br /&gt;
There is also an [http://wiki.innovaphone.com/index.php?title={{NAMESPACE}}:Concept_Provisioning#Automatic_provisioning automatic provisioning mode].&lt;br /&gt;
&lt;br /&gt;
 Note: provisioning is cancelled if the device already belongs to another domain in the same Devices instance! This prevents the unauthorized move of a device between different domains.&lt;br /&gt;
&lt;br /&gt;
==== Devices Registration URL ====&lt;br /&gt;
&lt;br /&gt;
The Devices Registration URL which is set through the provisioning process, always starts with &#039;&#039;&#039;wss&#039;&#039;&#039;. This is not dependent anymore on the App URL which is configured inside the PBX Devices App object.&lt;br /&gt;
&lt;br /&gt;
=== Updates ===&lt;br /&gt;
The Devices App can be used to rollout updates.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== JSON files ====&lt;br /&gt;
The update files have to be acccessible on a webserver without authentication and four json files are used:&lt;br /&gt;
* firmware.json: innovaphone device firmware&lt;br /&gt;
* apps.json: Apps for the App Platform&lt;br /&gt;
* software.json: contains software for DECT handsets&lt;br /&gt;
** just IP64 and IP65 are used and supported&lt;br /&gt;
* phoneplatform.json: contains the phone platform image for e.g. the IP270&lt;br /&gt;
&lt;br /&gt;
You can either use the standard innovaphone App Store for these files or your own local webserver.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Update jobs ====&lt;br /&gt;
You can configure several update jobs with different categories to organize your updates.&amp;lt;br&amp;gt;&lt;br /&gt;
Update jobs are always sequentially processed and inside one update job, just &#039;&#039;&#039;20&#039;&#039;&#039; devices are updated at the same time.&lt;br /&gt;
&lt;br /&gt;
==== Device update check after the update job has been already executed====&lt;br /&gt;
If a device goes online, the newest suitable update job is searched for this device (depending on the categories).&amp;lt;br&amp;gt;&lt;br /&gt;
If an update job is found, the update is just performed, if there has been &#039;&#039;&#039;no&#039;&#039;&#039; successfull update for this device in this job before and the version does not match (simply string compare).&lt;br /&gt;
&lt;br /&gt;
====Update errors====&lt;br /&gt;
If an update fails, the Devices App shows an error. You may have to enable further tracing on the updated device itself to find out the reason of the failure.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* on a gateway/phone add a trace flag to the UP1 and HTTPCLIENT0 module and take a look at the events which may already tell you the reason&lt;br /&gt;
* on an App Platform, enable the App and HTTP Client trace flag on the manager&lt;br /&gt;
&lt;br /&gt;
 An update job is retried &#039;&#039;&#039;two&#039;&#039;&#039; times if updates inside this job failed. The retry is done &#039;&#039;&#039;ten&#039;&#039;&#039; minutes after the update job finished previously.&lt;br /&gt;
&lt;br /&gt;
====innovaphone myApps====&lt;br /&gt;
The path to the App Store and the used innovaphone myApps version is updated to the version of the gateway on gateways with an enabled PBX after a successfull update.&amp;lt;br&amp;gt;&lt;br /&gt;
This configuration can be found [http://wiki.innovaphone.com/index.php?title={{NAMESPACE}}:PBX/Config/myApps here]&lt;br /&gt;
&lt;br /&gt;
Inside the configuration on an update job, the flag &amp;quot;Do not update myApps launcher software&amp;quot; disables the update of the innovaphone myApps version inside PBXes.&lt;br /&gt;
&lt;br /&gt;
====DECT handsets====&lt;br /&gt;
If you check the update DECT handsets checkmark, all DECT devices will be configured to rollout updates to DECT handsets.&amp;lt;br/&amp;gt;&lt;br /&gt;
See [[{{NAMESPACE}}:Concept_App_Service_Devices#Supported_DECT_handsets | Supported DECT handsets]].&lt;br /&gt;
&lt;br /&gt;
The DECT handset firmware will be searched inside the configured software.json.&lt;br /&gt;
&lt;br /&gt;
=== Backups ===&lt;br /&gt;
The Devices App can be used to backup the configuration and data of Apps and devices.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Webserver requirements====&lt;br /&gt;
Backups are stored on a webserver with or without Digest/Basic authentication and with the &#039;&#039;&#039;webdav PUT&#039;&#039;&#039; method.&lt;br /&gt;
&lt;br /&gt;
====Backup jobs====&lt;br /&gt;
Backup jobs are executed sequentially. Inside one backup job, just &#039;&#039;&#039;20&#039;&#039;&#039; backups are performed at the same time.&lt;br /&gt;
&lt;br /&gt;
====Phones or gateways====&lt;br /&gt;
The configuration file is stored. Therefor the Devices App tells the device to store the configuration with a !mod cmd UP0 /sync prot URL.&lt;br /&gt;
&lt;br /&gt;
====Apps on an App Platform====&lt;br /&gt;
The databases of all existing instances and the manager are stored.&amp;lt;br&amp;gt;&lt;br /&gt;
Each installed App Service can have multiple instances and each App instance has its own database.&amp;lt;br&amp;gt;&lt;br /&gt;
A database contains &#039;&#039;&#039;both&#039;&#039;&#039; configuration and data of an App instance! &amp;lt;br&amp;gt;&lt;br /&gt;
The manager database contains the webserver certificate and further manager related configuration settings.&lt;br /&gt;
&lt;br /&gt;
The Devices App establishes a websocket connection to the manager and tells the manager where to store the backups.&amp;lt;br&amp;gt;&lt;br /&gt;
The manager on the backuped App Platform itself performs the HTTP requests to store the files.&lt;br /&gt;
&lt;br /&gt;
====Backup errors====&lt;br /&gt;
If a backup fails, the Devices App shows an error. You may have to enable further tracing on the backuped device itself to find out the reason of the failure.&lt;br /&gt;
&lt;br /&gt;
* on a gateway/phone add a trace flag to the UP1 and HTTPCLIENT0 &lt;br /&gt;
* on an App Platform, enable the App and HTTP Client trace flag on the manager&lt;br /&gt;
&lt;br /&gt;
=== Restore ===&lt;br /&gt;
====Phones or gateways====&lt;br /&gt;
Just as always under [http://wiki.innovaphone.com/index.php?title={{NAMESPACE}}:Administration/Upload/Config Upload Config].&lt;br /&gt;
&lt;br /&gt;
====Apps====&lt;br /&gt;
The App Service itself has to be installed on the App Platform prior restoring of a single instance.&amp;lt;br&amp;gt;&lt;br /&gt;
The restoring is done in the Manager App on the App Platform itself.&amp;lt;br&amp;gt;&lt;br /&gt;
The instance settings, the configuration and data are restored in a single process.&lt;br /&gt;
&lt;br /&gt;
=== Device Configurations ===&lt;br /&gt;
&lt;br /&gt;
You can define several device configurations. These configurations are either applied to all devices inside this domain or to selected categories.&amp;lt;br/&amp;gt;&lt;br /&gt;
Configurations are applied on creation and on every reconnect of a matching device.&lt;br /&gt;
&lt;br /&gt;
==== Transfer checkmarks ====&lt;br /&gt;
&lt;br /&gt;
Some configuration options have a specific checkmark to enable the transfer of the option.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* Checkmark disabled:&lt;br /&gt;
** configuration option field(s) are disabled &lt;br /&gt;
** option values are &#039;&#039;&#039;not&#039;&#039;&#039; transferred at all&lt;br /&gt;
* Checkmark enabled:&lt;br /&gt;
** configuration option field(s) are enabled&lt;br /&gt;
** option values are transferred, even if field values are empty&lt;br /&gt;
&lt;br /&gt;
==== Expert configuration ====&lt;br /&gt;
&lt;br /&gt;
The expert configuration can be used to configure different settings which are not available inside the other device configurations.&amp;lt;br/&amp;gt;&lt;br /&gt;
You can use the standard syntax of an update server script (see [[ {{NAMESPACE}}:Concept_Update_Server | Concept Update Server ]] for a general overview and the section on [[Howto:PHP_based_Update_Server_V2#Hints_for_writing_your_update_snippets | Hints for writing your update snippets ]] (note that the remainder of this article relates to the now deprecated old mechanism, so please disregard the rest)).&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Some hints:&lt;br /&gt;
* the expert configuration is just executed once after a device restarted and on change of the expert configuration itself&lt;br /&gt;
* the expert configuration is executed after all other device configuration types, so that you can override changes&lt;br /&gt;
* to make configuration changes effective, you may also need to issue a final &#039;&#039;config write&#039;&#039;, &#039;&#039;config activate&#039;&#039; and &#039;&#039;iresetn&#039;&#039; command (see the [[ {{NAMESPACE}}:Concept_Update_Server#Check_command | &#039;&#039;check&#039;&#039; command]] for details)&lt;br /&gt;
* some commands shouldn&#039;t be used inside the script:&lt;br /&gt;
** [[ {{NAMESPACE}}:Concept_Update_Server#Times_command |&#039;&#039;times&#039;&#039;]]: since the expert configuration is executed only once after a reboot of the device and when changes are made, it does not make sense to use the &#039;&#039;times&#039;&#039; command&lt;br /&gt;
** [[ {{NAMESPACE}}:Concept_Update_Server#Prot_command |&#039;&#039;prot&#039;&#039;]]|[[ {{NAMESPACE}}:Concept_Update_Server#Boot_command |&#039;&#039;boot&#039;&#039;]]: use an update job instead&lt;br /&gt;
** [[ {{NAMESPACE}}:Concept_Update_Server#Scfg_command |&#039;&#039;scfg&#039;&#039;]]: use a backup job instead&lt;br /&gt;
** [[Howto:PHP_based_Update_Server_V2#Using_vars_create|&#039;&#039;vars create&#039;&#039;]]: this cmd will always raise the &#039;&#039;reset needed condition&#039;&#039; and the aforementioned &#039;&#039;iresetn&#039;&#039; command would always execute therefore.  As a result, the devices would enter a boot loop.  Be sure to avoid this using an appropriate [[ {{NAMESPACE}}:Concept_Update_Server#Check_command |&#039;&#039;check&#039;&#039; command ]] and update its &#039;&#039;&amp;lt;serial&amp;gt;&#039;&#039; properly whenever the expert configuration is changed&lt;br /&gt;
&lt;br /&gt;
==== Certificates configuration ====&lt;br /&gt;
You can use this configuration to rollout certificates to the trust list of your devices.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Manual upload certificates.&lt;br /&gt;
* Configure up to five URLs which are polled every 24 hours. They must return files with PEM formatted public keys (one or more) which are then rolled out.&lt;br /&gt;
** certificates are just rolled out if differences are determined, so if URLs are polled and no changes are detected, certificates are not rolled out again. Changes are detected by fingerprint comparison of each embedded certificate&lt;br /&gt;
** if a device restarts, the configuration is applied again. Just the fingerprints of the device trust list are checked against the configuration trust list and just on differences, certificates are rolled out again&lt;br /&gt;
* Configure https://download.innovaphone.com/certificates/innovaphone.pem to always have the innovaphone public keys in your trust list (e.g. used for our push service).&lt;br /&gt;
* Configure https://download.innovaphone.com/certificates/ca.pem to always have the innovaphone Device Certification Authority certificates in your trust list.&lt;br /&gt;
* Configure https://download.innovaphone.com/certificates/ca-unverified.pem to always have the innovaphone Unverified Device Certification Authority certificates in your trust list.&lt;br /&gt;
** The Unverified CA is used for non hardware devices, e.g. IPVAs, which are not shipped with an official innovaphone Device Certification Authority certificate, as innovaphone has no control over the serial number here.&lt;br /&gt;
* Configure https://curl.se/ca/cacert.pem to always have the public Root Certifications Authorities in your trust list.&lt;br /&gt;
&lt;br /&gt;
 Using this configuration, the trust list can only be managed through &#039;&#039;Devices&#039;&#039; because it is cleared before each rollout.&lt;br /&gt;
&lt;br /&gt;
==== DECT Handsets ====&lt;br /&gt;
&lt;br /&gt;
This configuration can be used to configure specific options like language, voicemail number etc. for DECT handsets.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* all DECT devices like IP1202, IP1203 etc. will receive this configuration (of course just if the configured categories match)&lt;br /&gt;
* Devices configures a URL like https://domain.com/domain.com/devices/parameters/id.xml on the specific DEVMANBW module.&lt;br /&gt;
* This file is then polled by the basestations and the read values are transfered to the DECT handsets.&lt;br /&gt;
* see [[{{NAMESPACE}}:IP1202/IP1203_DECT_System#Configuration_of_Handset_parameters]]&lt;br /&gt;
&lt;br /&gt;
See [[{{NAMESPACE}}:Concept_App_Service_Devices#Supported_DECT_handsets | Supported DECT handsets]].&lt;br /&gt;
&lt;br /&gt;
=== Software rental ===&lt;br /&gt;
Regarding the Software Rental program and the Payment Method, please refer to:&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_Software_Rental|Concept Software Rental]]&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
Software rental can be done for innovaphone Cloud installations or for software, which operates on the customer premisis. This could eventually be customer owned hardware or a privat virtual machine, managed by the customer.&lt;br /&gt;
&lt;br /&gt;
==== Hardware licenses ====&lt;br /&gt;
Hardware licenses have to be bound on the specific device in my.innovaphone itself and currently can&#039;t be handled within the Devices App itself. So you also need to download the licenses from my.innovaphone and upload them on the device with the already known methods.&lt;br /&gt;
&lt;br /&gt;
===== Hardware licenses with software rental =====&lt;br /&gt;
If your device has software rental licenses, you can bind hardware licenses within my.innovaphone in the software rental project itself.&lt;br /&gt;
&lt;br /&gt;
===== Hardware licenses without software rental =====&lt;br /&gt;
If your device does not have software rental licenses, you should bind hardware licenses in a separate non rental project in my.innovaphone.&lt;br /&gt;
&lt;br /&gt;
==== innovaphone Cloud ====&lt;br /&gt;
Inside the innovaphone Cloud, you just have to upload your activation keys with iSCs to add licenses to one or more gateways.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email expiry notifications ====&lt;br /&gt;
You will receive an email notification if the rental of a project expires. This notification will be sent &#039;&#039;&#039;seven&#039;&#039;&#039; weeks before the expiry and then once a week until the rental expires.&amp;lt;br&amp;gt;&lt;br /&gt;
You can configure one or more email recipients in the domain settings.&amp;lt;br&amp;gt;&lt;br /&gt;
If no email address is configured, the email address of the logged in user account is used.&lt;br /&gt;
&lt;br /&gt;
==== History ====&lt;br /&gt;
You can download the history in the Devices App. You&#039;ll get a CSV file (semicolon separated). The date and number format depends on the selected language in the UI.&amp;lt;br&amp;gt;&lt;br /&gt;
There is also an API available for automated downloas, which is described [[ {{NAMESPACE}}:Concept_App_Service_Devices#API_to_download_rental_history|here ]].&lt;br /&gt;
&lt;br /&gt;
====Own installation====&lt;br /&gt;
Inside your own installation, you have to register a new my.innovaphone account or you can use an existing account inside the Devices App.&amp;lt;br&amp;gt;&lt;br /&gt;
One domain inside Devices belongs to one project inside your my.innovaphone company, so you can handle multiple domains with one my.innovaphone account.&lt;br /&gt;
&lt;br /&gt;
====Technical aspects====&lt;br /&gt;
A new rental expiration date is calculated on each license or balance change in the domain.&amp;lt;br&amp;gt;&lt;br /&gt;
So after each change new licenses with a new date are transfered to the gateways and also stored in the Devices App itself.&amp;lt;br&amp;gt;&lt;br /&gt;
If the rental expires, the gateway reboots and the licenses are not available anymore.&amp;lt;br&amp;gt;&lt;br /&gt;
The licenses are also transfered after each reconnect of a gateway to the Devices App.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
For license and balance changes, the Devices App must be online and have access to my.innovaphone.com!&lt;br /&gt;
&lt;br /&gt;
====Usage====&lt;br /&gt;
You have to add (use the + symbol) a PBX and select all licenses you want to rent.&amp;lt;br&amp;gt;&lt;br /&gt;
Use the &#039;&#039;&#039;apply&#039;&#039;&#039; button to really bind these licenses. Without usage of the apply button, you can just see a precalculation of the iSCs/month and the rental end date, but nothing is really charged from your balance.&lt;br /&gt;
&lt;br /&gt;
===Change of IP address/DNS name in PBX object===&lt;br /&gt;
If the IP address or DNS name inside the PBX object of the Devices App changes, all currently connected clients get a new Devices Registration URL and also all clients, which connect afterwards with the old host name.&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
=== Sample firmware.json ===&lt;br /&gt;
&amp;lt;code type=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;devices&amp;quot;: [&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP0010&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP0011&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP101&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP102&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP1060&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP110&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP110A&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP111&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP112&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP1130&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP1260&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP150&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP2000&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP200A&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP22&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP222&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP230&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP232&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP24&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP240&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP241&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP29&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP3010&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP3011&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP302&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP305&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP311&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP411&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP6000&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP6010&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP800&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP810&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP811&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IPVA&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;versions&amp;quot;: [&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;13r1&amp;quot;, &amp;quot;build&amp;quot;: &amp;quot;131705&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;13r1 dvl [131705]&amp;quot;, &amp;quot;wiki&amp;quot;: &amp;quot;&amp;quot; }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sample apps.json ===&lt;br /&gt;
&amp;lt;code type=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;apps&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;apidemo&amp;quot;,&lt;br /&gt;
            &amp;quot;folder&amp;quot;: &amp;quot;apidemo&amp;quot;,&lt;br /&gt;
            &amp;quot;binary&amp;quot;: &amp;quot;apidemo&amp;quot;,&lt;br /&gt;
            &amp;quot;versions&amp;quot;: [&lt;br /&gt;
                { &amp;quot;id&amp;quot;: &amp;quot;13r1&amp;quot;, &amp;quot;build&amp;quot;: &amp;quot;131705&amp;quot;, &amp;quot;label&amp;quot;: &amp;quot;dvl&amp;quot; }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;manufacturer&amp;quot;: &amp;quot;innovaphone&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Apidemo&amp;quot;,&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;The Apidemo&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;appstore&amp;quot;,&lt;br /&gt;
            &amp;quot;folder&amp;quot;: &amp;quot;appstore&amp;quot;,&lt;br /&gt;
            &amp;quot;binary&amp;quot;: &amp;quot;appstore&amp;quot;,&lt;br /&gt;
            &amp;quot;versions&amp;quot;: [&lt;br /&gt;
                { &amp;quot;id&amp;quot;: &amp;quot;13r1&amp;quot;, &amp;quot;build&amp;quot;: &amp;quot;131705&amp;quot;, &amp;quot;label&amp;quot;: &amp;quot;dvl&amp;quot; }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;manufacturer&amp;quot;: &amp;quot;innovaphone&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;AppStore&amp;quot;,&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;AppStore&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sample software.json ===&lt;br /&gt;
&amp;lt;code type=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;software&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;myappsandroid&amp;quot;,&lt;br /&gt;
            &amp;quot;folder&amp;quot;: &amp;quot;myappsandroid&amp;quot;,&lt;br /&gt;
            &amp;quot;binary&amp;quot;: &amp;quot;myapps.apk&amp;quot;,&lt;br /&gt;
            &amp;quot;versions&amp;quot;: [&lt;br /&gt;
                { &amp;quot;id&amp;quot;: &amp;quot;13r1&amp;quot;, &amp;quot;build&amp;quot;: &amp;quot;131705&amp;quot;, &amp;quot;label&amp;quot;: &amp;quot;dvl&amp;quot; }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;manufacturer&amp;quot;: &amp;quot;innovaphone&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;myApps Android&amp;quot;,&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;myApps for Android&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;myappswindows&amp;quot;,&lt;br /&gt;
            &amp;quot;folder&amp;quot;: &amp;quot;myappswindows&amp;quot;,&lt;br /&gt;
            &amp;quot;binary&amp;quot;: &amp;quot;myAppsSetup.msi&amp;quot;,&lt;br /&gt;
            &amp;quot;versions&amp;quot;: [&lt;br /&gt;
                { &amp;quot;id&amp;quot;: &amp;quot;13r1&amp;quot;, &amp;quot;build&amp;quot;: &amp;quot;131705&amp;quot;, &amp;quot;label&amp;quot;: &amp;quot;dvl&amp;quot; }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;manufacturer&amp;quot;: &amp;quot;innovaphone&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;myApps Windows&amp;quot;,&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;myApps for Windows&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sample phoneplatform.json ===&lt;br /&gt;
&amp;lt;code type=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;phoneplatforms&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;arm64&amp;quot;,&lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Phone Platform&amp;quot;,&lt;br /&gt;
            &amp;quot;file&amp;quot;: &amp;quot;phone-platform.img&amp;quot;,&lt;br /&gt;
            &amp;quot;folder&amp;quot;: &amp;quot;yocto2&amp;quot;,&lt;br /&gt;
            &amp;quot;version&amp;quot;: &amp;quot;2063&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;devices&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;IP270&amp;quot;,&lt;br /&gt;
            &amp;quot;phoneplatforms&amp;quot;: [&lt;br /&gt;
                &amp;quot;arm64&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API to download rental history ===&lt;br /&gt;
&lt;br /&gt;
You can download the history as a UTF-8 CSV file with simple &#039;&#039;&#039;HTTP GET&#039;&#039;&#039; requests with &#039;&#039;&#039;digest&#039;&#039;&#039; authentication.&amp;lt;br&amp;gt;&lt;br /&gt;
The CSV file uses the semicolon as delimiter.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The URL to download the history is e.g.:&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;code&amp;gt;https://mydomain.com/mydomain.com/devices/csvapi?...&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 You can find this path by editing the instance in the AP manager.&lt;br /&gt;
 In the listed paths, you&#039;ll find something which ends with csvapi&lt;br /&gt;
&lt;br /&gt;
In the innovaphone Cloud environment, the URL can be retrieved by taking a look at the Devices App object inside the cloud PBX and replacing the ending &#039;&#039;&#039;innovaphone-devices&#039;&#039;&#039; with &#039;&#039;&#039;csvapi&#039;&#039;&#039; inside the App URL, so it looks e.g. like this:&lt;br /&gt;
&lt;br /&gt;
 https://cloud-apps0.innovaphone.com/cloud.innovaphone.com/devices/csvapi&lt;br /&gt;
&lt;br /&gt;
====CSV columns====&lt;br /&gt;
Most columns should be self explaining, but the column &#039;&#039;&#039;invoice reference&#039;&#039;&#039; refers to a value which you can configure manually in the domain settings in the Devices App!&lt;br /&gt;
&lt;br /&gt;
====Digest authentication====&lt;br /&gt;
You can login with two different username/password combinations, while the domain is the digest username:&lt;br /&gt;
&lt;br /&gt;
* If you use the domain and password of your Devices App instance inside the AP Manager, you have automatically access to all domains.&amp;lt;br&amp;gt;&lt;br /&gt;
* If you use the domain name of any domain as digest username and the configured domain password, you&#039;ll have access to this domain and all domains to which this domain has access to&lt;br /&gt;
&lt;br /&gt;
====Query parameters====&lt;br /&gt;
The following query parameters can be used (don&#039;t forget to URL encode the parameter values, if neccessary!):&lt;br /&gt;
* all: if &#039;&#039;&#039;1&#039;&#039;&#039; or &#039;&#039;&#039;true&#039;&#039;&#039;, the history is queried for all domains where the digest user has access to&lt;br /&gt;
* domain: required, if &#039;&#039;all&#039;&#039; is not set&lt;br /&gt;
* lang: the output language of the CSV file, which also controls date and number formats, e.g. &#039;&#039;&#039;en&#039;&#039;&#039;, &#039;&#039;&#039;de&#039;&#039;&#039;, ...&lt;br /&gt;
* tz: the timezone for dates, e.g. &#039;&#039;&#039;Europe/Berlin&#039;&#039;&#039;&lt;br /&gt;
* type: two types are available:&lt;br /&gt;
** &#039;&#039;&#039;history&#039;&#039;&#039;: history which contains changes&lt;br /&gt;
** &#039;&#039;&#039;overview&#039;&#039;&#039;: a monthly overview with the iSC costs at the first of the last months&lt;br /&gt;
* from: unix timestamp (UTC) in milliseconds, ignored for type=overview&lt;br /&gt;
* to: unix timestamp (UTC) in milliseconds, ignored for type=overview&lt;br /&gt;
&lt;br /&gt;
====Example requests====&lt;br /&gt;
* &amp;lt;code&amp;gt;https://mydomain.com/mydomain.com/devices/csvapi?domain=mydomain.com&amp;amp;type=overview&amp;amp;lang=en&amp;amp;tz=Europe%2FBerlin&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;https://mydomain.com/mydomain.com/devices/csvapi?domain=mydomain.com&amp;amp;type=history&amp;amp;lang=en&amp;amp;tz=Europe%2FBerlin&amp;amp;from=1601903431000&amp;amp;to=1601903385000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;https://mydomain.com/mydomain.com/devices/csvapi?all=1&amp;amp;type=overview&amp;amp;lang=en&amp;amp;tz=Europe%2FBerlin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Supported DECT handsets ===&lt;br /&gt;
&lt;br /&gt;
The following handsets are supported for update jobs and the DECT handsets configuration:&lt;br /&gt;
&lt;br /&gt;
* IP64&lt;br /&gt;
* IP65&lt;br /&gt;
* D81&lt;br /&gt;
* D83&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
&lt;br /&gt;
===SoftwarePhone===&lt;br /&gt;
The Devices App is not meant to be used with the windows SoftwarPhone standalone installation.&lt;br /&gt;
&lt;br /&gt;
== Related Articles == &lt;br /&gt;
* [[Howto:Software_Rental]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78799</id>
		<title>Reference16r1:Certificate management</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78799"/>
		<updated>2026-01-27T15:55:32Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Key */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies to== &lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* all innovaphone devices from 16r1&lt;br /&gt;
&amp;lt;!-- Keywords: certificate, certificates, sips, https, tls, security, devices, ecdsa, rsa, PEM, CA --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
=== The role of certificates in secure communication ===&lt;br /&gt;
Certificates contain a public key (typically an RSA or ECDSA key) and an identity (typically one or more DNS names). &lt;br /&gt;
They are used in TLS connections (HTTPS, SIPS, H323/TLS, etc.) to validate the identity of the remote endpoint using asymmetric cryptography. This process ensures that endpoints are connected to the intended party and not an impostor.&lt;br /&gt;
&lt;br /&gt;
The basic principle:&lt;br /&gt;
;Handshake and signature: An endpoint sends its own certificate and creates a digital signature over the handshake data using its private key.&lt;br /&gt;
;Validation: The receiving endpoint validates both the certificate and the signature. It then compares the identity listed in the certificate with the expected identity of the remote party.&lt;br /&gt;
;Trust: To complete this validation, the receiver must know and trust either the certificate itself (self-signed) or, more commonly, the Certificate Authority (CA) that issued it.&lt;br /&gt;
&lt;br /&gt;
In standard TLS connections, the client validates the server&#039;s certificate. However, in specific applications (like H.323/TLS), the server may also validate the client&#039;s certificate. This is known as Client Authentication or Mutual TLS (mTLS).&lt;br /&gt;
&lt;br /&gt;
=== Security and performance considerations ===&lt;br /&gt;
The security of a certificate depends heavily on the key type and key size used. As computational power increases annually, key sizes must also grow to mitigate the risk of brute-force attacks. However, longer keys require more CPU cycles for encryption and decryption, leading to a noticeable performance impact.&lt;br /&gt;
&lt;br /&gt;
The primary challenge is finding the &amp;quot;sweet spot&amp;quot;: a key size that provides sufficient long-term security without causing unnecessary latency or high server load.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Security level !! RSA key size !! RSA performance !! ECC curve !! ECDSA performance !! Status&lt;br /&gt;
|-&lt;br /&gt;
| 80-bit || 1024-bit || Very fast || - || - || Deprecated&lt;br /&gt;
|-&lt;br /&gt;
| 112-bit || 2048-bit || Fast || - || - || Minimum&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;128-bit&#039;&#039;&#039; || &#039;&#039;&#039;3072-bit&#039;&#039;&#039; || &#039;&#039;&#039;Moderate&#039;&#039;&#039; || &#039;&#039;&#039;secp256r1&#039;&#039;&#039; || &#039;&#039;&#039;Fast&#039;&#039;&#039; || &#039;&#039;&#039;Current standard&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 192-bit || 7680-bit || Ultra slow|| secp384r1 || Moderate || Long term&lt;br /&gt;
|-&lt;br /&gt;
| 256-bit || 15360-bit || Ultra slow || secp521r1 || Moderate || Ultra high security&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compatibility considerations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal rollout strategy:&#039;&#039;&#039;&lt;br /&gt;
Support for ECDSA was introduced in &#039;&#039;&#039;version 16r1&#039;&#039;&#039;. Previous versions do not support this algorithm and will fail to establish secure connections if an ECDSA certificate is used. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Requirement:&#039;&#039;&#039; Update all devices to 16r1 or higher prior to moving to ECDSA certificates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interoperability with external systems:&#039;&#039;&#039; &lt;br /&gt;
On devices that interact with external installations — such as Reverse Proxies and Session Border Controllers (SBCs) — it is advisable to continue using RSA certificates until you are certain that external parties have also upgraded to versions supporting ECDSA.&lt;br /&gt;
&lt;br /&gt;
== Certificate Types ==&lt;br /&gt;
&lt;br /&gt;
=== Manufacturer certificate ===&lt;br /&gt;
Every innovaphone device is shipped with a unique, pre-installed certificate signed by the &#039;&#039;&#039;&amp;quot;innovaphone Device Certification Authority 2&amp;quot;&#039;&#039;&#039;. This certificate uses the hardware MAC address of the device as the Common Name (CN).&lt;br /&gt;
For non-hardware endpoints you can obtain a certificate signed by &#039;&#039;&#039;&amp;quot;innovaphone Unverified Device CA&amp;quot;&#039;&#039;&#039;, that contains the unverified MAC address. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Storage:&#039;&#039;&#039; The certificate and its associated private key are stored in a secure hardware area and cannot be modified or removed.&lt;br /&gt;
* &#039;&#039;&#039;Typical use cases:&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;Client authentication:&#039;&#039;&#039; Used to identify the device against innovaphone cloud services (e.g., Push Service).&lt;br /&gt;
** &#039;&#039;&#039;VoIP registration:&#039;&#039;&#039; Used for secure client authentication when registering endpoints against the PBX.&lt;br /&gt;
** &#039;&#039;&#039;System fallback:&#039;&#039;&#039; Acts as the default identity if no custom device certificate is present.&lt;br /&gt;
&lt;br /&gt;
=== Device certificate ===&lt;br /&gt;
For production environments, you can install a custom certificate signed by a publicly trusted CA (e.g., Let&#039;s Encrypt) or an internal Corporate PKI. To ensure modern browser and service compatibility, these certificates must include the device&#039;s FQDN in the &#039;&#039;&#039;Subject Alternative Name (SAN)&#039;&#039;&#039; field.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Typical use cases:&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;Server authentication:&#039;&#039;&#039; Provides a trusted identity for HTTPS access.&lt;br /&gt;
** &#039;&#039;&#039;Client authentication:&#039;&#039;&#039; Used for Client Authentication based on DNS names, such as for Federation, Shared Services, or other inter-customer communication.&lt;br /&gt;
&lt;br /&gt;
If no device certificate is installed, the device falls back to the manufacturer certificate. Because the manufacturer certificate contains a MAC address instead of a DNS name, it will trigger security warnings in browsers and may be rejected by external services requiring DNS-based validation.&lt;br /&gt;
&lt;br /&gt;
== Certificate rollout ==&lt;br /&gt;
This chapter explains how to deploy certificates and trust lists at scale using automatic tools. This ensures consistency and prevents outages due to expired certificates.&lt;br /&gt;
=== Trust lists ===&lt;br /&gt;
The list of trusted certificates can be synchronized on all devices using a &amp;quot;Certificates&amp;quot; configuration in the Devices App.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_App_Service_Devices#Certificates_configuration]] for details.&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; This is automatically configured when setting up new devices using Install. Individual changes can be done in the devices app.&lt;br /&gt;
&lt;br /&gt;
=== Device certificates ===&lt;br /&gt;
For certificates for individual devices, we recommend using an &#039;&#039;&#039;ACMEv2 provider&#039;&#039;&#039; (such as Let&#039;s Encrypt). The software can automatically obtain certificates from such a provider and renew them before they expire.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_Let%27s_Encrypt]] for detailed configuration steps.&lt;br /&gt;
&lt;br /&gt;
== Manual configuration ==&lt;br /&gt;
Certificates and trust lists can also be manually configured on individual devices. This is intended for small-scale testing or troubleshooting. &#039;&#039;&#039;We strongly recommend using automatic deployment for production environments&#039;&#039;&#039; to avoid manual tracking of expiration dates.&lt;br /&gt;
&lt;br /&gt;
Manual configuration in the firmware is performed via the [[{{NAMESPACE}}:General/Certificates | General / Certificates]] page of the Advanced UI.&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Certificate management]]&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Parameters ===&lt;br /&gt;
==== Certificate ====&lt;br /&gt;
* X.509 v3/v2&lt;br /&gt;
==== Key ====&lt;br /&gt;
* &#039;&#039;&#039;RSA&#039;&#039;&#039;&lt;br /&gt;
** 1024-bit (Deprecated)&lt;br /&gt;
** 2048-bit&lt;br /&gt;
** 3072-bit&lt;br /&gt;
** 4096-bit&lt;br /&gt;
** other key sizes can be used but can&#039;t be created in the software&lt;br /&gt;
* &#039;&#039;&#039;ECDSA&#039;&#039;&#039;&lt;br /&gt;
** secp256r1 (NIST P-256)&lt;br /&gt;
** secp384r1 (NIST P-384)&lt;br /&gt;
** secp521r1 (NIST P-521)&lt;br /&gt;
&lt;br /&gt;
==== Signature ====&lt;br /&gt;
* ECDSA&lt;br /&gt;
* RSA&lt;br /&gt;
* RSASSA-PSS with mgf1&lt;br /&gt;
==== Hash ====&lt;br /&gt;
* SHA-256&lt;br /&gt;
* SHA-384&lt;br /&gt;
* SHA-512&lt;br /&gt;
* SHA1 (deprecated, deactivated for new certificates)&lt;br /&gt;
==== File types ====&lt;br /&gt;
* PEM&lt;br /&gt;
* DER&lt;br /&gt;
* PKCS#12&lt;br /&gt;
&lt;br /&gt;
=== Change history ===&lt;br /&gt;
For details on supported algorithms in different software versions please seee [[Howto:Security_works_with_innovaphone]].&lt;br /&gt;
&lt;br /&gt;
=== Hints on constructing PEM files ===&lt;br /&gt;
&lt;br /&gt;
If you want to create a PEM file containing the private key and the certificate chain for a box, make sure the certificate chain is ordered from the certificate of the endpoint up to the root CA certificate. Each certificate signed by the next one.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;Device private key&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 -----BEGIN RSA PRIVATE KEY-----&lt;br /&gt;
 MIICXAIBAAKBgQDecOKfxrVdHNZRl8RnpNItpmdSuc+WKAS1UZHbtdH5dUJ7OzG3&lt;br /&gt;
 ZtW684dkm+mbLP00uY4Qiu25dNg0pKp7svihPU8AvKjoyIS52R2Mtt+/hTpjDfgj&lt;br /&gt;
 mGFyhMMmziCLaC+oKL4W88sivv7oOjUlBmGHc0JarKoN1q3Yxgcfg4Zk8QIDAQAB&lt;br /&gt;
 UcVghAbSXJ5G3A3v9POs8UthRMxPrnN2c7DadjZp7Qg=&lt;br /&gt;
 -----END RSA PRIVATE KEY-----&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;Device certificate&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIICMTCCAZqgAwIBAgIBATANBgkqhkiG9w0BAQUFADAVMRMwEQYDVQQDDApNeSBS&lt;br /&gt;
 b290IENBMB4XDTA4MDgxNDA5MDkzM1oXDTExMDgxNDA5MDkzM1owGTEXMBUGA1UE&lt;br /&gt;
 7HNL76EuQrMmshxYxq0Ay/mlkVc0v7Fp1NzkYn0I2UHpwFZ+zA==&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;Intermediate CA certificate&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIICDDCCAXWgAwIBAgIBADANBgkqhkiG9w0BAQUFADAVMRMwEQYDVQQDDApNeSBS&lt;br /&gt;
 3FSCPvWfh5nk4e8wIAYDVR0OAQEABBYEFE5lzuLAhex3qtxUgj71n4eZ5OHvMA0G&lt;br /&gt;
 CSqGSIb3DQEBBQUAA4GBAAepePqAM59TSoZvSPM/XUn3WKbeOa++6842+4Vp9B1c&lt;br /&gt;
 NmI952d/j/+VsuUXDzPff92IsumPBcch87pksp2GkDrnBvd8WxRsm/n6JF2XS2Ey&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;Root CA certificate&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIICDDCCAXWgAwIBAgIBtpmdSuc+WKAS1UZHbtUFADAVEpG4C3G4CQYDVQQDDApe&lt;br /&gt;
 cmKMZ+WFAkEA5e4thgPIFPjLtVL2EK7WxMi2msigZ0HeoBfAJHu5K/H01BqUGdwK&lt;br /&gt;
 hh+ksaW+DStVNG21iuZSQuGwVv56oHj3fQJAdHx+06d7p3G4CA2fdfg24iopluMA&lt;br /&gt;
 oQN9N7Dfw4RyD+ypsMYz8at9RTEqG8Lc0hujGLgtvBpHUp6wxdUuRw4DJQJAGqn0&lt;br /&gt;
 PYZSvZvcg7qLLoQYA9oC0xBRCahp2MboUVLHtoDok3BBnH4X+lXRE4jU8VIFH39Z&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
Keys in the PKCS#8 format should look like follows.&lt;br /&gt;
&lt;br /&gt;
 -----BEGIN PRIVATE KEY-----&lt;br /&gt;
 MIICXAIBAAKBgQDecOKfxrVdHNZRl8RnpNItpmdSuc+WKAS1UZHbtdH5dUJ7OzG3&lt;br /&gt;
 ZtW684dkm+mbLP00uY4Qiu25dNg0pKp7svihPU8AvKjoyIS52R2Mtt+/hTpjDfgj&lt;br /&gt;
 mGFyhMMmziCLaC+oKL4W88sivv7oOjUlBmGHc0JarKoN1q3Yxgcfg4Zk8QIDAQAB&lt;br /&gt;
 UcVghAbSXJ5G3A3v9POs8UthRMxPrnN2c7DadjZp7Qg=&lt;br /&gt;
 -----END PRIVATE KEY-----&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78794</id>
		<title>Reference16r1:Certificate management</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78794"/>
		<updated>2026-01-27T15:00:05Z</updated>

		<summary type="html">&lt;p&gt;Msc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies to== &lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* all innovaphone devices from 16r1&lt;br /&gt;
&amp;lt;!-- Keywords: certificate, certificates, sips, https, tls, security, devices, ecdsa, rsa, PEM, CA --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
=== The role of certificates in secure communication ===&lt;br /&gt;
Certificates contain a public key (typically an RSA or ECDSA key) and an identity (typically one or more DNS names). &lt;br /&gt;
They are used in TLS connections (HTTPS, SIPS, H323/TLS, etc.) to validate the identity of the remote endpoint using asymmetric cryptography. This process ensures that endpoints are connected to the intended party and not an impostor.&lt;br /&gt;
&lt;br /&gt;
The basic principle:&lt;br /&gt;
;Handshake and signature: An endpoint sends its own certificate and creates a digital signature over the handshake data using its private key.&lt;br /&gt;
;Validation: The receiving endpoint validates both the certificate and the signature. It then compares the identity listed in the certificate with the expected identity of the remote party.&lt;br /&gt;
;Trust: To complete this validation, the receiver must know and trust either the certificate itself (self-signed) or, more commonly, the Certificate Authority (CA) that issued it.&lt;br /&gt;
&lt;br /&gt;
In standard TLS connections, the client validates the server&#039;s certificate. However, in specific applications (like H.323/TLS), the server may also validate the client&#039;s certificate. This is known as Client Authentication or Mutual TLS (mTLS).&lt;br /&gt;
&lt;br /&gt;
=== Security and performance considerations ===&lt;br /&gt;
The security of a certificate depends heavily on the key type and key size used. As computational power increases annually, key sizes must also grow to mitigate the risk of brute-force attacks. However, longer keys require more CPU cycles for encryption and decryption, leading to a noticeable performance impact.&lt;br /&gt;
&lt;br /&gt;
The primary challenge is finding the &amp;quot;sweet spot&amp;quot;: a key size that provides sufficient long-term security without causing unnecessary latency or high server load.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Security level !! RSA key size !! RSA performance !! ECC curve !! ECDSA performance !! Status&lt;br /&gt;
|-&lt;br /&gt;
| 80-bit || 1024-bit || Very fast || - || - || Deprecated&lt;br /&gt;
|-&lt;br /&gt;
| 112-bit || 2048-bit || Fast || - || - || Minimum&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;128-bit&#039;&#039;&#039; || &#039;&#039;&#039;3072-bit&#039;&#039;&#039; || &#039;&#039;&#039;Moderate&#039;&#039;&#039; || &#039;&#039;&#039;secp256r1&#039;&#039;&#039; || &#039;&#039;&#039;Fast&#039;&#039;&#039; || &#039;&#039;&#039;Current standard&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 192-bit || 7680-bit || Ultra slow|| secp384r1 || Moderate || Long term&lt;br /&gt;
|-&lt;br /&gt;
| 256-bit || 15360-bit || Ultra slow || secp521r1 || Moderate || Ultra high security&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compatibility considerations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal rollout strategy:&#039;&#039;&#039;&lt;br /&gt;
Support for ECDSA was introduced in &#039;&#039;&#039;version 16r1&#039;&#039;&#039;. Previous versions do not support this algorithm and will fail to establish secure connections if an ECDSA certificate is used. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Requirement:&#039;&#039;&#039; Update all devices to 16r1 or higher prior to moving to ECDSA certificates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interoperability with external systems:&#039;&#039;&#039; &lt;br /&gt;
On devices that interact with external installations — such as Reverse Proxies and Session Border Controllers (SBCs) — it is advisable to continue using RSA certificates until you are certain that external parties have also upgraded to versions supporting ECDSA.&lt;br /&gt;
&lt;br /&gt;
== Certificate Types ==&lt;br /&gt;
&lt;br /&gt;
=== Manufacturer certificate ===&lt;br /&gt;
Every innovaphone device is shipped with a unique, pre-installed certificate signed by the &#039;&#039;&#039;&amp;quot;innovaphone Device Certification Authority 2&amp;quot;&#039;&#039;&#039;. This certificate uses the hardware MAC address of the device as the Common Name (CN).&lt;br /&gt;
For non-hardware endpoints you can obtain a certificate signed by &#039;&#039;&#039;&amp;quot;innovaphone Unverified Device CA&amp;quot;&#039;&#039;&#039;, that contains the unverified MAC address. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Storage:&#039;&#039;&#039; The certificate and its associated private key are stored in a secure hardware area and cannot be modified or removed.&lt;br /&gt;
* &#039;&#039;&#039;Typical use cases:&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;Client authentication:&#039;&#039;&#039; Used to identify the device against innovaphone cloud services (e.g., Push Service).&lt;br /&gt;
** &#039;&#039;&#039;VoIP registration:&#039;&#039;&#039; Used for secure client authentication when registering endpoints against the PBX.&lt;br /&gt;
** &#039;&#039;&#039;System fallback:&#039;&#039;&#039; Acts as the default identity if no custom device certificate is present.&lt;br /&gt;
&lt;br /&gt;
=== Device certificate ===&lt;br /&gt;
For production environments, you can install a custom certificate signed by a publicly trusted CA (e.g., Let&#039;s Encrypt) or an internal Corporate PKI. To ensure modern browser and service compatibility, these certificates must include the device&#039;s FQDN in the &#039;&#039;&#039;Subject Alternative Name (SAN)&#039;&#039;&#039; field.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Typical use cases:&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;Server authentication:&#039;&#039;&#039; Provides a trusted identity for HTTPS access.&lt;br /&gt;
** &#039;&#039;&#039;Client authentication:&#039;&#039;&#039; Used for Client Authentication based on DNS names, such as for Federation, Shared Services, or other inter-customer communication.&lt;br /&gt;
&lt;br /&gt;
If no device certificate is installed, the device falls back to the manufacturer certificate. Because the manufacturer certificate contains a MAC address instead of a DNS name, it will trigger security warnings in browsers and may be rejected by external services requiring DNS-based validation.&lt;br /&gt;
&lt;br /&gt;
== Certificate rollout ==&lt;br /&gt;
This chapter explains how to deploy certificates and trust lists at scale using automatic tools. This ensures consistency and prevents outages due to expired certificates.&lt;br /&gt;
=== Trust lists ===&lt;br /&gt;
The list of trusted certificates can be synchronized on all devices using a &amp;quot;Certificates&amp;quot; configuration in the Devices App.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_App_Service_Devices#Certificates_configuration]] for details.&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; This is automatically configured when setting up new devices using Install. Individual changes can be done in the devices app.&lt;br /&gt;
&lt;br /&gt;
=== Device certificates ===&lt;br /&gt;
For certificates for individual devices, we recommend using an &#039;&#039;&#039;ACMEv2 provider&#039;&#039;&#039; (such as Let&#039;s Encrypt). The software can automatically obtain certificates from such a provider and renew them before they expire.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_Let%27s_Encrypt]] for detailed configuration steps.&lt;br /&gt;
&lt;br /&gt;
== Manual configuration ==&lt;br /&gt;
Certificates and trust lists can also be manually configured on individual devices. This is intended for small-scale testing or troubleshooting. &#039;&#039;&#039;We strongly recommend using automatic deployment for production environments&#039;&#039;&#039; to avoid manual tracking of expiration dates.&lt;br /&gt;
&lt;br /&gt;
Manual configuration in the firmware is performed via the [[{{NAMESPACE}}:General/Certificates | General / Certificates]] page of the Advanced UI.&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Certificate management]]&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Parameters ===&lt;br /&gt;
==== Certificate ====&lt;br /&gt;
* X.509 v3/v2&lt;br /&gt;
==== Key ====&lt;br /&gt;
* &#039;&#039;&#039;RSA&#039;&#039;&#039;&lt;br /&gt;
** 1024-bit (Deprecated)&lt;br /&gt;
** 2048-bit&lt;br /&gt;
** 3072-bit&lt;br /&gt;
** 4096-bit&lt;br /&gt;
* &#039;&#039;&#039;ECDSA&#039;&#039;&#039;&lt;br /&gt;
** secp256r1 (NIST P-256)&lt;br /&gt;
** secp384r1 (NIST P-384)&lt;br /&gt;
** secp521r1 (NIST P-521)&lt;br /&gt;
==== Signature ====&lt;br /&gt;
* ECDSA&lt;br /&gt;
* RSA&lt;br /&gt;
* RSASSA-PSS with mgf1&lt;br /&gt;
==== Hash ====&lt;br /&gt;
* SHA-256&lt;br /&gt;
* SHA-384&lt;br /&gt;
* SHA-512&lt;br /&gt;
* SHA1 (deprecated, deactivated for new certificates)&lt;br /&gt;
==== File types ====&lt;br /&gt;
* PEM&lt;br /&gt;
* DER&lt;br /&gt;
* PKCS#12&lt;br /&gt;
&lt;br /&gt;
=== Change history ===&lt;br /&gt;
For details on supported algorithms in different software versions please seee [[Howto:Security_works_with_innovaphone]].&lt;br /&gt;
&lt;br /&gt;
=== Hints on constructing PEM files ===&lt;br /&gt;
&lt;br /&gt;
If you want to create a PEM file containing the private key and the certificate chain for a box, make sure the certificate chain is ordered from the certificate of the endpoint up to the root CA certificate. Each certificate signed by the next one.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;Device private key&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 -----BEGIN RSA PRIVATE KEY-----&lt;br /&gt;
 MIICXAIBAAKBgQDecOKfxrVdHNZRl8RnpNItpmdSuc+WKAS1UZHbtdH5dUJ7OzG3&lt;br /&gt;
 ZtW684dkm+mbLP00uY4Qiu25dNg0pKp7svihPU8AvKjoyIS52R2Mtt+/hTpjDfgj&lt;br /&gt;
 mGFyhMMmziCLaC+oKL4W88sivv7oOjUlBmGHc0JarKoN1q3Yxgcfg4Zk8QIDAQAB&lt;br /&gt;
 UcVghAbSXJ5G3A3v9POs8UthRMxPrnN2c7DadjZp7Qg=&lt;br /&gt;
 -----END RSA PRIVATE KEY-----&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;Device certificate&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIICMTCCAZqgAwIBAgIBATANBgkqhkiG9w0BAQUFADAVMRMwEQYDVQQDDApNeSBS&lt;br /&gt;
 b290IENBMB4XDTA4MDgxNDA5MDkzM1oXDTExMDgxNDA5MDkzM1owGTEXMBUGA1UE&lt;br /&gt;
 7HNL76EuQrMmshxYxq0Ay/mlkVc0v7Fp1NzkYn0I2UHpwFZ+zA==&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;Intermediate CA certificate&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIICDDCCAXWgAwIBAgIBADANBgkqhkiG9w0BAQUFADAVMRMwEQYDVQQDDApNeSBS&lt;br /&gt;
 3FSCPvWfh5nk4e8wIAYDVR0OAQEABBYEFE5lzuLAhex3qtxUgj71n4eZ5OHvMA0G&lt;br /&gt;
 CSqGSIb3DQEBBQUAA4GBAAepePqAM59TSoZvSPM/XUn3WKbeOa++6842+4Vp9B1c&lt;br /&gt;
 NmI952d/j/+VsuUXDzPff92IsumPBcch87pksp2GkDrnBvd8WxRsm/n6JF2XS2Ey&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;Root CA certificate&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIICDDCCAXWgAwIBAgIBtpmdSuc+WKAS1UZHbtUFADAVEpG4C3G4CQYDVQQDDApe&lt;br /&gt;
 cmKMZ+WFAkEA5e4thgPIFPjLtVL2EK7WxMi2msigZ0HeoBfAJHu5K/H01BqUGdwK&lt;br /&gt;
 hh+ksaW+DStVNG21iuZSQuGwVv56oHj3fQJAdHx+06d7p3G4CA2fdfg24iopluMA&lt;br /&gt;
 oQN9N7Dfw4RyD+ypsMYz8at9RTEqG8Lc0hujGLgtvBpHUp6wxdUuRw4DJQJAGqn0&lt;br /&gt;
 PYZSvZvcg7qLLoQYA9oC0xBRCahp2MboUVLHtoDok3BBnH4X+lXRE4jU8VIFH39Z&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
Keys in the PKCS#8 format should look like follows.&lt;br /&gt;
&lt;br /&gt;
 -----BEGIN PRIVATE KEY-----&lt;br /&gt;
 MIICXAIBAAKBgQDecOKfxrVdHNZRl8RnpNItpmdSuc+WKAS1UZHbtdH5dUJ7OzG3&lt;br /&gt;
 ZtW684dkm+mbLP00uY4Qiu25dNg0pKp7svihPU8AvKjoyIS52R2Mtt+/hTpjDfgj&lt;br /&gt;
 mGFyhMMmziCLaC+oKL4W88sivv7oOjUlBmGHc0JarKoN1q3Yxgcfg4Zk8QIDAQAB&lt;br /&gt;
 UcVghAbSXJ5G3A3v9POs8UthRMxPrnN2c7DadjZp7Qg=&lt;br /&gt;
 -----END PRIVATE KEY-----&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Let%27s_Encrypt&amp;diff=78793</id>
		<title>Reference16r1:Concept Let&#039;s Encrypt</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Let%27s_Encrypt&amp;diff=78793"/>
		<updated>2026-01-27T14:49:13Z</updated>

		<summary type="html">&lt;p&gt;Msc: Created page with &amp;quot;Let%27s%20Encrypt  Certificates are automatically generated for innovaphone gateways and App Platforms.  == Applies to == * innovaphone gateways from version 14r1 * innovaphone App Platform with version 14r1 apps (image version 110036 or higher)  == How it works ==  * Each configured innovaphone client requests a new certificate &amp;#039;&amp;#039;&amp;#039;30&amp;#039;&amp;#039;&amp;#039; days before it&amp;#039;s current certificate expires. * Therefor an app websocket connection is opened to the Connector fo...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Let%27s%20Encrypt]]&lt;br /&gt;
&lt;br /&gt;
Certificates are automatically generated for innovaphone gateways and App Platforms.&lt;br /&gt;
&lt;br /&gt;
== Applies to ==&lt;br /&gt;
* innovaphone gateways from version 14r1&lt;br /&gt;
* innovaphone App Platform with version 14r1 apps (image version 110036 or higher)&lt;br /&gt;
&lt;br /&gt;
== How it works ==&lt;br /&gt;
&lt;br /&gt;
* Each configured innovaphone client requests a new certificate &#039;&#039;&#039;30&#039;&#039;&#039; days before it&#039;s current certificate expires.&lt;br /&gt;
* Therefor an app websocket connection is opened to the Connector for Let&#039;s Encrypt App Service.&lt;br /&gt;
* The client sends a certificate signing request to the Connector for Let&#039;s Encrypt App Service.&lt;br /&gt;
* The Connector for Let&#039;s Encrypt App Service itself communitates via HTTPs and [https://en.wikipedia.org/wiki/JSON_Web_Token JWT] with Let&#039;s Encrypt to request a new certificate.&lt;br /&gt;
* Let&#039;s Encrypt triggers an HTTP challenge for every DNS entry where the token for the DNS entry is verified. (The Token is saved in the Let&#039;s Encrypt App Service)&lt;br /&gt;
** the HTTP challenge always works &#039;&#039;&#039;without&#039;&#039;&#039; HTTPS on Port 80 on a subpath of &#039;&#039;&#039;/.well-known/acme-challenge/&#039;&#039;&#039;, e.g. http://mydns.com/.well-known/acme-challenge/1290378712893z12983&lt;br /&gt;
* After successfull HTTP challenges for every DNS name, the new certificate is send back to the client.&lt;br /&gt;
* The certificate is installed X days before the old certificate expires, while X can be configured in the PBX Manager Plugin.&lt;br /&gt;
&lt;br /&gt;
=== Flow without Reverse Proxy ===&lt;br /&gt;
&lt;br /&gt;
[[Image:letsencrypt-flow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Flow with Reverse Proxy ===&lt;br /&gt;
[[Image:letsencrypt-flow-rp.png]]&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
=== ACMEv2 compliant certification service ===&lt;br /&gt;
&lt;br /&gt;
Our Connector for Let&#039;s Encrypt App Service uses the ACMEv2 protocol. So in general every ACMEv2 compliant service could be used.&amp;lt;br/&amp;gt;&lt;br /&gt;
Officially tested is Let&#039;s Encrypt itself with this URL: https://acme-v02.api.letsencrypt.org&lt;br /&gt;
&lt;br /&gt;
=== Gateways and App Platform ===&lt;br /&gt;
* Firmware from version 14r1 or later&lt;br /&gt;
* innovaphone App Platform with App Platform Manager version 14r1 or higher and image version 110036 or higher&lt;br /&gt;
* innovaphone App Connector for Let&#039;s Encrypt version 14r1 or higher&lt;br /&gt;
* working DNS configuration&lt;br /&gt;
&lt;br /&gt;
=== Reverse-Proxy ===&lt;br /&gt;
&lt;br /&gt;
* Let&#039;s encrypt will send the certificate challenge using HTTP on port 80.  On your WAN interface (that is, the interface your DNS name points to), port 80 must be available therefore. Traffic must be forwarded to either the device itself or to a reverse proxy that forwards the certificate challenge to the device. &lt;br /&gt;
* On the reverse proxy there must be a rule for the host that corresponds to the DNS name of your AP where the Let&#039;s Encrypt App runs on that forwards HTTP path &amp;lt;code&amp;gt;/.well-known/acme-challenge/&amp;lt;/code&amp;gt; to the Let&#039;s Encrypt App. Of course, an empty rule (such as the one that the reverse proxy PBX Manager plugin creates) will do.&lt;br /&gt;
* For 3rd-party devices behind the Reverse-Proxy which intend to obtain a certificate from Let&#039;s Encrypt (using their own client mechanism), a similar rule must be present that forwards the challenge to the 3rd-party device.&lt;br /&gt;
:: For innovaphone devices, such rules are not necessary (except for the AP as outlined above).&lt;br /&gt;
* The App Platform must be able to communicate with the Let&#039;s Encrypt URLs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;: the recommended steps for obtaining certificates are as follows:&lt;br /&gt;
* configure the rule that forwards the challenge for your AP DNS name to the AP (&#039;&#039;your-ap.example.com&#039;&#039;&amp;lt;code&amp;gt;/.well-known/acme-challenge/&amp;lt;/code&amp;gt;)&lt;br /&gt;
* configure the Connector for Let&#039;s Encrypt App on your AP&lt;br /&gt;
* configure the Let&#039;s Encrypt client on your AP&lt;br /&gt;
* configure rules for all 3rd party devices behind the RP that forward the challenge for the respective 3rd-party device&#039;s DNS names to the these devices (&#039;&#039;your-3rd-party-device.example.com&#039;&#039;&amp;lt;code&amp;gt;/.well-known/acme-challenge/&amp;lt;/code&amp;gt;). This step is optional&lt;br /&gt;
&lt;br /&gt;
==Security Consideration==&lt;br /&gt;
We do not recommend that a device can be reached directly from the Internet on port 80. Please use the reverse proxy variant described above.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
* You can configure up to &#039;&#039;&#039;100&#039;&#039;&#039; DNS entries for a single device. More DNS entries are not supported by Let&#039;s Encrypt.&amp;lt;br/&amp;gt;&lt;br /&gt;
* You cannot configure DNS entries with wildcards. Such wildcard entries require the so called DNS challenge mechanism which is not supported by our Connector for Let&#039;s Encrypt App Service.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Connector for Let&#039;s Encrypt PBX Manager Plugin ===&lt;br /&gt;
Configure the [[Reference14r1:Concept_App_Service_Let%27s_Encrypt#Let.27s_Encypt_Config | PBX Manager Plugin]] of the Connector for Let&#039;s Encrypt App Service.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone Gateways ===&lt;br /&gt;
Configure the [[Reference14r1:Services/Letsencrypt | Let&#039;s Encrypt service]] on every gateway which shall get a Let&#039;s Encrypt certificate.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone App Platform ===&lt;br /&gt;
Configure Let&#039;s Encrypt in the settings of the App Platform Manager on every App Platform which shall get a Let&#039;s Encrypt certificate.&lt;br /&gt;
&lt;br /&gt;
=== RP ===&lt;br /&gt;
If your gateways and/or App Platforms are behind an innovaphone reverse proxy, you must configure the [[Reference14r1:Services/Letsencrypt | Let&#039;s Encrypt service]] here too.&amp;lt;br/&amp;gt;&lt;br /&gt;
You must configure all DNS names which are used by the individual devices behind the RP.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
The RP will request a certificate with multiple SAN entries while every individual device will request an own certificate with a single SAN entry (or still multiple if a single device shall have multiple DNS entries).&lt;br /&gt;
&lt;br /&gt;
=== Devices certificate configuration ===&lt;br /&gt;
If you want to rollout the Let&#039;s Encrypt root certificates to your devices, configure the URL for Let&#039;s Encrypt root certificates in a [[{{NAMESPACE}}:Concept_App_Service_Devices#Certificates_configuration|certificates configuration]] (App Devices -&amp;gt; Domains -&amp;gt; your domain -&amp;gt; Device Configurations) which will then ensure that always the latest root certificates are available in the trust list of your devices.&amp;lt;br/&amp;gt;&lt;br /&gt;
You can find this URL in the [[Reference14r1:Apps/PbxManager/App_Connector_for_Let&#039;s_Encrypt | PBX Manager Plugin]].&lt;br /&gt;
&lt;br /&gt;
== Tracing and logging ==&lt;br /&gt;
=== Gateways ===&lt;br /&gt;
The following trace flags can be activated at [[{{NAMESPACE}}:Maintenance/Diagnostics/Tracing | Maintenance/Diagnostics/Tracing]].&lt;br /&gt;
&lt;br /&gt;
;Let&#039;s Encrypt&lt;br /&gt;
: communication between gateway and the Connector for Let&#039;s Encrypt App Service&lt;br /&gt;
: processing of incoming id_tokens&lt;br /&gt;
&lt;br /&gt;
;HTTP Client&lt;br /&gt;
: the HTTPS communication with the Connector for Let&#039;s Encrypt App Service&lt;br /&gt;
&lt;br /&gt;
=== App Platform ===&lt;br /&gt;
&lt;br /&gt;
Enable these trace flags for diagnostics:&lt;br /&gt;
&lt;br /&gt;
==== App Platform Manager ====&lt;br /&gt;
;App&lt;br /&gt;
: requests of new certificates&lt;br /&gt;
;AppWebsocket&lt;br /&gt;
: communication with the Connector for Let&#039;s Encrypt App Service&lt;br /&gt;
;Websocket Client&lt;br /&gt;
: communication with the Connector for Let&#039;s Encrypt App Service&lt;br /&gt;
&lt;br /&gt;
==== Connector for Let&#039;s Encrypt App Service ====&lt;br /&gt;
;App&lt;br /&gt;
: app logs&lt;br /&gt;
;HttpClient&lt;br /&gt;
: communication with Let&#039;s Encrypt itself&lt;br /&gt;
;AppWebsocket&lt;br /&gt;
: communication with the clients&lt;br /&gt;
&lt;br /&gt;
== Alarms and Events ==&lt;br /&gt;
* an event is generated for every failed certificate creation by the Connector for Let&#039;s Encrypt App Service&lt;br /&gt;
* an alarm is generated on the corresponding device as long as the certificate creation fails&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
=== Not working TLS connection between a reverse proxy/gateway and the app platform with the Connector for Let&#039;s Encrypt ===&lt;br /&gt;
If a gateway/reverse proxy cannot establish a TLS connection to the app platform where the Connector for Let&#039;s Encrypt is running, no new certificate can be created anymore.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
As a workaround, you can temporarily switch to a non TLS connection under Services -&amp;gt; Let&#039;s Encrypt &#039;&#039;&#039;Let&#039;s Encrypt App URL&#039;&#039;&#039; by using &#039;&#039;&#039;ws&#039;&#039;&#039; instead of &#039;&#039;&#039;wss&#039;&#039;&#039;.&amp;lt;br/&amp;gt;&lt;br /&gt;
If all your systems have a valid TLS certificate again, don&#039;t forget to switch back to &#039;&#039;&#039;wss&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
==Known Issue==&lt;br /&gt;
===Geoblocking can prevent confirmation===&lt;br /&gt;
To verify the correctness of DNS entries and HTTP Challenge, Let&#039;s Encrypt sends DNS/HTTP requests from multiple locations around the world. All of these requests must be successfully answered. If a request is not answered due to geoblocking, Let&#039;s Encrypt does not trust the issuer.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[Reference14r1:Services/Letsencrypt]]&lt;br /&gt;
* [[Reference14r1:Concept_App_Service_Connector_for_Let%27s_Encrypt]]&lt;br /&gt;
* [[Reference14r1:Apps/PbxManager/App_Connector_for_Let%27s_Encrypt]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78791</id>
		<title>Reference16r1:Certificate management</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78791"/>
		<updated>2026-01-27T14:29:28Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Appendix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies to== &lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* all innovaphone devices from 16r1&lt;br /&gt;
&amp;lt;!-- Keywords: certificate, certificates, sips, https, tls, security, devices, ecdsa, rsa, PEM, CA --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
=== The role of certificates in secure communication ===&lt;br /&gt;
Certificates contain a public key (typically an RSA or ECDSA key) and an identity (typically one or more DNS names). &lt;br /&gt;
They are used in TLS connections (HTTPS, SIPS, H323/TLS, etc.) to validate the identity of the remote endpoint using asymmetric cryptography. This process ensures that endpoints are connected to the intended party and not an impostor.&lt;br /&gt;
&lt;br /&gt;
The pasic principle:&lt;br /&gt;
;Handshake and signature: An endpoint sends its own certificate and creates a digital signature over the handshake data using its private key.&lt;br /&gt;
;Validation: The receiving endpoint validates both the certificate and the signature. It then compares the identity listed in the certificate with the expected identity of the remote party.&lt;br /&gt;
;Trust: To complete this validation, the receiver must know and trust either the certificate itself (self-signed) or, more commonly, the Certificate Authority (CA) that issued it.&lt;br /&gt;
&lt;br /&gt;
In standard TLS connections, the client validates the server&#039;s certificate. However, in specific applications (like H.323/TLS), the server may also validate the client&#039;s certificate. This is known as Client Authentication or Mutual TLS (mTLS).&lt;br /&gt;
&lt;br /&gt;
=== Security and performance considerations ===&lt;br /&gt;
The security of a certificate depends heavily on the key type and key size used. As computational power increases annually, key sizes must also grow to mitigate the risk of brute-force attacks. However, longer keys require more CPU cycles for encryption and decryption, leading to a noticeable performance impact.&lt;br /&gt;
&lt;br /&gt;
The primary challenge is finding the &amp;quot;sweet spot&amp;quot;: a key size that provides sufficient long-term security without causing unnecessary latency or high server load.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Security level !! RSA key size !! RSA performance !! ECC curve !! ECDSA performance !! Status&lt;br /&gt;
|-&lt;br /&gt;
| 80-bit || 1024-bit || Very fast || - || - || Deprecated&lt;br /&gt;
|-&lt;br /&gt;
| 112-bit || 2048-bit || Fast || - || - || Minimum&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;128-bit&#039;&#039;&#039; || &#039;&#039;&#039;3072-bit&#039;&#039;&#039; || &#039;&#039;&#039;Moderate&#039;&#039;&#039; || &#039;&#039;&#039;secp256r1&#039;&#039;&#039; || &#039;&#039;&#039;Fast&#039;&#039;&#039; || &#039;&#039;&#039;Current standard&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 192-bit || 7680-bit || Ultra slow|| secp384r1 || Moderate || Long term&lt;br /&gt;
|-&lt;br /&gt;
| 256-bit || 15360-bit || Ultra slow || secp521r1 || Moderate || Ultra high security&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compatibility considerations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal rollout strategy:&#039;&#039;&#039;&lt;br /&gt;
Support for ECDSA was introduced in &#039;&#039;&#039;version 16r1&#039;&#039;&#039;. Previous versions do not support this algorithm and will fail to establish secure connections if an ECDSA certificate is used. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Requirement:&#039;&#039;&#039; Update all devices to 16r1 or higher prior to moving to ECDSA certificates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interoperability with external systems:&#039;&#039;&#039; &lt;br /&gt;
On devices that interact with external installations — such as Reverse Proxies and Session Border Controllers (SBCs) — it is advisable to continue using RSA certificates until you are certain that external parties have also upgraded to versions supporting ECDSA.&lt;br /&gt;
&lt;br /&gt;
== Certificate Types ==&lt;br /&gt;
&lt;br /&gt;
=== Manufacturer certificate ===&lt;br /&gt;
Every innovaphone device is shipped with a unique, pre-installed certificate signed by the &#039;&#039;&#039;&amp;quot;innovaphone Device Certification Authority 2&amp;quot;&#039;&#039;&#039;. This certificate uses the hardware MAC address of the device as the Common Name (CN).&lt;br /&gt;
For non-hardware endpoints you can obtain a certificate signed by &#039;&#039;&#039;&amp;quot;innovaphone Unverified Device CA&amp;quot;&#039;&#039;&#039;, that contains the unverified MAC address. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Storage:&#039;&#039;&#039; The certificate and its associated private key are stored in a secure hardware area and cannot be modified or removed.&lt;br /&gt;
* &#039;&#039;&#039;Typical use cases:&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;Client authentication:&#039;&#039;&#039; Used to identify the device against innovaphone cloud services (e.g., Push Service).&lt;br /&gt;
** &#039;&#039;&#039;VoIP registration:&#039;&#039;&#039; Used for secure client authentication when registering endpoints against the PBX.&lt;br /&gt;
** &#039;&#039;&#039;System fallback:&#039;&#039;&#039; Acts as the default identity if no custom device certificate is present.&lt;br /&gt;
&lt;br /&gt;
=== Device certificate ===&lt;br /&gt;
For production environments, you can install a custom certificate signed by a publicly trusted CA (e.g., Let&#039;s Encrypt) or an internal Corporate PKI. To ensure modern browser and service compatibility, these certificates must include the device&#039;s FQDN in the &#039;&#039;&#039;Subject Alternative Name (SAN)&#039;&#039;&#039; field.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Typical use cases:&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;Server authentication:&#039;&#039;&#039; Provides a trusted identity for HTTPS access.&lt;br /&gt;
** &#039;&#039;&#039;Client authentication:&#039;&#039;&#039; Used for Client Authentication based on DNS names, such as for Federation, Shared Services, or other inter-customer communication.&lt;br /&gt;
&lt;br /&gt;
If no device certificate is installed, the device falls back to the manufacturer certificate. Because the manufacturer certificate contains a MAC address instead of a DNS name, it will trigger security warnings in browsers and may be rejected by external services requiring DNS-based validation.&lt;br /&gt;
&lt;br /&gt;
== Certificate rollout ==&lt;br /&gt;
This chapter explains how to deploy certificates and trust lists at scale using automatic tools. This ensures consistency and prevents outages due to expired certificates.&lt;br /&gt;
=== Trust lists ===&lt;br /&gt;
The list of trusted certificates can be synchronized on all devices using a &amp;quot;Certificates&amp;quot; configuration in the Devices App.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_App_Service_Devices#Certificates_configuration]] for details.&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; This is automatically configured when setting up new devices using Install. Individual changes can be done in the devices app.&lt;br /&gt;
&lt;br /&gt;
=== Device certificates ===&lt;br /&gt;
For certificates for individual devices, we recommend using an &#039;&#039;&#039;ACMEv2 provider&#039;&#039;&#039; (such as Let&#039;s Encrypt). The software can automatically obtain certificates from such a provider and renew them before they expire.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_Let%27s_Encrypt]] for detailed configuration steps.&lt;br /&gt;
&lt;br /&gt;
== Manual configuration ==&lt;br /&gt;
Certificates and trust lists can also be manually configured on individual devices. This is intended for small-scale testing or troubleshooting. &#039;&#039;&#039;We strongly recommend using automatic deployment for production environments&#039;&#039;&#039; to avoid manual tracking of expiration dates.&lt;br /&gt;
&lt;br /&gt;
Manual configuration in the firmware is performed via the [[{{NAMESPACE}}:General/Certificates | General / Certificates]] page of the Advanced UI.&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Certificate management]]&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Parameters ===&lt;br /&gt;
==== Certificate ====&lt;br /&gt;
* X.509 v3/v2&lt;br /&gt;
==== Key ====&lt;br /&gt;
* &#039;&#039;&#039;RSA&#039;&#039;&#039;&lt;br /&gt;
** 1024-bit (Deprecated)&lt;br /&gt;
** 2048-bit&lt;br /&gt;
** 3072-bit&lt;br /&gt;
** 4096-bit&lt;br /&gt;
* &#039;&#039;&#039;ECDSA&#039;&#039;&#039;&lt;br /&gt;
** secp256r1 (NIST P-256)&lt;br /&gt;
** secp384r1 (NIST P-384)&lt;br /&gt;
** secp521r1 (NIST P-521)&lt;br /&gt;
==== Signature ====&lt;br /&gt;
* ECDSA&lt;br /&gt;
* RSA&lt;br /&gt;
* RSASSA-PSS with mgf1&lt;br /&gt;
==== Hash ====&lt;br /&gt;
* SHA-256&lt;br /&gt;
* SHA-384&lt;br /&gt;
* SHA-512&lt;br /&gt;
==== File types ====&lt;br /&gt;
* PEM&lt;br /&gt;
* DER&lt;br /&gt;
* PKCS#12&lt;br /&gt;
&lt;br /&gt;
=== Change history ===&lt;br /&gt;
For details on supported algorithms in different software versions please seee [[Howto:Security_works_with_innovaphone]].&lt;br /&gt;
&lt;br /&gt;
=== Hints on constructing PEM files ===&lt;br /&gt;
&lt;br /&gt;
If you want to create a PEM file containing the private key and the certificate chain for a box, make sure the certificate chain is ordered from the certificate of the endpoint up to the root CA certificate. Each certificate signed by the next one.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;Device private key&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 -----BEGIN RSA PRIVATE KEY-----&lt;br /&gt;
 MIICXAIBAAKBgQDecOKfxrVdHNZRl8RnpNItpmdSuc+WKAS1UZHbtdH5dUJ7OzG3&lt;br /&gt;
 ZtW684dkm+mbLP00uY4Qiu25dNg0pKp7svihPU8AvKjoyIS52R2Mtt+/hTpjDfgj&lt;br /&gt;
 mGFyhMMmziCLaC+oKL4W88sivv7oOjUlBmGHc0JarKoN1q3Yxgcfg4Zk8QIDAQAB&lt;br /&gt;
 UcVghAbSXJ5G3A3v9POs8UthRMxPrnN2c7DadjZp7Qg=&lt;br /&gt;
 -----END RSA PRIVATE KEY-----&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;Device certificate&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIICMTCCAZqgAwIBAgIBATANBgkqhkiG9w0BAQUFADAVMRMwEQYDVQQDDApNeSBS&lt;br /&gt;
 b290IENBMB4XDTA4MDgxNDA5MDkzM1oXDTExMDgxNDA5MDkzM1owGTEXMBUGA1UE&lt;br /&gt;
 7HNL76EuQrMmshxYxq0Ay/mlkVc0v7Fp1NzkYn0I2UHpwFZ+zA==&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;Intermediate CA certificate&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIICDDCCAXWgAwIBAgIBADANBgkqhkiG9w0BAQUFADAVMRMwEQYDVQQDDApNeSBS&lt;br /&gt;
 3FSCPvWfh5nk4e8wIAYDVR0OAQEABBYEFE5lzuLAhex3qtxUgj71n4eZ5OHvMA0G&lt;br /&gt;
 CSqGSIb3DQEBBQUAA4GBAAepePqAM59TSoZvSPM/XUn3WKbeOa++6842+4Vp9B1c&lt;br /&gt;
 NmI952d/j/+VsuUXDzPff92IsumPBcch87pksp2GkDrnBvd8WxRsm/n6JF2XS2Ey&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;Root CA certificate&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIICDDCCAXWgAwIBAgIBtpmdSuc+WKAS1UZHbtUFADAVEpG4C3G4CQYDVQQDDApe&lt;br /&gt;
 cmKMZ+WFAkEA5e4thgPIFPjLtVL2EK7WxMi2msigZ0HeoBfAJHu5K/H01BqUGdwK&lt;br /&gt;
 hh+ksaW+DStVNG21iuZSQuGwVv56oHj3fQJAdHx+06d7p3G4CA2fdfg24iopluMA&lt;br /&gt;
 oQN9N7Dfw4RyD+ypsMYz8at9RTEqG8Lc0hujGLgtvBpHUp6wxdUuRw4DJQJAGqn0&lt;br /&gt;
 PYZSvZvcg7qLLoQYA9oC0xBRCahp2MboUVLHtoDok3BBnH4X+lXRE4jU8VIFH39Z&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
Keys in the PKCS#8 format should look like follows.&lt;br /&gt;
&lt;br /&gt;
 -----BEGIN PRIVATE KEY-----&lt;br /&gt;
 MIICXAIBAAKBgQDecOKfxrVdHNZRl8RnpNItpmdSuc+WKAS1UZHbtdH5dUJ7OzG3&lt;br /&gt;
 ZtW684dkm+mbLP00uY4Qiu25dNg0pKp7svihPU8AvKjoyIS52R2Mtt+/hTpjDfgj&lt;br /&gt;
 mGFyhMMmziCLaC+oKL4W88sivv7oOjUlBmGHc0JarKoN1q3Yxgcfg4Zk8QIDAQAB&lt;br /&gt;
 UcVghAbSXJ5G3A3v9POs8UthRMxPrnN2c7DadjZp7Qg=&lt;br /&gt;
 -----END PRIVATE KEY-----&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78790</id>
		<title>Reference16r1:Certificate management</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78790"/>
		<updated>2026-01-27T14:10:38Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* General information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies to== &lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* all innovaphone devices from 16r1&lt;br /&gt;
&amp;lt;!-- Keywords: certificate, certificates, sips, https, tls, security, devices, ecdsa, rsa, PEM, CA --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
=== The role of certificates in secure communication ===&lt;br /&gt;
Certificates contain a public key (typically an RSA or ECDSA key) and an identity (typically one or more DNS names). &lt;br /&gt;
They are used in TLS connections (HTTPS, SIPS, H323/TLS, etc.) to validate the identity of the remote endpoint using asymmetric cryptography. This process ensures that endpoints are connected to the intended party and not an impostor.&lt;br /&gt;
&lt;br /&gt;
The pasic principle:&lt;br /&gt;
;Handshake and signature: An endpoint sends its own certificate and creates a digital signature over the handshake data using its private key.&lt;br /&gt;
;Validation: The receiving endpoint validates both the certificate and the signature. It then compares the identity listed in the certificate with the expected identity of the remote party.&lt;br /&gt;
;Trust: To complete this validation, the receiver must know and trust either the certificate itself (self-signed) or, more commonly, the Certificate Authority (CA) that issued it.&lt;br /&gt;
&lt;br /&gt;
In standard TLS connections, the client validates the server&#039;s certificate. However, in specific applications (like H.323/TLS), the server may also validate the client&#039;s certificate. This is known as Client Authentication or Mutual TLS (mTLS).&lt;br /&gt;
&lt;br /&gt;
=== Security and performance considerations ===&lt;br /&gt;
The security of a certificate depends heavily on the key type and key size used. As computational power increases annually, key sizes must also grow to mitigate the risk of brute-force attacks. However, longer keys require more CPU cycles for encryption and decryption, leading to a noticeable performance impact.&lt;br /&gt;
&lt;br /&gt;
The primary challenge is finding the &amp;quot;sweet spot&amp;quot;: a key size that provides sufficient long-term security without causing unnecessary latency or high server load.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Security level !! RSA key size !! RSA performance !! ECC curve !! ECDSA performance !! Status&lt;br /&gt;
|-&lt;br /&gt;
| 80-bit || 1024-bit || Very fast || - || - || Deprecated&lt;br /&gt;
|-&lt;br /&gt;
| 112-bit || 2048-bit || Fast || - || - || Minimum&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;128-bit&#039;&#039;&#039; || &#039;&#039;&#039;3072-bit&#039;&#039;&#039; || &#039;&#039;&#039;Moderate&#039;&#039;&#039; || &#039;&#039;&#039;secp256r1&#039;&#039;&#039; || &#039;&#039;&#039;Fast&#039;&#039;&#039; || &#039;&#039;&#039;Current standard&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 192-bit || 7680-bit || Ultra slow|| secp384r1 || Moderate || Long term&lt;br /&gt;
|-&lt;br /&gt;
| 256-bit || 15360-bit || Ultra slow || secp521r1 || Moderate || Ultra high security&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compatibility considerations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal rollout strategy:&#039;&#039;&#039;&lt;br /&gt;
Support for ECDSA was introduced in &#039;&#039;&#039;version 16r1&#039;&#039;&#039;. Previous versions do not support this algorithm and will fail to establish secure connections if an ECDSA certificate is used. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Requirement:&#039;&#039;&#039; Update all devices to 16r1 or higher prior to moving to ECDSA certificates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interoperability with external systems:&#039;&#039;&#039; &lt;br /&gt;
On devices that interact with external installations — such as Reverse Proxies and Session Border Controllers (SBCs) — it is advisable to continue using RSA certificates until you are certain that external parties have also upgraded to versions supporting ECDSA.&lt;br /&gt;
&lt;br /&gt;
== Certificate Types ==&lt;br /&gt;
&lt;br /&gt;
=== Manufacturer certificate ===&lt;br /&gt;
Every innovaphone device is shipped with a unique, pre-installed certificate signed by the &#039;&#039;&#039;&amp;quot;innovaphone Device Certification Authority 2&amp;quot;&#039;&#039;&#039;. This certificate uses the hardware MAC address of the device as the Common Name (CN).&lt;br /&gt;
For non-hardware endpoints you can obtain a certificate signed by &#039;&#039;&#039;&amp;quot;innovaphone Unverified Device CA&amp;quot;&#039;&#039;&#039;, that contains the unverified MAC address. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Storage:&#039;&#039;&#039; The certificate and its associated private key are stored in a secure hardware area and cannot be modified or removed.&lt;br /&gt;
* &#039;&#039;&#039;Typical use cases:&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;Client authentication:&#039;&#039;&#039; Used to identify the device against innovaphone cloud services (e.g., Push Service).&lt;br /&gt;
** &#039;&#039;&#039;VoIP registration:&#039;&#039;&#039; Used for secure client authentication when registering endpoints against the PBX.&lt;br /&gt;
** &#039;&#039;&#039;System fallback:&#039;&#039;&#039; Acts as the default identity if no custom device certificate is present.&lt;br /&gt;
&lt;br /&gt;
=== Device certificate ===&lt;br /&gt;
For production environments, you can install a custom certificate signed by a publicly trusted CA (e.g., Let&#039;s Encrypt) or an internal Corporate PKI. To ensure modern browser and service compatibility, these certificates must include the device&#039;s FQDN in the &#039;&#039;&#039;Subject Alternative Name (SAN)&#039;&#039;&#039; field.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Typical use cases:&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;Server authentication:&#039;&#039;&#039; Provides a trusted identity for HTTPS access.&lt;br /&gt;
** &#039;&#039;&#039;Client authentication:&#039;&#039;&#039; Used for Client Authentication based on DNS names, such as for Federation, Shared Services, or other inter-customer communication.&lt;br /&gt;
&lt;br /&gt;
If no device certificate is installed, the device falls back to the manufacturer certificate. Because the manufacturer certificate contains a MAC address instead of a DNS name, it will trigger security warnings in browsers and may be rejected by external services requiring DNS-based validation.&lt;br /&gt;
&lt;br /&gt;
== Certificate rollout ==&lt;br /&gt;
This chapter explains how to deploy certificates and trust lists at scale using automatic tools. This ensures consistency and prevents outages due to expired certificates.&lt;br /&gt;
=== Trust lists ===&lt;br /&gt;
The list of trusted certificates can be synchronized on all devices using a &amp;quot;Certificates&amp;quot; configuration in the Devices App.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_App_Service_Devices#Certificates_configuration]] for details.&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; This is automatically configured when setting up new devices using Install. Individual changes can be done in the devices app.&lt;br /&gt;
&lt;br /&gt;
=== Device certificates ===&lt;br /&gt;
For certificates for individual devices, we recommend using an &#039;&#039;&#039;ACMEv2 provider&#039;&#039;&#039; (such as Let&#039;s Encrypt). The software can automatically obtain certificates from such a provider and renew them before they expire.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_Let%27s_Encrypt]] for detailed configuration steps.&lt;br /&gt;
&lt;br /&gt;
== Manual configuration ==&lt;br /&gt;
Certificates and trust lists can also be manually configured on individual devices. This is intended for small-scale testing or troubleshooting. &#039;&#039;&#039;We strongly recommend using automatic deployment for production environments&#039;&#039;&#039; to avoid manual tracking of expiration dates.&lt;br /&gt;
&lt;br /&gt;
Manual configuration in the firmware is performed via the [[{{NAMESPACE}}:General/Certificates | General / Certificates]] page of the Advanced UI.&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Certificate management]]&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Parameters ===&lt;br /&gt;
==== Certificate ====&lt;br /&gt;
* X.509 v3/v2&lt;br /&gt;
==== Key ====&lt;br /&gt;
* &#039;&#039;&#039;RSA&#039;&#039;&#039;&lt;br /&gt;
** 1024-bit (Deprecated)&lt;br /&gt;
** 2048-bit&lt;br /&gt;
** 3072-bit&lt;br /&gt;
** 4096-bit&lt;br /&gt;
* &#039;&#039;&#039;ECDSA&#039;&#039;&#039;&lt;br /&gt;
** secp256r1 (NIST P-256)&lt;br /&gt;
** secp384r1 (NIST P-384)&lt;br /&gt;
** secp521r1 (NIST P-521)&lt;br /&gt;
==== Signature ====&lt;br /&gt;
* ECDSA&lt;br /&gt;
* RSA&lt;br /&gt;
* RSASSA-PSS with mgf1&lt;br /&gt;
==== Hash ====&lt;br /&gt;
* SHA-256&lt;br /&gt;
* SHA-384&lt;br /&gt;
* SHA-512&lt;br /&gt;
==== File types ====&lt;br /&gt;
* PEM&lt;br /&gt;
* DER&lt;br /&gt;
* PKCS#12&lt;br /&gt;
&lt;br /&gt;
=== Change history ===&lt;br /&gt;
For details on supported algorithms in different software versions please seee [[Howto:Security_works_with_innovaphone]].&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78789</id>
		<title>Reference16r1:Certificate management</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78789"/>
		<updated>2026-01-27T13:54:10Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Appendix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies to== &lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* all innovaphone devices from 16r1&lt;br /&gt;
&amp;lt;!-- Keywords: certificate, certificates, sips, https, tls, security, devices, ecdsa, rsa, PEM, CA --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
=== The role of certificates in secure communication ===&lt;br /&gt;
Certificates contain a public key (typically an RSA or ECDSA key) and an identity (typically one or more DNS names). &lt;br /&gt;
They are used in TLS connections (HTTPS, SIPS, H323/TLS, etc.) to validate the identity of the remote endpoint using asymmetric cryptography. This process ensures that endpoints are connected to the intended party and not an impostor.&lt;br /&gt;
&lt;br /&gt;
The pasic principle:&lt;br /&gt;
;Handshake and signature: An endpoint sends its own certificate and creates a digital signature over the handshake data using its private key.&lt;br /&gt;
;Validation: The receiving endpoint validates both the certificate and the signature. It then compares the identity listed in the certificate with the expected identity of the remote party.&lt;br /&gt;
;Trust: To complete this validation, the receiver must know and trust either the certificate itself (self-signed) or, more commonly, the Certificate Authority (CA) that issued it.&lt;br /&gt;
&lt;br /&gt;
In standard TLS connections, the client validates the server&#039;s certificate. However, in specific applications (like H.323/TLS), the server may also validate the client&#039;s certificate. This is known as Client Authentication or Mutual TLS (mTLS).&lt;br /&gt;
&lt;br /&gt;
=== Security and performance considerations ===&lt;br /&gt;
The security of a certificate depends heavily on the key type and key size used. As computational power increases annually, key sizes must also grow to mitigate the risk of brute-force attacks. However, longer keys require more CPU cycles for encryption and decryption, leading to a noticeable performance impact.&lt;br /&gt;
&lt;br /&gt;
The primary challenge is finding the &amp;quot;sweet spot&amp;quot;: a key size that provides sufficient long-term security without causing unnecessary latency or high server load.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Security level !! RSA key size !! RSA performance !! ECC curve !! ECDSA performance !! Status&lt;br /&gt;
|-&lt;br /&gt;
| 80-bit || 1024-bit || Very fast || - || - || Deprecated&lt;br /&gt;
|-&lt;br /&gt;
| 112-bit || 2048-bit || Fast || - || - || Minimum&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;128-bit&#039;&#039;&#039; || &#039;&#039;&#039;3072-bit&#039;&#039;&#039; || &#039;&#039;&#039;Moderate&#039;&#039;&#039; || &#039;&#039;&#039;secp256r1&#039;&#039;&#039; || &#039;&#039;&#039;Fast&#039;&#039;&#039; || &#039;&#039;&#039;Current standard&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 192-bit || 7680-bit || Ultra slow|| secp384r1 || Moderate || Long term&lt;br /&gt;
|-&lt;br /&gt;
| 256-bit || 15360-bit || Ultra slow || secp521r1 || Moderate || Ultra high security&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compatibility considerations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal rollout strategy:&#039;&#039;&#039;&lt;br /&gt;
Support for ECDSA was introduced in &#039;&#039;&#039;version 16r1&#039;&#039;&#039;. Previous versions do not support this algorithm and will fail to establish secure connections if an ECDSA certificate is used. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Requirement:&#039;&#039;&#039; Update all devices to 16r1 or higher prior to moving to ECDSA certificates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interoperability with external systems:&#039;&#039;&#039; &lt;br /&gt;
On devices that interact with external installations — such as Reverse Proxies and Session Border Controllers (SBCs) — it is advisable to continue using RSA certificates until you are certain that external parties have also upgraded to versions supporting ECDSA.&lt;br /&gt;
&lt;br /&gt;
== Certificate rollout ==&lt;br /&gt;
This chapter explains how to deploy certificates and trust lists at scale using automatic tools. This ensures consistency and prevents outages due to expired certificates.&lt;br /&gt;
=== Trust lists ===&lt;br /&gt;
The list of trusted certificates can be synchronized on all devices using a &amp;quot;Certificates&amp;quot; configuration in the Devices App.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_App_Service_Devices#Certificates_configuration]] for details.&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; This is automatically configured when setting up new devices using Install. Individual changes can be done in the devices app.&lt;br /&gt;
&lt;br /&gt;
=== Device certificates ===&lt;br /&gt;
For certificates for individual devices, we recommend using an &#039;&#039;&#039;ACMEv2 provider&#039;&#039;&#039; (such as Let&#039;s Encrypt). The software can automatically obtain certificates from such a provider and renew them before they expire.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_Let%27s_Encrypt]] for detailed configuration steps.&lt;br /&gt;
&lt;br /&gt;
== Manual configuration ==&lt;br /&gt;
Certificates and trust lists can also be manually configured on individual devices. This is intended for small-scale testing or troubleshooting. &#039;&#039;&#039;We strongly recommend using automatic deployment for production environments&#039;&#039;&#039; to avoid manual tracking of expiration dates.&lt;br /&gt;
&lt;br /&gt;
Manual configuration in the firmware is performed via the [[{{NAMESPACE}}:General/Certificates | General / Certificates]] page of the Advanced UI.&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Certificate management]]&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Parameters ===&lt;br /&gt;
==== Certificate ====&lt;br /&gt;
* X.509 v3/v2&lt;br /&gt;
==== Key ====&lt;br /&gt;
* &#039;&#039;&#039;RSA&#039;&#039;&#039;&lt;br /&gt;
** 1024-bit (Deprecated)&lt;br /&gt;
** 2048-bit&lt;br /&gt;
** 3072-bit&lt;br /&gt;
** 4096-bit&lt;br /&gt;
* &#039;&#039;&#039;ECDSA&#039;&#039;&#039;&lt;br /&gt;
** secp256r1 (NIST P-256)&lt;br /&gt;
** secp384r1 (NIST P-384)&lt;br /&gt;
** secp521r1 (NIST P-521)&lt;br /&gt;
==== Signature ====&lt;br /&gt;
* ECDSA&lt;br /&gt;
* RSA&lt;br /&gt;
* RSASSA-PSS with mgf1&lt;br /&gt;
==== Hash ====&lt;br /&gt;
* SHA-256&lt;br /&gt;
* SHA-384&lt;br /&gt;
* SHA-512&lt;br /&gt;
==== File types ====&lt;br /&gt;
* PEM&lt;br /&gt;
* DER&lt;br /&gt;
* PKCS#12&lt;br /&gt;
&lt;br /&gt;
=== Change history ===&lt;br /&gt;
For details on supported algorithms in different software versions please seee [[Howto:Security_works_with_innovaphone]].&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78788</id>
		<title>Reference16r1:Certificate management</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78788"/>
		<updated>2026-01-27T13:51:49Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Technical Specifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies to== &lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* all innovaphone devices from 16r1&lt;br /&gt;
&amp;lt;!-- Keywords: certificate, certificates, sips, https, tls, security, devices, ecdsa, rsa, PEM, CA --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
=== The role of certificates in secure communication ===&lt;br /&gt;
Certificates contain a public key (typically an RSA or ECDSA key) and an identity (typically one or more DNS names). &lt;br /&gt;
They are used in TLS connections (HTTPS, SIPS, H323/TLS, etc.) to validate the identity of the remote endpoint using asymmetric cryptography. This process ensures that endpoints are connected to the intended party and not an impostor.&lt;br /&gt;
&lt;br /&gt;
The pasic principle:&lt;br /&gt;
;Handshake and signature: An endpoint sends its own certificate and creates a digital signature over the handshake data using its private key.&lt;br /&gt;
;Validation: The receiving endpoint validates both the certificate and the signature. It then compares the identity listed in the certificate with the expected identity of the remote party.&lt;br /&gt;
;Trust: To complete this validation, the receiver must know and trust either the certificate itself (self-signed) or, more commonly, the Certificate Authority (CA) that issued it.&lt;br /&gt;
&lt;br /&gt;
In standard TLS connections, the client validates the server&#039;s certificate. However, in specific applications (like H.323/TLS), the server may also validate the client&#039;s certificate. This is known as Client Authentication or Mutual TLS (mTLS).&lt;br /&gt;
&lt;br /&gt;
=== Security and performance considerations ===&lt;br /&gt;
The security of a certificate depends heavily on the key type and key size used. As computational power increases annually, key sizes must also grow to mitigate the risk of brute-force attacks. However, longer keys require more CPU cycles for encryption and decryption, leading to a noticeable performance impact.&lt;br /&gt;
&lt;br /&gt;
The primary challenge is finding the &amp;quot;sweet spot&amp;quot;: a key size that provides sufficient long-term security without causing unnecessary latency or high server load.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Security level !! RSA key size !! RSA performance !! ECC curve !! ECDSA performance !! Status&lt;br /&gt;
|-&lt;br /&gt;
| 80-bit || 1024-bit || Very fast || - || - || Deprecated&lt;br /&gt;
|-&lt;br /&gt;
| 112-bit || 2048-bit || Fast || - || - || Minimum&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;128-bit&#039;&#039;&#039; || &#039;&#039;&#039;3072-bit&#039;&#039;&#039; || &#039;&#039;&#039;Moderate&#039;&#039;&#039; || &#039;&#039;&#039;secp256r1&#039;&#039;&#039; || &#039;&#039;&#039;Fast&#039;&#039;&#039; || &#039;&#039;&#039;Current standard&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 192-bit || 7680-bit || Ultra slow|| secp384r1 || Moderate || Long term&lt;br /&gt;
|-&lt;br /&gt;
| 256-bit || 15360-bit || Ultra slow || secp521r1 || Moderate || Ultra high security&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compatibility considerations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal rollout strategy:&#039;&#039;&#039;&lt;br /&gt;
Support for ECDSA was introduced in &#039;&#039;&#039;version 16r1&#039;&#039;&#039;. Previous versions do not support this algorithm and will fail to establish secure connections if an ECDSA certificate is used. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Requirement:&#039;&#039;&#039; Update all devices to 16r1 or higher prior to moving to ECDSA certificates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interoperability with external systems:&#039;&#039;&#039; &lt;br /&gt;
On devices that interact with external installations — such as Reverse Proxies and Session Border Controllers (SBCs) — it is advisable to continue using RSA certificates until you are certain that external parties have also upgraded to versions supporting ECDSA.&lt;br /&gt;
&lt;br /&gt;
== Certificate rollout ==&lt;br /&gt;
This chapter explains how to deploy certificates and trust lists at scale using automatic tools. This ensures consistency and prevents outages due to expired certificates.&lt;br /&gt;
=== Trust lists ===&lt;br /&gt;
The list of trusted certificates can be synchronized on all devices using a &amp;quot;Certificates&amp;quot; configuration in the Devices App.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_App_Service_Devices#Certificates_configuration]] for details.&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; This is automatically configured when setting up new devices using Install. Individual changes can be done in the devices app.&lt;br /&gt;
&lt;br /&gt;
=== Device certificates ===&lt;br /&gt;
For certificates for individual devices, we recommend using an &#039;&#039;&#039;ACMEv2 provider&#039;&#039;&#039; (such as Let&#039;s Encrypt). The software can automatically obtain certificates from such a provider and renew them before they expire.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_Let%27s_Encrypt]] for detailed configuration steps.&lt;br /&gt;
&lt;br /&gt;
== Manual configuration ==&lt;br /&gt;
Certificates and trust lists can also be manually configured on individual devices. This is intended for small-scale testing or troubleshooting. &#039;&#039;&#039;We strongly recommend using automatic deployment for production environments&#039;&#039;&#039; to avoid manual tracking of expiration dates.&lt;br /&gt;
&lt;br /&gt;
Manual configuration in the firmware is performed via the [[{{NAMESPACE}}:General/Certificates | General / Certificates]] page of the Advanced UI.&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Certificate management]]&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Parameters ===&lt;br /&gt;
==== Certificate ====&lt;br /&gt;
* X.509 v3/v2&lt;br /&gt;
==== Key ====&lt;br /&gt;
* &#039;&#039;&#039;RSA&#039;&#039;&#039;&lt;br /&gt;
** 1024-bit (Deprecated)&lt;br /&gt;
** 2048-bit&lt;br /&gt;
** 3072-bit&lt;br /&gt;
** 4096-bit&lt;br /&gt;
* &#039;&#039;&#039;ECDSA&#039;&#039;&#039;&lt;br /&gt;
** secp256r1 (NIST P-256)&lt;br /&gt;
** secp384r1 (NIST P-384)&lt;br /&gt;
** secp521r1 (NIST P-521)&lt;br /&gt;
==== Signature ====&lt;br /&gt;
* ECDSA&lt;br /&gt;
* RSA&lt;br /&gt;
* RSASSA-PSS&lt;br /&gt;
==== Hash ====&lt;br /&gt;
* SHA-256&lt;br /&gt;
* SHA-384&lt;br /&gt;
* SHA-512&lt;br /&gt;
==== File types ====&lt;br /&gt;
* PEM&lt;br /&gt;
* DER&lt;br /&gt;
* PKCS#12&lt;br /&gt;
&lt;br /&gt;
=== Change history ===&lt;br /&gt;
For details on supported algorithms in different software versions please seee [[Howto:Security_works_with_innovaphone]].&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78787</id>
		<title>Reference16r1:Certificate management</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78787"/>
		<updated>2026-01-27T13:49:19Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Signature */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies to== &lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* all innovaphone devices from 16r1&lt;br /&gt;
&amp;lt;!-- Keywords: certificate, certificates, sips, https, tls, security, devices, ecdsa, rsa, PEM, CA --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
=== The role of certificates in secure communication ===&lt;br /&gt;
Certificates contain a public key (typically an RSA or ECDSA key) and an identity (typically one or more DNS names). &lt;br /&gt;
They are used in TLS connections (HTTPS, SIPS, H323/TLS, etc.) to validate the identity of the remote endpoint using asymmetric cryptography. This process ensures that endpoints are connected to the intended party and not an impostor.&lt;br /&gt;
&lt;br /&gt;
The pasic principle:&lt;br /&gt;
;Handshake and signature: An endpoint sends its own certificate and creates a digital signature over the handshake data using its private key.&lt;br /&gt;
;Validation: The receiving endpoint validates both the certificate and the signature. It then compares the identity listed in the certificate with the expected identity of the remote party.&lt;br /&gt;
;Trust: To complete this validation, the receiver must know and trust either the certificate itself (self-signed) or, more commonly, the Certificate Authority (CA) that issued it.&lt;br /&gt;
&lt;br /&gt;
In standard TLS connections, the client validates the server&#039;s certificate. However, in specific applications (like H.323/TLS), the server may also validate the client&#039;s certificate. This is known as Client Authentication or Mutual TLS (mTLS).&lt;br /&gt;
&lt;br /&gt;
=== Security and performance considerations ===&lt;br /&gt;
The security of a certificate depends heavily on the key type and key size used. As computational power increases annually, key sizes must also grow to mitigate the risk of brute-force attacks. However, longer keys require more CPU cycles for encryption and decryption, leading to a noticeable performance impact.&lt;br /&gt;
&lt;br /&gt;
The primary challenge is finding the &amp;quot;sweet spot&amp;quot;: a key size that provides sufficient long-term security without causing unnecessary latency or high server load.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Security level !! RSA key size !! RSA performance !! ECC curve !! ECDSA performance !! Status&lt;br /&gt;
|-&lt;br /&gt;
| 80-bit || 1024-bit || Very fast || - || - || Deprecated&lt;br /&gt;
|-&lt;br /&gt;
| 112-bit || 2048-bit || Fast || - || - || Minimum&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;128-bit&#039;&#039;&#039; || &#039;&#039;&#039;3072-bit&#039;&#039;&#039; || &#039;&#039;&#039;Moderate&#039;&#039;&#039; || &#039;&#039;&#039;secp256r1&#039;&#039;&#039; || &#039;&#039;&#039;Fast&#039;&#039;&#039; || &#039;&#039;&#039;Current standard&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 192-bit || 7680-bit || Ultra slow|| secp384r1 || Moderate || Long term&lt;br /&gt;
|-&lt;br /&gt;
| 256-bit || 15360-bit || Ultra slow || secp521r1 || Moderate || Ultra high security&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compatibility considerations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal rollout strategy:&#039;&#039;&#039;&lt;br /&gt;
Support for ECDSA was introduced in &#039;&#039;&#039;version 16r1&#039;&#039;&#039;. Previous versions do not support this algorithm and will fail to establish secure connections if an ECDSA certificate is used. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Requirement:&#039;&#039;&#039; Update all devices to 16r1 or higher prior to moving to ECDSA certificates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interoperability with external systems:&#039;&#039;&#039; &lt;br /&gt;
On devices that interact with external installations — such as Reverse Proxies and Session Border Controllers (SBCs) — it is advisable to continue using RSA certificates until you are certain that external parties have also upgraded to versions supporting ECDSA.&lt;br /&gt;
&lt;br /&gt;
== Certificate rollout ==&lt;br /&gt;
This chapter explains how to deploy certificates and trust lists at scale using automatic tools. This ensures consistency and prevents outages due to expired certificates.&lt;br /&gt;
=== Trust lists ===&lt;br /&gt;
The list of trusted certificates can be synchronized on all devices using a &amp;quot;Certificates&amp;quot; configuration in the Devices App.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_App_Service_Devices#Certificates_configuration]] for details.&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; This is automatically configured when setting up new devices using Install. Individual changes can be done in the devices app.&lt;br /&gt;
&lt;br /&gt;
=== Device certificates ===&lt;br /&gt;
For certificates for individual devices, we recommend using an &#039;&#039;&#039;ACMEv2 provider&#039;&#039;&#039; (such as Let&#039;s Encrypt). The software can automatically obtain certificates from such a provider and renew them before they expire.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_Let%27s_Encrypt]] for detailed configuration steps.&lt;br /&gt;
&lt;br /&gt;
== Manual configuration ==&lt;br /&gt;
Certificates and trust lists can also be manually configured on individual devices. This is intended for small-scale testing or troubleshooting. &#039;&#039;&#039;We strongly recommend using automatic deployment for production environments&#039;&#039;&#039; to avoid manual tracking of expiration dates.&lt;br /&gt;
&lt;br /&gt;
Manual configuration in the firmware is performed via the [[{{NAMESPACE}}:General/Certificates | General / Certificates]] page of the Advanced UI.&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Certificate management]]&lt;br /&gt;
== Technical Specifications ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Parameters ===&lt;br /&gt;
&lt;br /&gt;
==== Certificate ====&lt;br /&gt;
* X.509 v3/v2&lt;br /&gt;
&lt;br /&gt;
==== Key ====&lt;br /&gt;
* &#039;&#039;&#039;RSA&#039;&#039;&#039;&lt;br /&gt;
** 1024-bit (Deprecated)&lt;br /&gt;
** 2048-bit&lt;br /&gt;
** 3072-bit&lt;br /&gt;
** 4096-bit&lt;br /&gt;
* &#039;&#039;&#039;ECDSA&#039;&#039;&#039;&lt;br /&gt;
** secp256r1 (NIST P-256)&lt;br /&gt;
** secp384r1 (NIST P-384)&lt;br /&gt;
** secp521r1 (NIST P-521)&lt;br /&gt;
&lt;br /&gt;
==== Signature ====&lt;br /&gt;
* ECDSA&lt;br /&gt;
* RSA&lt;br /&gt;
* RSASSA-PSS&lt;br /&gt;
&lt;br /&gt;
==== Hash ====&lt;br /&gt;
* SHA-256&lt;br /&gt;
* SHA-384&lt;br /&gt;
* SHA-512&lt;br /&gt;
&lt;br /&gt;
==== File types ====&lt;br /&gt;
* PEM&lt;br /&gt;
* DER&lt;br /&gt;
* PKCS#12&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78786</id>
		<title>Reference16r1:Certificate management</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78786"/>
		<updated>2026-01-27T13:37:40Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Certificate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies to== &lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* all innovaphone devices from 16r1&lt;br /&gt;
&amp;lt;!-- Keywords: certificate, certificates, sips, https, tls, security, devices, ecdsa, rsa, PEM, CA --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
=== The role of certificates in secure communication ===&lt;br /&gt;
Certificates contain a public key (typically an RSA or ECDSA key) and an identity (typically one or more DNS names). &lt;br /&gt;
They are used in TLS connections (HTTPS, SIPS, H323/TLS, etc.) to validate the identity of the remote endpoint using asymmetric cryptography. This process ensures that endpoints are connected to the intended party and not an impostor.&lt;br /&gt;
&lt;br /&gt;
The pasic principle:&lt;br /&gt;
;Handshake and signature: An endpoint sends its own certificate and creates a digital signature over the handshake data using its private key.&lt;br /&gt;
;Validation: The receiving endpoint validates both the certificate and the signature. It then compares the identity listed in the certificate with the expected identity of the remote party.&lt;br /&gt;
;Trust: To complete this validation, the receiver must know and trust either the certificate itself (self-signed) or, more commonly, the Certificate Authority (CA) that issued it.&lt;br /&gt;
&lt;br /&gt;
In standard TLS connections, the client validates the server&#039;s certificate. However, in specific applications (like H.323/TLS), the server may also validate the client&#039;s certificate. This is known as Client Authentication or Mutual TLS (mTLS).&lt;br /&gt;
&lt;br /&gt;
=== Security and performance considerations ===&lt;br /&gt;
The security of a certificate depends heavily on the key type and key size used. As computational power increases annually, key sizes must also grow to mitigate the risk of brute-force attacks. However, longer keys require more CPU cycles for encryption and decryption, leading to a noticeable performance impact.&lt;br /&gt;
&lt;br /&gt;
The primary challenge is finding the &amp;quot;sweet spot&amp;quot;: a key size that provides sufficient long-term security without causing unnecessary latency or high server load.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Security level !! RSA key size !! RSA performance !! ECC curve !! ECDSA performance !! Status&lt;br /&gt;
|-&lt;br /&gt;
| 80-bit || 1024-bit || Very fast || - || - || Deprecated&lt;br /&gt;
|-&lt;br /&gt;
| 112-bit || 2048-bit || Fast || - || - || Minimum&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;128-bit&#039;&#039;&#039; || &#039;&#039;&#039;3072-bit&#039;&#039;&#039; || &#039;&#039;&#039;Moderate&#039;&#039;&#039; || &#039;&#039;&#039;secp256r1&#039;&#039;&#039; || &#039;&#039;&#039;Fast&#039;&#039;&#039; || &#039;&#039;&#039;Current standard&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 192-bit || 7680-bit || Ultra slow|| secp384r1 || Moderate || Long term&lt;br /&gt;
|-&lt;br /&gt;
| 256-bit || 15360-bit || Ultra slow || secp521r1 || Moderate || Ultra high security&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compatibility considerations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal rollout strategy:&#039;&#039;&#039;&lt;br /&gt;
Support for ECDSA was introduced in &#039;&#039;&#039;version 16r1&#039;&#039;&#039;. Previous versions do not support this algorithm and will fail to establish secure connections if an ECDSA certificate is used. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Requirement:&#039;&#039;&#039; Update all devices to 16r1 or higher prior to moving to ECDSA certificates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interoperability with external systems:&#039;&#039;&#039; &lt;br /&gt;
On devices that interact with external installations — such as Reverse Proxies and Session Border Controllers (SBCs) — it is advisable to continue using RSA certificates until you are certain that external parties have also upgraded to versions supporting ECDSA.&lt;br /&gt;
&lt;br /&gt;
== Certificate rollout ==&lt;br /&gt;
This chapter explains how to deploy certificates and trust lists at scale using automatic tools. This ensures consistency and prevents outages due to expired certificates.&lt;br /&gt;
=== Trust lists ===&lt;br /&gt;
The list of trusted certificates can be synchronized on all devices using a &amp;quot;Certificates&amp;quot; configuration in the Devices App.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_App_Service_Devices#Certificates_configuration]] for details.&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; This is automatically configured when setting up new devices using Install. Individual changes can be done in the devices app.&lt;br /&gt;
&lt;br /&gt;
=== Device certificates ===&lt;br /&gt;
For certificates for individual devices, we recommend using an &#039;&#039;&#039;ACMEv2 provider&#039;&#039;&#039; (such as Let&#039;s Encrypt). The software can automatically obtain certificates from such a provider and renew them before they expire.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_Let%27s_Encrypt]] for detailed configuration steps.&lt;br /&gt;
&lt;br /&gt;
== Manual configuration ==&lt;br /&gt;
Certificates and trust lists can also be manually configured on individual devices. This is intended for small-scale testing or troubleshooting. &#039;&#039;&#039;We strongly recommend using automatic deployment for production environments&#039;&#039;&#039; to avoid manual tracking of expiration dates.&lt;br /&gt;
&lt;br /&gt;
Manual configuration in the firmware is performed via the [[{{NAMESPACE}}:General/Certificates | General / Certificates]] page of the Advanced UI.&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Certificate management]]&lt;br /&gt;
== Technical Specifications ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Parameters ===&lt;br /&gt;
&lt;br /&gt;
==== Certificate ====&lt;br /&gt;
* X.509 v3/v2&lt;br /&gt;
&lt;br /&gt;
==== Key ====&lt;br /&gt;
* &#039;&#039;&#039;RSA&#039;&#039;&#039;&lt;br /&gt;
** 1024-bit (Deprecated)&lt;br /&gt;
** 2048-bit&lt;br /&gt;
** 3072-bit&lt;br /&gt;
** 4096-bit&lt;br /&gt;
* &#039;&#039;&#039;ECDSA&#039;&#039;&#039;&lt;br /&gt;
** secp256r1 (NIST P-256)&lt;br /&gt;
** secp384r1 (NIST P-384)&lt;br /&gt;
** secp521r1 (NIST P-521)&lt;br /&gt;
&lt;br /&gt;
==== Signature ====&lt;br /&gt;
* ECDSA&lt;br /&gt;
* RSA (PKCS#1 v1.5)&lt;br /&gt;
* RSASSA-PSS&lt;br /&gt;
&lt;br /&gt;
==== Hash ====&lt;br /&gt;
* SHA-256&lt;br /&gt;
* SHA-384&lt;br /&gt;
* SHA-512&lt;br /&gt;
&lt;br /&gt;
==== File types ====&lt;br /&gt;
* PEM&lt;br /&gt;
* DER&lt;br /&gt;
* PKCS#12&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78785</id>
		<title>Reference16r1:Certificate management</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78785"/>
		<updated>2026-01-27T13:37:25Z</updated>

		<summary type="html">&lt;p&gt;Msc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies to== &lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* all innovaphone devices from 16r1&lt;br /&gt;
&amp;lt;!-- Keywords: certificate, certificates, sips, https, tls, security, devices, ecdsa, rsa, PEM, CA --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
=== The role of certificates in secure communication ===&lt;br /&gt;
Certificates contain a public key (typically an RSA or ECDSA key) and an identity (typically one or more DNS names). &lt;br /&gt;
They are used in TLS connections (HTTPS, SIPS, H323/TLS, etc.) to validate the identity of the remote endpoint using asymmetric cryptography. This process ensures that endpoints are connected to the intended party and not an impostor.&lt;br /&gt;
&lt;br /&gt;
The pasic principle:&lt;br /&gt;
;Handshake and signature: An endpoint sends its own certificate and creates a digital signature over the handshake data using its private key.&lt;br /&gt;
;Validation: The receiving endpoint validates both the certificate and the signature. It then compares the identity listed in the certificate with the expected identity of the remote party.&lt;br /&gt;
;Trust: To complete this validation, the receiver must know and trust either the certificate itself (self-signed) or, more commonly, the Certificate Authority (CA) that issued it.&lt;br /&gt;
&lt;br /&gt;
In standard TLS connections, the client validates the server&#039;s certificate. However, in specific applications (like H.323/TLS), the server may also validate the client&#039;s certificate. This is known as Client Authentication or Mutual TLS (mTLS).&lt;br /&gt;
&lt;br /&gt;
=== Security and performance considerations ===&lt;br /&gt;
The security of a certificate depends heavily on the key type and key size used. As computational power increases annually, key sizes must also grow to mitigate the risk of brute-force attacks. However, longer keys require more CPU cycles for encryption and decryption, leading to a noticeable performance impact.&lt;br /&gt;
&lt;br /&gt;
The primary challenge is finding the &amp;quot;sweet spot&amp;quot;: a key size that provides sufficient long-term security without causing unnecessary latency or high server load.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Security level !! RSA key size !! RSA performance !! ECC curve !! ECDSA performance !! Status&lt;br /&gt;
|-&lt;br /&gt;
| 80-bit || 1024-bit || Very fast || - || - || Deprecated&lt;br /&gt;
|-&lt;br /&gt;
| 112-bit || 2048-bit || Fast || - || - || Minimum&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;128-bit&#039;&#039;&#039; || &#039;&#039;&#039;3072-bit&#039;&#039;&#039; || &#039;&#039;&#039;Moderate&#039;&#039;&#039; || &#039;&#039;&#039;secp256r1&#039;&#039;&#039; || &#039;&#039;&#039;Fast&#039;&#039;&#039; || &#039;&#039;&#039;Current standard&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 192-bit || 7680-bit || Ultra slow|| secp384r1 || Moderate || Long term&lt;br /&gt;
|-&lt;br /&gt;
| 256-bit || 15360-bit || Ultra slow || secp521r1 || Moderate || Ultra high security&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compatibility considerations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal rollout strategy:&#039;&#039;&#039;&lt;br /&gt;
Support for ECDSA was introduced in &#039;&#039;&#039;version 16r1&#039;&#039;&#039;. Previous versions do not support this algorithm and will fail to establish secure connections if an ECDSA certificate is used. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Requirement:&#039;&#039;&#039; Update all devices to 16r1 or higher prior to moving to ECDSA certificates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interoperability with external systems:&#039;&#039;&#039; &lt;br /&gt;
On devices that interact with external installations — such as Reverse Proxies and Session Border Controllers (SBCs) — it is advisable to continue using RSA certificates until you are certain that external parties have also upgraded to versions supporting ECDSA.&lt;br /&gt;
&lt;br /&gt;
== Certificate rollout ==&lt;br /&gt;
This chapter explains how to deploy certificates and trust lists at scale using automatic tools. This ensures consistency and prevents outages due to expired certificates.&lt;br /&gt;
=== Trust lists ===&lt;br /&gt;
The list of trusted certificates can be synchronized on all devices using a &amp;quot;Certificates&amp;quot; configuration in the Devices App.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_App_Service_Devices#Certificates_configuration]] for details.&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; This is automatically configured when setting up new devices using Install. Individual changes can be done in the devices app.&lt;br /&gt;
&lt;br /&gt;
=== Device certificates ===&lt;br /&gt;
For certificates for individual devices, we recommend using an &#039;&#039;&#039;ACMEv2 provider&#039;&#039;&#039; (such as Let&#039;s Encrypt). The software can automatically obtain certificates from such a provider and renew them before they expire.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_Let%27s_Encrypt]] for detailed configuration steps.&lt;br /&gt;
&lt;br /&gt;
== Manual configuration ==&lt;br /&gt;
Certificates and trust lists can also be manually configured on individual devices. This is intended for small-scale testing or troubleshooting. &#039;&#039;&#039;We strongly recommend using automatic deployment for production environments&#039;&#039;&#039; to avoid manual tracking of expiration dates.&lt;br /&gt;
&lt;br /&gt;
Manual configuration in the firmware is performed via the [[{{NAMESPACE}}:General/Certificates | General / Certificates]] page of the Advanced UI.&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Certificate management]]&lt;br /&gt;
== Technical Specifications ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Parameters ===&lt;br /&gt;
&lt;br /&gt;
==== Certificate ====&lt;br /&gt;
* X.509 v3 (v1/v2 also supported)&lt;br /&gt;
&lt;br /&gt;
==== Key ====&lt;br /&gt;
* &#039;&#039;&#039;RSA&#039;&#039;&#039;&lt;br /&gt;
** 1024-bit (Deprecated)&lt;br /&gt;
** 2048-bit&lt;br /&gt;
** 3072-bit&lt;br /&gt;
** 4096-bit&lt;br /&gt;
* &#039;&#039;&#039;ECDSA&#039;&#039;&#039;&lt;br /&gt;
** secp256r1 (NIST P-256)&lt;br /&gt;
** secp384r1 (NIST P-384)&lt;br /&gt;
** secp521r1 (NIST P-521)&lt;br /&gt;
&lt;br /&gt;
==== Signature ====&lt;br /&gt;
* ECDSA&lt;br /&gt;
* RSA (PKCS#1 v1.5)&lt;br /&gt;
* RSASSA-PSS&lt;br /&gt;
&lt;br /&gt;
==== Hash ====&lt;br /&gt;
* SHA-256&lt;br /&gt;
* SHA-384&lt;br /&gt;
* SHA-512&lt;br /&gt;
&lt;br /&gt;
==== File types ====&lt;br /&gt;
* PEM&lt;br /&gt;
* DER&lt;br /&gt;
* PKCS#12&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78784</id>
		<title>Reference16r1:Certificate management</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78784"/>
		<updated>2026-01-27T12:33:09Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Device certificates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies to== &lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* all innovaphone devices from 16r1&lt;br /&gt;
&amp;lt;!-- Keywords: certificate, certificates, sips, https, tls, security, devices, ecdsa, rsa, PEM, CA --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
=== The role of certificates in secure communication ===&lt;br /&gt;
Certificates contain a public key (typically an RSA or ECDSA key) and an identity (typically one or more DNS names). &lt;br /&gt;
They are used in TLS connections (HTTPS, SIPS, H323/TLS, etc.) to validate the identity of the remote endpoint using asymmetric cryptography. This process ensures that endpoints are connected to the intended party and not an impostor.&lt;br /&gt;
&lt;br /&gt;
The pasic principle:&lt;br /&gt;
;Handshake and signature: An endpoint sends its own certificate and creates a digital signature over the handshake data using its private key.&lt;br /&gt;
;Validation: The receiving endpoint validates both the certificate and the signature. It then compares the identity listed in the certificate with the expected identity of the remote party.&lt;br /&gt;
;Trust: To complete this validation, the receiver must know and trust either the certificate itself (self-signed) or, more commonly, the Certificate Authority (CA) that issued it.&lt;br /&gt;
&lt;br /&gt;
In standard TLS connections, the client validates the server&#039;s certificate. However, in specific applications (like H.323/TLS), the server may also validate the client&#039;s certificate. This is known as Client Authentication or Mutual TLS (mTLS).&lt;br /&gt;
&lt;br /&gt;
=== Security and performance considerations ===&lt;br /&gt;
The security of a certificate depends heavily on the key type and key size used. As computational power increases annually, key sizes must also grow to mitigate the risk of brute-force attacks. However, longer keys require more CPU cycles for encryption and decryption, leading to a noticeable performance impact.&lt;br /&gt;
&lt;br /&gt;
The primary challenge is finding the &amp;quot;sweet spot&amp;quot;: a key size that provides sufficient long-term security without causing unnecessary latency or high server load.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Security level !! RSA key size !! RSA performance !! ECC curve !! ECDSA performance !! Status&lt;br /&gt;
|-&lt;br /&gt;
| 80-bit || 1024-bit || Very fast || - || - || Deprecated&lt;br /&gt;
|-&lt;br /&gt;
| 112-bit || 2048-bit || Fast || - || - || Minimum&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;128-bit&#039;&#039;&#039; || &#039;&#039;&#039;3072-bit&#039;&#039;&#039; || &#039;&#039;&#039;Moderate&#039;&#039;&#039; || &#039;&#039;&#039;secp256r1&#039;&#039;&#039; || &#039;&#039;&#039;Fast&#039;&#039;&#039; || &#039;&#039;&#039;Current standard&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 192-bit || 7680-bit || Ultra slow|| secp384r1 || Moderate || Long term&lt;br /&gt;
|-&lt;br /&gt;
| 256-bit || 15360-bit || Ultra slow || secp521r1 || Moderate || Ultra high security&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compatibility considerations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal rollout strategy:&#039;&#039;&#039;&lt;br /&gt;
Support for ECDSA was introduced in &#039;&#039;&#039;version 16r1&#039;&#039;&#039;. Previous versions do not support this algorithm and will fail to establish secure connections if an ECDSA certificate is used. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Requirement:&#039;&#039;&#039; Update all devices to 16r1 or higher prior to moving to ECDSA certificates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interoperability with external systems:&#039;&#039;&#039; &lt;br /&gt;
On devices that interact with external installations — such as Reverse Proxies and Session Border Controllers (SBCs) — it is advisable to continue using RSA certificates until you are certain that external parties have also upgraded to versions supporting ECDSA.&lt;br /&gt;
&lt;br /&gt;
== Certificate rollout ==&lt;br /&gt;
This chapter explains how to deploy certificates and trust lists at scale using automatic tools. This ensures consistency and prevents outages due to expired certificates.&lt;br /&gt;
=== Trust lists ===&lt;br /&gt;
The list of trusted certificates can be synchronized on all devices using a &amp;quot;Certificates&amp;quot; configuration in the Devices App.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_App_Service_Devices#Certificates_configuration]] for details.&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; This is automatically configured when setting up new devices using Install. Individual changes can be done in the devices app.&lt;br /&gt;
&lt;br /&gt;
=== Device certificates ===&lt;br /&gt;
For certificates for individual devices, we recommend using an &#039;&#039;&#039;ACMEv2 provider&#039;&#039;&#039; (such as Let&#039;s Encrypt). The software can automatically obtain certificates from such a provider and renew them before they expire.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_Let%27s_Encrypt]] for detailed configuration steps.&lt;br /&gt;
&lt;br /&gt;
== Manual configuration ==&lt;br /&gt;
Certificates and trust lists can also be manually configured on individual devices. This is intended for small-scale testing or troubleshooting. &#039;&#039;&#039;We strongly recommend using automatic deployment for production environments&#039;&#039;&#039; to avoid manual tracking of expiration dates.&lt;br /&gt;
&lt;br /&gt;
Manual configuration in the firmware is performed via the [[{{NAMESPACE}}:General/Certificates | General / Certificates]] page of the Advanced UI.&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Certificate management]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78783</id>
		<title>Reference16r1:Certificate management</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78783"/>
		<updated>2026-01-27T12:23:58Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Trust lists */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies to== &lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* all innovaphone devices from 16r1&lt;br /&gt;
&amp;lt;!-- Keywords: certificate, certificates, sips, https, tls, security, devices, ecdsa, rsa, PEM, CA --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
=== The role of certificates in secure communication ===&lt;br /&gt;
Certificates contain a public key (typically an RSA or ECDSA key) and an identity (typically one or more DNS names). &lt;br /&gt;
They are used in TLS connections (HTTPS, SIPS, H323/TLS, etc.) to validate the identity of the remote endpoint using asymmetric cryptography. This process ensures that endpoints are connected to the intended party and not an impostor.&lt;br /&gt;
&lt;br /&gt;
The pasic principle:&lt;br /&gt;
;Handshake and signature: An endpoint sends its own certificate and creates a digital signature over the handshake data using its private key.&lt;br /&gt;
;Validation: The receiving endpoint validates both the certificate and the signature. It then compares the identity listed in the certificate with the expected identity of the remote party.&lt;br /&gt;
;Trust: To complete this validation, the receiver must know and trust either the certificate itself (self-signed) or, more commonly, the Certificate Authority (CA) that issued it.&lt;br /&gt;
&lt;br /&gt;
In standard TLS connections, the client validates the server&#039;s certificate. However, in specific applications (like H.323/TLS), the server may also validate the client&#039;s certificate. This is known as Client Authentication or Mutual TLS (mTLS).&lt;br /&gt;
&lt;br /&gt;
=== Security and performance considerations ===&lt;br /&gt;
The security of a certificate depends heavily on the key type and key size used. As computational power increases annually, key sizes must also grow to mitigate the risk of brute-force attacks. However, longer keys require more CPU cycles for encryption and decryption, leading to a noticeable performance impact.&lt;br /&gt;
&lt;br /&gt;
The primary challenge is finding the &amp;quot;sweet spot&amp;quot;: a key size that provides sufficient long-term security without causing unnecessary latency or high server load.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Security level !! RSA key size !! RSA performance !! ECC curve !! ECDSA performance !! Status&lt;br /&gt;
|-&lt;br /&gt;
| 80-bit || 1024-bit || Very fast || - || - || Deprecated&lt;br /&gt;
|-&lt;br /&gt;
| 112-bit || 2048-bit || Fast || - || - || Minimum&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;128-bit&#039;&#039;&#039; || &#039;&#039;&#039;3072-bit&#039;&#039;&#039; || &#039;&#039;&#039;Moderate&#039;&#039;&#039; || &#039;&#039;&#039;secp256r1&#039;&#039;&#039; || &#039;&#039;&#039;Fast&#039;&#039;&#039; || &#039;&#039;&#039;Current standard&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 192-bit || 7680-bit || Ultra slow|| secp384r1 || Moderate || Long term&lt;br /&gt;
|-&lt;br /&gt;
| 256-bit || 15360-bit || Ultra slow || secp521r1 || Moderate || Ultra high security&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compatibility considerations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal rollout strategy:&#039;&#039;&#039;&lt;br /&gt;
Support for ECDSA was introduced in &#039;&#039;&#039;version 16r1&#039;&#039;&#039;. Previous versions do not support this algorithm and will fail to establish secure connections if an ECDSA certificate is used. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Requirement:&#039;&#039;&#039; Update all devices to 16r1 or higher prior to moving to ECDSA certificates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interoperability with external systems:&#039;&#039;&#039; &lt;br /&gt;
On devices that interact with external installations — such as Reverse Proxies and Session Border Controllers (SBCs) — it is advisable to continue using RSA certificates until you are certain that external parties have also upgraded to versions supporting ECDSA.&lt;br /&gt;
&lt;br /&gt;
== Certificate rollout ==&lt;br /&gt;
This chapter explains how to deploy certificates and trust lists at scale using automatic tools. This ensures consistency and prevents outages due to expired certificates.&lt;br /&gt;
=== Trust lists ===&lt;br /&gt;
The list of trusted certificates can be synchronized on all devices using a &amp;quot;Certificates&amp;quot; configuration in the Devices App.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_App_Service_Devices#Certificates_configuration]] for details.&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; This is automatically configured when setting up new devices using Install. Individual changes can be done in the devices app.&lt;br /&gt;
&lt;br /&gt;
=== Device certificates ===&lt;br /&gt;
&lt;br /&gt;
== Manual configuration ==&lt;br /&gt;
Certificates and trust lists can also be manually configured on individual devices. This is intended for small-scale testing or troubleshooting. &#039;&#039;&#039;We strongly recommend using automatic deployment for production environments&#039;&#039;&#039; to avoid manual tracking of expiration dates.&lt;br /&gt;
&lt;br /&gt;
Manual configuration in the firmware is performed via the [[{{NAMESPACE}}:General/Certificates | General / Certificates]] page of the Advanced UI.&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Certificate management]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78782</id>
		<title>Reference16r1:Certificate management</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78782"/>
		<updated>2026-01-27T12:23:42Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Applies to */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies to== &lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* all innovaphone devices from 16r1&lt;br /&gt;
&amp;lt;!-- Keywords: certificate, certificates, sips, https, tls, security, devices, ecdsa, rsa, PEM, CA --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
=== The role of certificates in secure communication ===&lt;br /&gt;
Certificates contain a public key (typically an RSA or ECDSA key) and an identity (typically one or more DNS names). &lt;br /&gt;
They are used in TLS connections (HTTPS, SIPS, H323/TLS, etc.) to validate the identity of the remote endpoint using asymmetric cryptography. This process ensures that endpoints are connected to the intended party and not an impostor.&lt;br /&gt;
&lt;br /&gt;
The pasic principle:&lt;br /&gt;
;Handshake and signature: An endpoint sends its own certificate and creates a digital signature over the handshake data using its private key.&lt;br /&gt;
;Validation: The receiving endpoint validates both the certificate and the signature. It then compares the identity listed in the certificate with the expected identity of the remote party.&lt;br /&gt;
;Trust: To complete this validation, the receiver must know and trust either the certificate itself (self-signed) or, more commonly, the Certificate Authority (CA) that issued it.&lt;br /&gt;
&lt;br /&gt;
In standard TLS connections, the client validates the server&#039;s certificate. However, in specific applications (like H.323/TLS), the server may also validate the client&#039;s certificate. This is known as Client Authentication or Mutual TLS (mTLS).&lt;br /&gt;
&lt;br /&gt;
=== Security and performance considerations ===&lt;br /&gt;
The security of a certificate depends heavily on the key type and key size used. As computational power increases annually, key sizes must also grow to mitigate the risk of brute-force attacks. However, longer keys require more CPU cycles for encryption and decryption, leading to a noticeable performance impact.&lt;br /&gt;
&lt;br /&gt;
The primary challenge is finding the &amp;quot;sweet spot&amp;quot;: a key size that provides sufficient long-term security without causing unnecessary latency or high server load.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Security level !! RSA key size !! RSA performance !! ECC curve !! ECDSA performance !! Status&lt;br /&gt;
|-&lt;br /&gt;
| 80-bit || 1024-bit || Very fast || - || - || Deprecated&lt;br /&gt;
|-&lt;br /&gt;
| 112-bit || 2048-bit || Fast || - || - || Minimum&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;128-bit&#039;&#039;&#039; || &#039;&#039;&#039;3072-bit&#039;&#039;&#039; || &#039;&#039;&#039;Moderate&#039;&#039;&#039; || &#039;&#039;&#039;secp256r1&#039;&#039;&#039; || &#039;&#039;&#039;Fast&#039;&#039;&#039; || &#039;&#039;&#039;Current standard&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 192-bit || 7680-bit || Ultra slow|| secp384r1 || Moderate || Long term&lt;br /&gt;
|-&lt;br /&gt;
| 256-bit || 15360-bit || Ultra slow || secp521r1 || Moderate || Ultra high security&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compatibility considerations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal rollout strategy:&#039;&#039;&#039;&lt;br /&gt;
Support for ECDSA was introduced in &#039;&#039;&#039;version 16r1&#039;&#039;&#039;. Previous versions do not support this algorithm and will fail to establish secure connections if an ECDSA certificate is used. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Requirement:&#039;&#039;&#039; Update all devices to 16r1 or higher prior to moving to ECDSA certificates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interoperability with external systems:&#039;&#039;&#039; &lt;br /&gt;
On devices that interact with external installations — such as Reverse Proxies and Session Border Controllers (SBCs) — it is advisable to continue using RSA certificates until you are certain that external parties have also upgraded to versions supporting ECDSA.&lt;br /&gt;
&lt;br /&gt;
== Certificate rollout ==&lt;br /&gt;
This chapter explains how to deploy certificates and trust lists at scale using automatic tools. This ensures consistency and prevents outages due to expired certificates.&lt;br /&gt;
=== Trust lists ===&lt;br /&gt;
The list of trusted certificates can synchronized on all devices using a &amp;quot;Certificates&amp;quot; configuration in the Devices App.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_App_Service_Devices#Certificates_configuration]] for details.&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; This is automatically configured when setting up new devices using Install. Individual changes can be done in the devices app.&lt;br /&gt;
&lt;br /&gt;
=== Device certificates ===&lt;br /&gt;
&lt;br /&gt;
== Manual configuration ==&lt;br /&gt;
Certificates and trust lists can also be manually configured on individual devices. This is intended for small-scale testing or troubleshooting. &#039;&#039;&#039;We strongly recommend using automatic deployment for production environments&#039;&#039;&#039; to avoid manual tracking of expiration dates.&lt;br /&gt;
&lt;br /&gt;
Manual configuration in the firmware is performed via the [[{{NAMESPACE}}:General/Certificates | General / Certificates]] page of the Advanced UI.&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Certificate management]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78781</id>
		<title>Reference16r1:Certificate management</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78781"/>
		<updated>2026-01-27T12:23:25Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Applies To */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies to== &lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* all innovaphone devices from 16r1&lt;br /&gt;
&amp;lt;!-- Keywords: certificate, certificates, sips, https, tls, security, devices, ecdsa, rsa --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
=== The role of certificates in secure communication ===&lt;br /&gt;
Certificates contain a public key (typically an RSA or ECDSA key) and an identity (typically one or more DNS names). &lt;br /&gt;
They are used in TLS connections (HTTPS, SIPS, H323/TLS, etc.) to validate the identity of the remote endpoint using asymmetric cryptography. This process ensures that endpoints are connected to the intended party and not an impostor.&lt;br /&gt;
&lt;br /&gt;
The pasic principle:&lt;br /&gt;
;Handshake and signature: An endpoint sends its own certificate and creates a digital signature over the handshake data using its private key.&lt;br /&gt;
;Validation: The receiving endpoint validates both the certificate and the signature. It then compares the identity listed in the certificate with the expected identity of the remote party.&lt;br /&gt;
;Trust: To complete this validation, the receiver must know and trust either the certificate itself (self-signed) or, more commonly, the Certificate Authority (CA) that issued it.&lt;br /&gt;
&lt;br /&gt;
In standard TLS connections, the client validates the server&#039;s certificate. However, in specific applications (like H.323/TLS), the server may also validate the client&#039;s certificate. This is known as Client Authentication or Mutual TLS (mTLS).&lt;br /&gt;
&lt;br /&gt;
=== Security and performance considerations ===&lt;br /&gt;
The security of a certificate depends heavily on the key type and key size used. As computational power increases annually, key sizes must also grow to mitigate the risk of brute-force attacks. However, longer keys require more CPU cycles for encryption and decryption, leading to a noticeable performance impact.&lt;br /&gt;
&lt;br /&gt;
The primary challenge is finding the &amp;quot;sweet spot&amp;quot;: a key size that provides sufficient long-term security without causing unnecessary latency or high server load.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Security level !! RSA key size !! RSA performance !! ECC curve !! ECDSA performance !! Status&lt;br /&gt;
|-&lt;br /&gt;
| 80-bit || 1024-bit || Very fast || - || - || Deprecated&lt;br /&gt;
|-&lt;br /&gt;
| 112-bit || 2048-bit || Fast || - || - || Minimum&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;128-bit&#039;&#039;&#039; || &#039;&#039;&#039;3072-bit&#039;&#039;&#039; || &#039;&#039;&#039;Moderate&#039;&#039;&#039; || &#039;&#039;&#039;secp256r1&#039;&#039;&#039; || &#039;&#039;&#039;Fast&#039;&#039;&#039; || &#039;&#039;&#039;Current standard&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 192-bit || 7680-bit || Ultra slow|| secp384r1 || Moderate || Long term&lt;br /&gt;
|-&lt;br /&gt;
| 256-bit || 15360-bit || Ultra slow || secp521r1 || Moderate || Ultra high security&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compatibility considerations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal rollout strategy:&#039;&#039;&#039;&lt;br /&gt;
Support for ECDSA was introduced in &#039;&#039;&#039;version 16r1&#039;&#039;&#039;. Previous versions do not support this algorithm and will fail to establish secure connections if an ECDSA certificate is used. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Requirement:&#039;&#039;&#039; Update all devices to 16r1 or higher prior to moving to ECDSA certificates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interoperability with external systems:&#039;&#039;&#039; &lt;br /&gt;
On devices that interact with external installations — such as Reverse Proxies and Session Border Controllers (SBCs) — it is advisable to continue using RSA certificates until you are certain that external parties have also upgraded to versions supporting ECDSA.&lt;br /&gt;
&lt;br /&gt;
== Certificate rollout ==&lt;br /&gt;
This chapter explains how to deploy certificates and trust lists at scale using automatic tools. This ensures consistency and prevents outages due to expired certificates.&lt;br /&gt;
=== Trust lists ===&lt;br /&gt;
The list of trusted certificates can synchronized on all devices using a &amp;quot;Certificates&amp;quot; configuration in the Devices App.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_App_Service_Devices#Certificates_configuration]] for details.&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; This is automatically configured when setting up new devices using Install. Individual changes can be done in the devices app.&lt;br /&gt;
&lt;br /&gt;
=== Device certificates ===&lt;br /&gt;
&lt;br /&gt;
== Manual configuration ==&lt;br /&gt;
Certificates and trust lists can also be manually configured on individual devices. This is intended for small-scale testing or troubleshooting. &#039;&#039;&#039;We strongly recommend using automatic deployment for production environments&#039;&#039;&#039; to avoid manual tracking of expiration dates.&lt;br /&gt;
&lt;br /&gt;
Manual configuration in the firmware is performed via the [[{{NAMESPACE}}:General/Certificates | General / Certificates]] page of the Advanced UI.&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Certificate management]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78780</id>
		<title>Reference16r1:Certificate management</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78780"/>
		<updated>2026-01-27T12:23:13Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Compatibility Considerations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To== &lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* all innovaphone devices from 16r1&lt;br /&gt;
&amp;lt;!-- Keywords: certificate, certificates, sips, https, tls, security, devices, ecdsa, rsa --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
=== The role of certificates in secure communication ===&lt;br /&gt;
Certificates contain a public key (typically an RSA or ECDSA key) and an identity (typically one or more DNS names). &lt;br /&gt;
They are used in TLS connections (HTTPS, SIPS, H323/TLS, etc.) to validate the identity of the remote endpoint using asymmetric cryptography. This process ensures that endpoints are connected to the intended party and not an impostor.&lt;br /&gt;
&lt;br /&gt;
The pasic principle:&lt;br /&gt;
;Handshake and signature: An endpoint sends its own certificate and creates a digital signature over the handshake data using its private key.&lt;br /&gt;
;Validation: The receiving endpoint validates both the certificate and the signature. It then compares the identity listed in the certificate with the expected identity of the remote party.&lt;br /&gt;
;Trust: To complete this validation, the receiver must know and trust either the certificate itself (self-signed) or, more commonly, the Certificate Authority (CA) that issued it.&lt;br /&gt;
&lt;br /&gt;
In standard TLS connections, the client validates the server&#039;s certificate. However, in specific applications (like H.323/TLS), the server may also validate the client&#039;s certificate. This is known as Client Authentication or Mutual TLS (mTLS).&lt;br /&gt;
&lt;br /&gt;
=== Security and performance considerations ===&lt;br /&gt;
The security of a certificate depends heavily on the key type and key size used. As computational power increases annually, key sizes must also grow to mitigate the risk of brute-force attacks. However, longer keys require more CPU cycles for encryption and decryption, leading to a noticeable performance impact.&lt;br /&gt;
&lt;br /&gt;
The primary challenge is finding the &amp;quot;sweet spot&amp;quot;: a key size that provides sufficient long-term security without causing unnecessary latency or high server load.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Security level !! RSA key size !! RSA performance !! ECC curve !! ECDSA performance !! Status&lt;br /&gt;
|-&lt;br /&gt;
| 80-bit || 1024-bit || Very fast || - || - || Deprecated&lt;br /&gt;
|-&lt;br /&gt;
| 112-bit || 2048-bit || Fast || - || - || Minimum&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;128-bit&#039;&#039;&#039; || &#039;&#039;&#039;3072-bit&#039;&#039;&#039; || &#039;&#039;&#039;Moderate&#039;&#039;&#039; || &#039;&#039;&#039;secp256r1&#039;&#039;&#039; || &#039;&#039;&#039;Fast&#039;&#039;&#039; || &#039;&#039;&#039;Current standard&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 192-bit || 7680-bit || Ultra slow|| secp384r1 || Moderate || Long term&lt;br /&gt;
|-&lt;br /&gt;
| 256-bit || 15360-bit || Ultra slow || secp521r1 || Moderate || Ultra high security&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compatibility considerations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal rollout strategy:&#039;&#039;&#039;&lt;br /&gt;
Support for ECDSA was introduced in &#039;&#039;&#039;version 16r1&#039;&#039;&#039;. Previous versions do not support this algorithm and will fail to establish secure connections if an ECDSA certificate is used. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Requirement:&#039;&#039;&#039; Update all devices to 16r1 or higher prior to moving to ECDSA certificates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interoperability with external systems:&#039;&#039;&#039; &lt;br /&gt;
On devices that interact with external installations — such as Reverse Proxies and Session Border Controllers (SBCs) — it is advisable to continue using RSA certificates until you are certain that external parties have also upgraded to versions supporting ECDSA.&lt;br /&gt;
&lt;br /&gt;
== Certificate rollout ==&lt;br /&gt;
This chapter explains how to deploy certificates and trust lists at scale using automatic tools. This ensures consistency and prevents outages due to expired certificates.&lt;br /&gt;
=== Trust lists ===&lt;br /&gt;
The list of trusted certificates can synchronized on all devices using a &amp;quot;Certificates&amp;quot; configuration in the Devices App.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_App_Service_Devices#Certificates_configuration]] for details.&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; This is automatically configured when setting up new devices using Install. Individual changes can be done in the devices app.&lt;br /&gt;
&lt;br /&gt;
=== Device certificates ===&lt;br /&gt;
&lt;br /&gt;
== Manual configuration ==&lt;br /&gt;
Certificates and trust lists can also be manually configured on individual devices. This is intended for small-scale testing or troubleshooting. &#039;&#039;&#039;We strongly recommend using automatic deployment for production environments&#039;&#039;&#039; to avoid manual tracking of expiration dates.&lt;br /&gt;
&lt;br /&gt;
Manual configuration in the firmware is performed via the [[{{NAMESPACE}}:General/Certificates | General / Certificates]] page of the Advanced UI.&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Certificate management]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78779</id>
		<title>Reference16r1:Certificate management</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78779"/>
		<updated>2026-01-27T12:23:05Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Manual Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To== &lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* all innovaphone devices from 16r1&lt;br /&gt;
&amp;lt;!-- Keywords: certificate, certificates, sips, https, tls, security, devices, ecdsa, rsa --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
=== The role of certificates in secure communication ===&lt;br /&gt;
Certificates contain a public key (typically an RSA or ECDSA key) and an identity (typically one or more DNS names). &lt;br /&gt;
They are used in TLS connections (HTTPS, SIPS, H323/TLS, etc.) to validate the identity of the remote endpoint using asymmetric cryptography. This process ensures that endpoints are connected to the intended party and not an impostor.&lt;br /&gt;
&lt;br /&gt;
The pasic principle:&lt;br /&gt;
;Handshake and signature: An endpoint sends its own certificate and creates a digital signature over the handshake data using its private key.&lt;br /&gt;
;Validation: The receiving endpoint validates both the certificate and the signature. It then compares the identity listed in the certificate with the expected identity of the remote party.&lt;br /&gt;
;Trust: To complete this validation, the receiver must know and trust either the certificate itself (self-signed) or, more commonly, the Certificate Authority (CA) that issued it.&lt;br /&gt;
&lt;br /&gt;
In standard TLS connections, the client validates the server&#039;s certificate. However, in specific applications (like H.323/TLS), the server may also validate the client&#039;s certificate. This is known as Client Authentication or Mutual TLS (mTLS).&lt;br /&gt;
&lt;br /&gt;
=== Security and performance considerations ===&lt;br /&gt;
The security of a certificate depends heavily on the key type and key size used. As computational power increases annually, key sizes must also grow to mitigate the risk of brute-force attacks. However, longer keys require more CPU cycles for encryption and decryption, leading to a noticeable performance impact.&lt;br /&gt;
&lt;br /&gt;
The primary challenge is finding the &amp;quot;sweet spot&amp;quot;: a key size that provides sufficient long-term security without causing unnecessary latency or high server load.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Security level !! RSA key size !! RSA performance !! ECC curve !! ECDSA performance !! Status&lt;br /&gt;
|-&lt;br /&gt;
| 80-bit || 1024-bit || Very fast || - || - || Deprecated&lt;br /&gt;
|-&lt;br /&gt;
| 112-bit || 2048-bit || Fast || - || - || Minimum&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;128-bit&#039;&#039;&#039; || &#039;&#039;&#039;3072-bit&#039;&#039;&#039; || &#039;&#039;&#039;Moderate&#039;&#039;&#039; || &#039;&#039;&#039;secp256r1&#039;&#039;&#039; || &#039;&#039;&#039;Fast&#039;&#039;&#039; || &#039;&#039;&#039;Current standard&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 192-bit || 7680-bit || Ultra slow|| secp384r1 || Moderate || Long term&lt;br /&gt;
|-&lt;br /&gt;
| 256-bit || 15360-bit || Ultra slow || secp521r1 || Moderate || Ultra high security&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compatibility Considerations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal rollout strategy:&#039;&#039;&#039;&lt;br /&gt;
Support for ECDSA was introduced in &#039;&#039;&#039;version 16r1&#039;&#039;&#039;. Previous versions do not support this algorithm and will fail to establish secure connections if an ECDSA certificate is used. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Requirement:&#039;&#039;&#039; Update all devices to 16r1 or higher prior to moving to ECDSA certificates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interoperability with external systems:&#039;&#039;&#039; &lt;br /&gt;
On devices that interact with external installations — such as Reverse Proxies and Session Border Controllers (SBCs) — it is advisable to continue using RSA certificates until you are certain that external parties have also upgraded to versions supporting ECDSA.&lt;br /&gt;
&lt;br /&gt;
== Certificate rollout ==&lt;br /&gt;
This chapter explains how to deploy certificates and trust lists at scale using automatic tools. This ensures consistency and prevents outages due to expired certificates.&lt;br /&gt;
=== Trust lists ===&lt;br /&gt;
The list of trusted certificates can synchronized on all devices using a &amp;quot;Certificates&amp;quot; configuration in the Devices App.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_App_Service_Devices#Certificates_configuration]] for details.&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; This is automatically configured when setting up new devices using Install. Individual changes can be done in the devices app.&lt;br /&gt;
&lt;br /&gt;
=== Device certificates ===&lt;br /&gt;
&lt;br /&gt;
== Manual configuration ==&lt;br /&gt;
Certificates and trust lists can also be manually configured on individual devices. This is intended for small-scale testing or troubleshooting. &#039;&#039;&#039;We strongly recommend using automatic deployment for production environments&#039;&#039;&#039; to avoid manual tracking of expiration dates.&lt;br /&gt;
&lt;br /&gt;
Manual configuration in the firmware is performed via the [[{{NAMESPACE}}:General/Certificates | General / Certificates]] page of the Advanced UI.&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Certificate management]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78778</id>
		<title>Reference16r1:Certificate management</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Certificate_management&amp;diff=78778"/>
		<updated>2026-01-27T12:19:48Z</updated>

		<summary type="html">&lt;p&gt;Msc: /* Compatibility Considerations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To== &lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* all innovaphone devices from 16r1&lt;br /&gt;
&amp;lt;!-- Keywords: certificate, certificates, sips, https, tls, security, devices, ecdsa, rsa --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
=== The role of certificates in secure communication ===&lt;br /&gt;
Certificates contain a public key (typically an RSA or ECDSA key) and an identity (typically one or more DNS names). &lt;br /&gt;
They are used in TLS connections (HTTPS, SIPS, H323/TLS, etc.) to validate the identity of the remote endpoint using asymmetric cryptography. This process ensures that endpoints are connected to the intended party and not an impostor.&lt;br /&gt;
&lt;br /&gt;
The pasic principle:&lt;br /&gt;
;Handshake and signature: An endpoint sends its own certificate and creates a digital signature over the handshake data using its private key.&lt;br /&gt;
;Validation: The receiving endpoint validates both the certificate and the signature. It then compares the identity listed in the certificate with the expected identity of the remote party.&lt;br /&gt;
;Trust: To complete this validation, the receiver must know and trust either the certificate itself (self-signed) or, more commonly, the Certificate Authority (CA) that issued it.&lt;br /&gt;
&lt;br /&gt;
In standard TLS connections, the client validates the server&#039;s certificate. However, in specific applications (like H.323/TLS), the server may also validate the client&#039;s certificate. This is known as Client Authentication or Mutual TLS (mTLS).&lt;br /&gt;
&lt;br /&gt;
=== Security and performance considerations ===&lt;br /&gt;
The security of a certificate depends heavily on the key type and key size used. As computational power increases annually, key sizes must also grow to mitigate the risk of brute-force attacks. However, longer keys require more CPU cycles for encryption and decryption, leading to a noticeable performance impact.&lt;br /&gt;
&lt;br /&gt;
The primary challenge is finding the &amp;quot;sweet spot&amp;quot;: a key size that provides sufficient long-term security without causing unnecessary latency or high server load.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Security level !! RSA key size !! RSA performance !! ECC curve !! ECDSA performance !! Status&lt;br /&gt;
|-&lt;br /&gt;
| 80-bit || 1024-bit || Very fast || - || - || Deprecated&lt;br /&gt;
|-&lt;br /&gt;
| 112-bit || 2048-bit || Fast || - || - || Minimum&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;128-bit&#039;&#039;&#039; || &#039;&#039;&#039;3072-bit&#039;&#039;&#039; || &#039;&#039;&#039;Moderate&#039;&#039;&#039; || &#039;&#039;&#039;secp256r1&#039;&#039;&#039; || &#039;&#039;&#039;Fast&#039;&#039;&#039; || &#039;&#039;&#039;Current standard&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 192-bit || 7680-bit || Ultra slow|| secp384r1 || Moderate || Long term&lt;br /&gt;
|-&lt;br /&gt;
| 256-bit || 15360-bit || Ultra slow || secp521r1 || Moderate || Ultra high security&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compatibility Considerations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal rollout strategy:&#039;&#039;&#039;&lt;br /&gt;
Support for ECDSA was introduced in &#039;&#039;&#039;version 16r1&#039;&#039;&#039;. Previous versions do not support this algorithm and will fail to establish secure connections if an ECDSA certificate is used. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Requirement:&#039;&#039;&#039; Update all devices to 16r1 or higher prior to moving to ECDSA certificates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interoperability with external systems:&#039;&#039;&#039; &lt;br /&gt;
On devices that interact with external installations — such as Reverse Proxies and Session Border Controllers (SBCs) — it is advisable to continue using RSA certificates until you are certain that external parties have also upgraded to versions supporting ECDSA.&lt;br /&gt;
&lt;br /&gt;
== Certificate rollout ==&lt;br /&gt;
This chapter explains how to deploy certificates and trust lists at scale using automatic tools. This ensures consistency and prevents outages due to expired certificates.&lt;br /&gt;
=== Trust lists ===&lt;br /&gt;
The list of trusted certificates can synchronized on all devices using a &amp;quot;Certificates&amp;quot; configuration in the Devices App.&lt;br /&gt;
&lt;br /&gt;
* See [[{{NAMESPACE}}:Concept_App_Service_Devices#Certificates_configuration]] for details.&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; This is automatically configured when setting up new devices using Install. Individual changes can be done in the devices app.&lt;br /&gt;
&lt;br /&gt;
=== Device certificates ===&lt;br /&gt;
&lt;br /&gt;
== Manual Configuration ==&lt;br /&gt;
Certificates and trust lists can also be manually configured on individual devices. This is intended for small-scale testing or troubleshooting. &#039;&#039;&#039;We strongly recommend using automatic deployment for production environments&#039;&#039;&#039; to avoid manual tracking of expiration dates.&lt;br /&gt;
&lt;br /&gt;
Manual configuration in the firmware is performed via the [[{{NAMESPACE}}:General/Certificates | General / Certificates]] page of the Advanced UI.&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Certificate management]]&lt;/div&gt;</summary>
		<author><name>Msc</name></author>
	</entry>
</feed>