Reference14r2:Concept myApps platform services
myApps platform services provide various operating system specific services which can be used by other Apps running in the myApps client. Those services typically are not available in the browser'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.
When myApps is started in a web browser (and hence has no access to the platform services), some Apps will use WebRTC services implemented by the browser instead. For ease of reference, features available in this scenario are also described here.
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's Chromium open source software.
Applies To
- myApps
- myApps for Windows
- myApps for macOS
- myApps for iOS
- myApps for Android
- myApps Web App (WebRTC)
version 14r2
Features
Not all features are available or required on all platforms.
Feature | Description | Availability | ||||
---|---|---|---|---|---|---|
Windows | iOS | Android | macOS | Browser[1] | ||
audio | manage local audio devices to record and playback audio conversations | ✔ | ✔ | ✔ | ✔ | ✔ (audio available but devices managed by web browser) |
video | manage local displays and cameras to capture and render video live stream | ✔ | ✔ | ✔ | ✔ | ✔ (video available but devices managed by web browser) |
ringer | manage local ringing device | ✔ | ✔ | ✔ | ✔ | ✔ |
application sharing | ||||||
presenter | share an application | ✔ | ✗ | ✔ | ✔ | ✔ |
consumer | view an application shared by the peer | ✔ | ✔ | ✔ | ✔ | ✔ |
hot keys | capture key presses for quick invocation of phone apps (e.g. dial selected number) | ✔ | ✗ | ✗ | ✔ | ✗ |
tel: and sip: URI handler | intercept clicks on tel: and sip: links in web sites to invoke phone apps | ✔ | ✔ | ✔ | ✔ | ✗ |
user activity | set presence state according to user activity | ✔ | ✗ | ✗ | ✔ | ✔[2] |
docking | myApps can be docked persistently to the right or left edge of your screens | ✔ | ✗ | ✗ | ✗ | ✗ |
multi-windowing | Apps can be launched in separate windows | ✔ | ✗ | ✗ | ✔ | ✗ |
recording | Calls can be recorded to recording app | ✔ | ✔ | ✔ | ✔ | ✗ |
notifications | ||||||
display notifications | display notifications with OS standard mechanism | ✔ | ✔ | ✔ | ✔ | ✔ |
push notifications | receive push notifications while myApps is not running | ✗ | ✔ | ✔ | ✔ | ✔[3] |
chat and apps | display notifications for chat and other apps | ✔ | ✔ | ✔ | ✔ | ✔ |
calls | display notifications for incoming calls | ✔ | ✔ | ✔ | ✔ | ✗[4] |
phone book access | access local phone book | ✔ | ✔ | ✔ | ✔ | ✗ |
office presence provider | maps PBX presence state to Microsoft office presence state | ✔ | ✗ | ✗ | ✗ | ✗ |
external application start | start arbitrary external applications for calls | ✔ | ✗ | ✗ | ✔ | ✗ |
app proxy | a caching proxy that provides app persistence | ✔ | ✔ | ✔ | ✔ | ✗ |
auto update | automatically updates myApps platform services to the same version the PBX has | ✔ | ✔ | ✗ | ✔ | ✔[5] |
three party conference | initiate 3-pty-conference using Softphone-App | ✔ | ✔ | ✔ | ✔ | ✗ |
exclude VPN | disable use of VPN connections for audio/video/appsharing | ✔ | ✔ | ✔ | ✔ | ✗ |
- ↑ This refers to the myApps web application running in a browser with no platform services available
- ↑ limited, see User activity below
- ↑ The browser needs to be running in order to receive push notifications.
- ↑ Call notifications are only displayed locally while the phone or softphone app is started.
- ↑ The then-current web app is always loaded from the PBX upon startup and hence up-to-date by definition
Requirements
- innovaphone PBX 14r2 and up
Hardware
Recommended hardware requirements
- Processor: Dual-core 2Ghz or higher
- RAM: 4 Gb
myApps for Windows
- Windows 10 and up
- Windows Server 2016 and later versions
32 & 64 bit Windows
- 32 bit Windows: install the myAppsSetup32.msi from the App Store
- 64 bit Windows: install the myAppsSetup.msi from the App Store
- the 64 bit variant still installs into Program Files (x86), as the main myApps.exe is still a 32bit application
- the 64 bit variant just contains an additional 64 bit binary for the outlook search
Windows N editions
Windows N editions are missing the Media Feature Pack which is pre installed on other Windows versions.
Please install the pack from Microsoft (Windows 10 pack) before you install myApps. The installer will check if the file C:\Windows\SysWOW64\mfplat.dll
exist on your system.
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.
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.
Terminal Server environments
Audio driver was removed if myApps discovers that it is running in a terminal server environment like Citrix.
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.
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:
Reference14r2:MyApps_Plugin_for_Virtual_Desktops
myApps for macOS
- macOS 10.13 or higher
myApps for iOS
- iOS 12 or higher
myApps for Android
- Android 6.0 or higher. Android 6.x may need an update of the Chrome browser.
Licenses
- No license needed for myApps platform services
Overview
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.
Also, on Windows, the platform services come with their own, dedicated browser to run myApps in. This browser is based on Chromium. On iOS, macOS and Android, it is based upon native embedded web view facilities (such as WKWebView) instead.
Components
RTP service for audio, video and data
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 require ICE and DTLS. In other words, they can communicate also with non-compliant (i.e. older) VoIP devices.
Note that the available capabilities when not running the myApps platform services depend on the used browser's WebRTC implementation. See your browser documentation for details.
Apps can request RTP channels using the Media Protocol's AllocChannel message.
RTP ports
audio | 50000 -> 50099 |
video | 50100 -> 50199 |
data | 50200 -> 50299 |
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 IF_TYPE_PPP or IF_TYPE_TUNNEL). This can eliminate quality issues when RTP data is transmitted through TCP based VPN tunnels.
SRFLX and RELAY candidates are obtained using the STUN and TURN server configuration passed by the App (e.g the softphone App) as part of the AllocChannel request.
{"mt":"AllocChannel","channel":"81429cba-396d-43de-8a76-ec020ba8796e","iceServers":[{"urls":"turn:myturn.domaincom:4077?transport=udp","username":"turnuser","credential":"pwd","credentialType":"password"},{"urls":"stun:mystun.domain.com:4077"}],"dn":"Foo Bar","type":"RemoteRtp","kind":"video"}
Codecs
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.
The following codecs are supported:
Codec | Windows-Launcher | Android | iOS | macOS | Firefox (Browser) | Chrome (Browser) | Edge (Browser) | Safari (Browser) | Opera (Browser) |
---|---|---|---|---|---|---|---|---|---|
Audio | |||||||||
G711A | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
G711u | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
G722 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
G729 | ✔ | ✔ | ✔ | ✔ | X | X | X | X | X |
G729A | ✔ | ✔ | ✔ | ✔ | X | X | X | X | X |
G729B | ✔ | ✔ | ✔ | ✔ | X | X | X | X | X |
G729AB | ✔ | ✔ | ✔ | ✔ | X | X | X | X | X |
OPUS-NB | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | X | ✔ |
OPUS-WB | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | X | ✔ |
Video | |||||||||
VP8 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | X | ✔ |
VP9 | ✔** | X | X | ✔** | ✔** | ✔** | ✔** | X | ✔** |
H264 | ✔** | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Application Sharing | |||||||||
Share | ✔ | ✔ | X | ✔ | ✔ | ✔ | ✔ | X | ✔ |
Watch | ✔ | ✔* | ✔* | ✔ | ✔ | ✔ | ✔ | X | ✔ |
* small presentation only
** only for 1:1 calls, not for conferences
Video capture
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.
Application sharing
Screen content will be transmitted by the presenter.
Device handling
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.
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.
The supported headset-SDKs determine which headset vendors are recommended to be used with the myApps softphone app.
For this to work, the following vendor specific development kits are integrated in our myApps client, be ware that the SDK are updated within our Service release :
SDK Vendor | Supported OS | SDK Version | innovaphone Service Release |
---|---|---|---|
Jabra | MacOS | 1.12.2.0 | 13r3sr9 |
Windows | 1.12.2.0 | 13r3sr10 | |
Epos (formerly Sennheiser) | MacOS | 12.4.0.5478 | 14r1sr3 |
Windows | n.a. - to be installed separately | 13r3sr10 | |
Poly (formerly Plantronics) | MacOS | 3.25.53799.37131 | 13r3sr9 |
Windows | 3.25.53800.37131 | 13r3sr10 | |
Yealink | MacOS | 3.1.1.20 | 14r1sr3 |
Windows | 3.1.1.20 | 14r1sr3 |
Notes:
- It is possible to inhibit the start of the Sennheiser SDK (SenncomSDK.exe) using the
DISABLEHEADSETS
directive of the installer (see MSI parameters below).
- 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 refer to this article.
Ring tones
Ring tones can be played. Apps can choose the tone from a pre-defined list of ring tones.
On Windows, custom ring tones can be uploaded as .mp3 files to the ringtones
sub-directory of myApps' roaming directory (which usually is in C:\Users\...\AppData\Roaming\innovaphone\myApps\ringtones
).
On Android, custom ring tones can be added to the system via Android settings.
On iOS, custom ring tones can be uploaded as .mp3 files to the Ringtones
subdirectory of the myApps file share that is available in iTunes if the iPhone has been connected via USB.
On macOS, custom ring tones can be uploaded as .mp3 files to ~/Library/Containers/com.innovaphone.client-macos/Data/Documents/Ringtones
.
Debugging
For extended debugging, turn on the Audio, Media and AppSharing traces in myApps.
Hot keys
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 phone or softphone or rcc App typically. See Client APIs and default apps for more details about this mechanism.
The hot keys can be specified using the advanced settings user interface (see UI elements below. Any of the function keys F1 to F11 (optionally combined with up to two modifier keys alt, ctrl, shift or win) can be chosen for each function. If you do not want to start the call with "Hotkey+Enter" because you would have to wait for the focus, the hotkey can also be pressed twice and the number is dialled directly.
- dial selected number
- Initiates a call using the currently selected text as target.
- A PrepareCall message with the text argument set to the selected text and the adjust argument set to
true
will be sent to the com.innovaphone.phone API.
{"mt":"ApiRequest","apiId":"com.innovaphone.phone","consumer":"@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317","msg":"mt":"PrepareCall","text":"13","adjust":true}}
- accept call
- Accepts a currently alerting call.
- A ConnectCall message will be sent to the com.innovaphone.phone API.
{"mt":"ApiRequest","apiId":"com.innovaphone.phone","consumer":"@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317","msg":{"mt":"ConnectCall"}}
- reject/disconnect call
- Rejects a currently alerting call or disconnects an active call.
- A DisconnectCall message will be sent to the com.innovaphone.phone API.
{"mt":"ApiRequest","apiId":"com.innovaphone.phone","consumer":"@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317","msg":{"mt":"DisconnectCall"}}
URL Handler
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.
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 phone or softphone or rcc App typically. See Client APIs and default apps for more details about this mechanism.
- tel URI
- call a number, e.g.
tel:4711
- A PrepareCall message with the num argument set to the selected text and the adjust argument set to
true
will be sent to the com.innovaphone.phone API.{"mt":"ApiRequest","apiId":"com.innovaphone.phone","consumer":"@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317","msg":{"mt":"StartCall","num":"4711","adjust":true}}
- sip URI
- call a SIP name, e.g.
sip:zkl@innovaphone.com
- A PrepareCall message with the sip argument set to the selected text and the adjust argument set to
true
will be sent to the com.innovaphone.phone API.{"mt":"ApiRequest","apiId":"com.innovaphone.phone","consumer":"@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317","msg":{"mt":"StartCall","sip":"zkl@innovaphone.com","adjust":true}}
- im URI
- start chat with SIP name, e.g.
im:zkl@innovaphone.com
- A StartChat message with the sip argument set to the selected text will be sent to the com.innovaphone.chat API.
{"mt":"ApiRequest","apiId":"com.innovaphone.chat","consumer":"@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317","msg":{"mt":"StartChat","sip":"zkl@innovaphone.com"}}
On macOS systems myApps might be made the default application to handle tel URI e.g. tel:4711
via Apple FaceTime. Open the "FaceTime" menu "Settings..." and select myApps as "Default for phone calls".
On iOS tel URIs are always dialed via GSM. Therefore myApps iOS also reacts to URI schemes com.innovaphone.tel, com.innovaphone.sip and com.innovaphone.im, e.g. com.innovaphone.tel:4711
, com.innovaphone.sip:zkl@innovaphone.com
, com.innovaphone.im:zkl@innovaphone.com
.
User activity
On Windows and macOS systems, the myApps platform services can monitor user keyboard/mouse activity and change the user's presence state after a certain amount of inactivity. The timeout can be specified using the advanced settings user interface (see UI elements below.
myApps will then send a SetUserActivity message to the PBX using the myApps protocol.
{"mt":"SetUserActivity","inactive":true}
This will change the status property of the im: contact for the user's own presence and hence result in a presence update from the PBX to myApps
{"mt":"UpdateOwnPresence","presence":[{...},{"contact":"im:","activity":"","status":"closed"}]}
The closed status is reflected in the grey status color when displaying a contact .
On iOS and Android, the state is set to inactive as soon as the App is brought to background. 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.
Recording
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->myApps->Config: Recording URL) or the softphone App (Settings->Audio Recording (URL))
As long as that URL is configured the audio data of all calls are stored as pcap-files under that URL. If the URL points to a CF device in the PBX, write access must be granted for that URL (PBX->Services->HTTP->Server:Public compact flash access) and if the URL points to the recording app, the files can be accessed via the recording app recording.
Under PBX->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't set the FORCE flag.
If the user was allowed by the admin to control the recording a recording switch is active during the call when the "Media" 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.
Notifications
The myApps platform services can use the OS specific notification mechanism (e.g. desktop notifications on Windows) to display messages (e.g. incoming new chat message) to the user.
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.
Microsoft Windows Notifications
Microsoft Windows Server editions (2016, 2019, 2022) are just capable of showing a single IncomingCall notification at the same time (we couldn't find a workaround for this limitation).
An IncomingCall notification is visible the whole time instead of being moved to the action center after a certain time.
A notification about a missed call uses the IncomingCall type so that this notification is visible until the user returns.
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.
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!
Thus there will be always just one missed call notification visible and previous missed calls can be found inside your action center!
To see myApps notifications, ensure:
- System -> Notifications
- enable notifications
- disable "Do not disturb" or allow myApps as priority application while "Do not disturb" is active
- enable notifications for myApps in the list of applications
- System -> Focus
- if a focus session is active and the "Do not disturb" is activated during a focus session, make sure that myApps is a priority application (see above)
macOS Notifications
Notifications are the same as on Windows. The difference is, that for macOS, notifications need to be allowed in the system settings. Go to Notifications - myApps, select Banner and enable all check marks.
Local phonebook access
Contact Search: The myApps platform services implement an API provider for the com.innovaphone.search API]. They perform search capabilities on the OS' local phone books which can be used by Apps like the phoneapp.
Apps would send a Search request to the API:
{"mt":"ApiRequest","consumer":"dev:SwPh_zkl_5e42e884","provider":"*","src":"4","msg":{"mt":"Search","type":"contact","search":"john doe"},"apiId":"com.innovaphone.search"}
Search results are delivered as SearchInfo messages:
{"mt":"ApiResult","src":"3","provider":"@local-8125d22e37-519d-4056-bfe5-c52ef2ae8fabb0","consumer":"dev:SwPh_zkl_5e42e884","client":"@client-f62702dd86-be3f-47fc-b4bc-7a21627b75b2ea","msg":{"mt":"SearchInfo","relevance":2000,"adjust":true,"type":"contact","contact":{"givenname":"John","sn":"Doe","company":"ACME","position":"Head of everything","telephonenumber":["11111","22222"],"homephone":["+4944444","33333"],"mobile":["+49 (123) 55555"]}},"api":"com.innovaphone.search"}
Reverse Lookup: The myApps platform services implement an API provider for the com.innovaphone.phonelookup API. They perform search capabilities on the OS' local phone books which can be used by Apps like the phoneapp.
Apps would send a Lookup request to the API:
{"mt":"ApiRequest","consumer":"dev:SwPh_zkl_5e42e884","provider":"*","src":"4","msg":{ mt: "Lookup", prefixIntl: "000", prefixNtl: "00", prefixExt:"0", area: "7031", country: "49", lookup: "0004970311234567" },"apiId":"com.innovaphone.lookup"}
Search results are delivered as LookupInfo messages:
{"mt":"ApiResult","src":"3","provider":"@local-8125d22e37-519d-4056-bfe5-c52ef2ae8fabb0","consumer":"dev:SwPh_zkl_5e42e884","client":"@client-f62702dd86-be3f-47fc-b4bc-7a21627b75b2ea","msg":{mt: "LookupInfo", dn: "Jake Blues", contact: { telephonenumber: ["0004970311234567"], givenname: "Jake", sn: "Blues", company: "Blues Brothers"
Windows
On Windows, the search and lookup are performed in all of the user's Outlook contact folders. As opposed to the search implemented in the Contacts and Users App, all items are returned which match any of the search words (i.e. searching for a b will return items matching either a or b).
- searched properties
- firstname, lastname
- returned properties
- Following Outlook contact phone number properties are returned (if available):
- OFFICE_TELEPHONE_NUMBER as telephonenumber
- OFFICE2_TELEPHONE_NUMBER as telephonenumber
- HOME_TELEPHONE_NUMBER as homephone
- HOME2_TELEPHONE_NUMBER as homephone
- MOBILE_TELEPHONE_NUMBER as mobile
- BUSINESS_FAX_NUMBER as facsimiletelephonenumber
Note that contact information is cached in the search provider. Updated contacts may therefore become effective after a while only.
Outlook search will create its own trace file myAppsOutlookSearch-
date-time.txt
in the standard trace directory.
This search provider is always installed and can be disabled. There is no need (nor possibility) to enable it in the Apps tab of the PBX's user object. Also, no App object needs to be created for it.
Android/iOS
The search and lookup are performed in the contacts.
macOS
The search and lookup are performed in the contacts. If you wish to disable local contact lookup, go to system settings - Security & Privacy and disable the access to contacts for myapps.
Microsoft Office integration
The myApps platform services has a office presence provider that can provide the user's presence state to Office applications. See myApps Office Integration for details.
This feature is installed by default. However, it can be disabled using the OFFICEPRESENCE MSI Parameter. Also, a check-mark is available in the setup dialog.
Call an external application for calls
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's path) is configured in the myApps platform services (see Advanced settings in the UI elements section below).
A number of arguments can be passed to the application by substituting $-variables in the Parameter field:
- $n
- phone number as dialed (called party number for outgoing calls) or received (calling party number for incoming calls)
- $N
- called or calling party number in national format (e.g. 07031730090)
- $I
- called or calling party number in international format (e.g. +497031730090)
- 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
- $d
- display name of peer (if known)
- $u
- URI name of the peer (if available eg with a federation call)
- $c
- conference id
- this is a globally unique ID for this call and may be used to relate the call to the guid found in the CallInfo structure in the SOAP-API and RCC-API . Also, corresponding CDRs can be related using the event tag's conf attribute.
The start of an external application can be requested using the com.innovaphone.externalapps API.
Some setup examples are shown here.
Push
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 keep alive 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 push. When running on iOS or Android, myApps supports push.
For push to work, a push object needs to be configured in the PBX . Also, it needs to be enabled on the mobile phone for the myApps app. This mechanism is quite similar in v12 and v13, so you can refer to Reference14r2:Concept_Push_Notifications_for_iOS_and_Android for more details.
Also, helpful hints can be found in Howto:Troubleshoot v13 Push with myApps for Android and iOS.
App Proxy
myApps runs further Apps (such as e.g. the phoneapp) as a web page in an IFRAME of the browser myApps is running in. The App's page code is loaded either from the PBX or from an application platform (AP). This however would mean that the App'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 App Proxy. 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.
The cached files are stored in the PCs local file system in the C:\Users\...\AppData\Local\innovaphone\myApps\appproxy</path>
. 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.
Auto update
On Windows and on macOS, the myApps platform services can auto-update themselves to a common version. This is controlled by the Launcher Software Update settings under PBX/Config/myApps in the PBX.
When myApps is started or the user logs in or myApps needs to re-connect to the PBX, the platform services will use the com.innovaphone.client API to learn the desired version (launcherUpdateBuild, which is part of the API's model). If this differs from the current version, the platform services will try to download the respective new version.
{
"mt": "ApiUpdate",
"apis": {
"com.innovaphone.client": {
"@client": {
"title": "innovaphone myApps",
"model": {
"launcher": true,
"launcherUpdateBuild": "134906",
"appStoreUrl": "http://store.innovaphone.com/release/download/"
}
}
}
}
}
The installation of the downloaded version is done by the innovaphonemyAppsUpdateService. This service is installed and enabled during the initial installation of the myApps platform services. To disable auto-update, either leave the Launcher Software Update settings empty or set the service's start mode to disabled in the Windows services control panel.
Note that on Windows the update service does not work on terminal servers. Administrators must do myApps base services updates using standard windows mechanisms.
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.
On Android/iOS/macOS updates can be downloaded from the respective app store.
The Devices app can not update software installed on Windows PCs directly. However, when the PBX is updated using an update job in the Devices App, the Launcher Software Update settings will be updated accordingly and hence the myApps base services will ultimately also be updated to the same version.
Auto update flow on Windows
- On start of myApps, myApps checks if an update is available and ready for installation
- if yes, the update is installed directly, without user interaction (a popup is shown during the installation)
- if not, myApps starts
- if an update is available while myApps is already running, an update notification will be shown which let's the user choose to install the update now or later (the notification will then popup again after one hour)
UI elements
There are a few user interfaces provided by the platform services:
tray-icon (Windows only)
- Allows to
- terminate myApps
- toggle the autostart state
- toggle the show in task bar state
- open the trace folder
PBX connect form
Advanced settings
- Allows to modify various platform dependant settings (such as e.g. the hotkey selection on Windows)
Interfaces
Provided APIs
- com.innovaphone.search
- access to local phone book entries by the Local phonebook access component.
- com.innovaphone.launcher
- display of OS specific user notifications and receipt of related user actions
- com.innovaphone.notificationhandler
- reports back click on a notification.
- com.innovaphone.externalapps
- to start external applications, see Call an external application for calls above
Used APIs
- com.innovaphone.phone
- used to initiate new or manipulate existing calls by the Hot keys and URL handler components.
- com.innovaphone.chat
- used to start a new chat by the URL handler component.
- com.innovaphone.client
- the model is used to learn the update settings, see Auto update above
Protocols
- Media Protocol
- used by apps to allocate RTP channels, see RTP service for audio, video and data above
Related App Services
none
Known limitations
- 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 "Phone", "Incoming Calls" to "Full Screen" to hide the myApps user interface again during call answering.
- 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 Bluetooth Headset in this setting:
- iOS Settings->Accessibility->Touch->Call Audio Routing: Automatic / Bluetooth Headset / Speaker
- iOS Einstellungen->Bedienungshilfen->Tippen->Anrufaudioausgabe: Automatisch / Bluetooth-Headset / Lautsprecher
- Windows Server 2016 (Windows 10 Build 1607)
- windows just shows the first notification. Further notifications aren't displayed until the previous ones are removed from the notification center. Current windows builds do not show this behaviour anymore.
- Problems on Mac computers with Yealink USB headsets
- 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.
- Poly / Plantronics headset buttons only functional if myApps is started with Rosetta
- 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's Intel emulator Rosetta if a Poly / Plantronics headset is used. This is done with right-click on the myApps executable, Information, Open with Rosetta.
- Windows surface devices may not work correctly
- Chromium does not get touch keyboard events. USB Keyboards may not be recognized either.
Installation
Windows
myApps platform services are installed on Windows using the .msi file found in the myApps Windows package from store.innovaphone.com.
myApps can update itself automatically, see Auto update above.
MSI Parameters and install options
The MSI installer of myApps for Windows supports the following parameters and can be edited with Microsoft Orca. You can add your parameters in the table property.
- SERVER (REG_SZ)
- the PBX's server URL
- OFFICEPRESENCE (REG_DWORD)
- false to disable presence integration in Microsoft Office
- this is also available as a check-mark when running the install manually
- DISABLEHEADSETS (REG_DWORD)
- true to disable headsets support, see Device handling above
- EXTERNALAPPS (REG_SZ)
- pre-define external applications, see Call an external application for calls above
- e.g.
"{""externalApps"":[{""id"":0,""name"":""Wireshark"",""path"":""C:\\Program Files\\Wireshark\\Wireshark.exe"",""param"":""test $I""}]}"
- FORCERESTART (REG_DWORD)
- true (or any string ...) kills myApps during the installation and restarts it for the currently logged in user, if it was running
- DISABLELOCALHOST (REG_DWORD)
- true to disable use of localhost string to access the local webserver. Use 127.0.0.1 instead
- EXCLUDEINTERFACES (REG_SZ)
- some VPN interfaces are not detected by Windows as IF_TYPE_PPP or IF_TYPE_TUNNEL and therefore the media outside VPN 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
- e.g.
EXCLUDEINTERFACES="172,192.168,10.10"
Current settings are stored in the registry at Computer\HKEY_CURRENT_USER\Software\innovaphone\myApps
or at Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\innovaphone\myApps
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.
iOS
myApps platform services are installed on iOS by loading innovaphone myApps from the App Store.
Configuration via MDM
the PBX's server URL can be pre-configured by specifying this dictionary in the MDM
<plist>
<dict>
<key>server</key>
<string>pbx.example.com</string>
</dict>
</plist>
macOS
myApps platform services might be installed directly from the Apple store. An installer package myapps.pkg
and a disk image myapps.dmg
is also available from the innovaphone app store. Install myapps.pkg
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 myapps.dmg
and double klick myApps. If desired integrate it into the app dock by right click, Options, Keep in the dock.
If installed from the innovaphone app store, myApps can update itself automatically, see Auto update above.
If installed from the Apple store, macOS notifies about updates on the Apple store. myApps Auto update is disabled then.
If a clean-install of the client is necessary, the folder "/Users/username/Library/Containers/myapps" needs to be deleted. To be on the safe side also delete it from the trash bin.
Configuration via MDM
the PBX's server URL can be pre-configured by specifying this dictionary in the MDM
<plist>
<dict>
<key>server</key>
<string>pbx.example.com</string>
</dict>
</plist>
Preferences
macOS supports preference settings that can be set via a shell command or via Mac remote management
> defaults write com.innovaphone.client-ios-14r1 server "PBX-server-URL"
The following parameters and can be set through this method:
- server
- the PBX's server URL
Using Sennheiser headsets
If you use Sennheiser headsets, you should also install the then-current DSEA_SDK_v
version.pkg
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's auto-update function.
Android
myApps platform services are installed on Android by loading innovaphone myApps from the Play Store.
Configuration via MDM
the PBX's server URL can be pre-configured by specifying a property "server" with string value "pbx.example.com" in the MDM.
Configuration
Server configuration
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.
But there are more options for special PBX configurations.
- Non-standard HTTPS port
- If the PBX uses a non-standard HTTPS port, it must be appended to the host name separated by a colon (
:
). - Example:
pbx.example.com:4444
(expands tohttps://pbx.example.com:4444/PBX0/APPCLIENT/appclient.htm
) - DynPBX module name
- If the PBX is a DynPBX, the module id must be appended to PBX0 separated - (
/
). - Example:
pbx.example.com/PBX0-1
(expands tohttps://pbx.example.com/PBX0-1/APPCLIENT/appclient.htm
) - Softphone physical location
- If user defined physical location shall be used for softphone, you can append it using a parameter
#phys=
. - Example:
pbx.example.com#phys=slave
(expands tohttps://pbx.example.com/PBX0/APPCLIENT/appclient.htm#phys=slave
)
Example 1: PBX pbx.example.com with standard configuration
pbx.example.com
Example 2: PBX slave.example with DynPBX module ID 1, HTTPS port 4444 and physical location master
slave.example.com:4444/PBX0-1#phys=master
HTTP proxy support
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.
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.
On Android user name and password can be specified through Android Settings, Accounts by adding a myApps HTTP Proxy Credentials account. The name of the account must be the tunnel server hostname.
Platform specific settings
When myApps runs under the myApps platform services, it will show various platform specific settings as part of its burger menu, so the user can set them. See Advanced settings in UI elements above.
Some options can also be set globally for all myApps clients in the PBX's PBX/Config/myApps Client Settings
Option | Description | Where to set | Availability | ||||
---|---|---|---|---|---|---|---|
User menu | PBX Client Settings | Windows | iOS | Android | macOS | ||
Autostart | Launch myApps on login | ✔ | ✔ | ✔ | ✗ | ✗ | ✔ |
Appear offline after | controls after which idle time a user is considered inactive. See User activity above | ✔ | ✔ | ✔ | ✗ | ✗ | ✔ |
Hotkeys | Hotkeys for call dial, accept, reject. See Hot keys above | ✔ | ✔ | ✔ | ✗ | ✗ | ✔ |
Docking | Docking mode (left, right, none). See ?? above | ✔ | ✔ | ✔ | ✗ | ✗ | ✗ |
Desktop notifications | Turn on/off platform notifications. See Notifications above | ✔ | ✔ | ✔ | ✗ | ✗ | ✔ |
VPN | Disable VPN address for ICE candidate selection. See RTP ports above | ✔ | ✔ | ✔ | ✗ | ✔ | ✔ |
Show in taskbar | Show myApps in the taskbar in addition to it's tray icon. | ✔ | ✗ | ✔ | ✗ | ✗ | ✗ |
Log flags | turn on/off certain trace levels. See Troubleshooting below. | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
External applications | define the applications available for Apps to be started. See Call an external application for calls above. | ✔ | ✗ | ✔ | ✗ | ✗ | ✔ |
Ring in headset | send ring tone for incoming to headset instead of loudspeaker. | ✔ | ✗ | ✔ | ✗ | ✗ | ✗ |
Start parameters for Windows
On Windows, it is not possible to pass start parameters from the Chromium documentation to the myApps process.
OS Settings for Windows
Windows settings can influence the display of Desktop notifications. See Change notification settings in Windows 10 for details.
OS settings for Android
- Events
- The appearance of notifications can be controlled here.
- Call accounts
- For proper incoming call signaling, the call account myApps 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.
- Preferred Calling Account
- Choose which calling account (myApps/SIM/..) should be used for outgoing calls initiated from within the native phone app / phone book.
- Background data, unlimited data usage
- Grant background data use to enable myApps to connect to the PBX immediately on an incoming call.
- Overlaying
- This setting is not needed if call account myApps has been enabled. Should there be a reason for not enabling call account myApps, the permission for overlaying needs to be granted on Android 10 or higher for proper call signaling.
Note: If no SIM card is installed some Android smartphones exhibit a problem dialing from the smartphone contacts. The contacts app shows a choice Select SIM card for this call but all possible dialers are greyed out. In this case make myApps the default phone app in Android settings Apps, Default apps, Telephony.
OS settings for iOS
- Notifications
- The appearance of notifications can be controlled in iOS Settings, myApps.
OS settings for macOS
- Notifications
- The appearance of notifications can be controlled in macOS Preferences, Notifications, myApps.
Troubleshooting
myApps platform services can write various traces for debugging. Trace can be turned on and off selectively in the Advanced settings.
The following trace flags can be set:
(Recommended trace options are: App, Browser, ICE, TURN, Signaling and Audio. Please do not activate other flags unless innovaphone support says otherwise)
Abbreviation | code | description |
---|---|---|
App | 0x000000001 | logs from the App Service itself |
DNS | 0x000000008 | logs DNS requests and results |
HTTP client | 0x000000080 | http client logs |
TLS | 0x000000400 | TLS logs |
TCP | 0x000000800 | TCP logs |
LDS | 0x000001000 | local domain sockets |
WebSocket client | 0x000004000 | logs outgoing websocket connections |
App WebSocket | 0x000008000 | logs app websocket connections (e.g. from PBX objects to an App Service or from the UI to the App Service) |
UDP | 0x000200000 | UDP logs |
DTLS | 0x000400000 | logs DTLS handshake and messages |
Media | 0x000800000 | logs media events |
Media channel | 0x001000000 | logs RTP/SCTP media connections |
ICE | 0x002000000 | logs ICE messages between peers |
TURN | 0x004000000 | logs TURN messages between peers |
AppSharing | 0x008000000 | logs AppSharing connection |
Audio | 0x010000000 | logs Audio connection and headset events |
Video | 0x020000000 | logs video connection and webcam events |
Browser | 0x040000000 | logs Chromium events |
AppProxy | 0x080000000 | logs requests which are proxied between the local webserver and the remote server |
Webserver | 0x200000000 | enables webserver specific logs |
Browser Console | 0x400000000 | logs browser console events |
Signaling | 0x800000000 | enables logs in the signaling module for debugging calls |
code can be or'ed and used as value for the Log flags field in PBX/Config/myApps/Client Settings.
- Windows
- On Windows, traces are written to the
C:\Users\[UserName]\AppData\Local\innovaphone\myApps
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)
- myApps-date-time.txt : main log file for the platform services
- myAppsOutlookSearch-date-time.txt : log file for the Outlook phone book access
- myAppsHookController-date-time.txt : log file for the hot-key interceptor (see Hot keys)
- myApps update installation traces are written to the
%windir%\temp\
directory.- myAppsInstall.txt: MSI installation file
- myApps update service traces are written to the
%ALLUSERSPROFILE%\innovaphone\myAppsUpdateService
directory.- myAppsUpdateService-date-time.txt: myApps update service traces
- Android
- traces can be sent by e-mail.
- 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
Android/data/com.innovaphone.clientandroid/files
- iOS
- traces can be sent by e-mail.
- macOS
- traces can be sent by e-mail.
- also, the files can be found in
~/Library/Containers/com.innovaphone.client-ios/Data/Documents/
. Press Alt+N followed by space to get tilde ~.
Known Problems
Related Articles
- Reference14r2:Concept_myApps
- Reference14r2:Concept_myApps_Redundancy
- Reference14r2:Concept_myApps_Office_Integration
- Reference14r2:Concept_myAPPs_Search_in_local-Outlook_Contacts
- Reference14r2:Call_Detail_Record_CDR_PBX
- Reference14r2:Concept Push Notifications for myPBX iOS and Android
- Howto:Troubleshoot v13 Push with myApps for Android and iOS
- Reference14r2:PBX/Config/myApps