softphone sdk 1.5 release notes - counterpath · swift ios sample application to demonstrate how to...
TRANSCRIPT
CounterPath Corporation
Suite 300, One Bentall Centre 505 Burrard Street, Box 95 Vancouver, BC V7X 1M3 Canada
Telephone: +1.604.320.3344 www.counterpath.com
Release Notes for CounterPath Softphone SDK
Version 1.6
August 16, 2017
R13
Release Notes CounterPath Softphone SDK 1.6
Page 2 © 2017 CounterPath Corporation
The CounterPath Softphone SDK 1.5 Release Notes provide information for all 1.6 and 1.5.x releases:
• SDK 1.6.0 (August 16, 2017)
• SDK 1.5.8.1 (April 25, 2017) – iOS only
• SDK 1.5.8 (January 31, 2017)
• SDK 1.5.7 (October 31, 2016) – iOS and Android only
• SDK 1.5.6.1 (September 23, 2016) - iOS only
• SDK 1.5.6 (August 17, 2016)
• SDK 1.5.5 (June 23, 2016) - iOS only
• SDK 1.5.4 (April 26, 2016)
• SDK 1.5.3 (Feb 04, 2016)
• SDK 1.5.2 (Nov 18, 2015)
• SDK 1.5.1 (Sept 10, 2015)
• SDK 1.5 (Aug 10, 2015)
SDK Platforms
The release notes provide information for all of the following platforms:
• Java for Android
• Objective-C and Swift for iOS and OS X
• .NET for Windows
• Java for Windows
• Mac
If the issue is platform specific, the platform is identified for the items listed in the following sections.
Release Notes CounterPath Softphone SDK 1.6
Page 3 © 2017 CounterPath Corporation
1 SDK 1.6.0 (August 16, 2017)
1.1 What’s New
1080p high-definition video support
This Softphone SDK includes addition of 1080p high-definition video support on Mac and Windows. Refer to the
Video sample application bundled with the SDK package for an example of 1080p video calls.
Swift iOS sample application
To demonstrate how to integrate the Softphone SDK with a Swift application, the iOS Softphone SDK includes a
Swift based sample application, which can register a SIP account, and make VoIP calls.
Addition of DirectX 9EX D3DImage rendering on Windows
To allow applications to greatly enhance the UI presentation of video on windows (e.g. being able to put controls
right over a video surface), the Windows Softphone SDK now includes support for a DirectX 9EX D3DImage
rendering option. Refer to the BasicRegister_Video_DX9_D3DImage sample for an example of integrating this
into a .net application.
Other general changes include:
- Documentation regarding integration with Firebase Cloud Messaging (in the Android Developer Guide) as well
as Apple Push Notification Service (in the iOS Developer Guide)
- Addition of interval call quality reports for Voice Quality Monitoring enabled SDKs. Refer to the section on
Voice Quality Monitoring of the Softphone reference guide for more information.
1.2 Resolved Issues
- Fixed an issue where using TLS/SRTP and ICE together can result in calls with one way audio (O-3359)
- Fixed an issue with IP auto detection mode on MC40 devices on Android 4.4.4 (O-3139)
- Fixed an issue with toggling audio to loudspeaker when a wired headset is connected on MC40 devices (O-
3282)
- Fixed an issue on Android which could result in outbound and incoming calls not working. Note this was also
fixed on SDK patch release 1.5.8.2 (O-3400)
- Multiple IPv6 auto detection fixes + NAT64 support fixes for all platforms. Note that to take advantage of IPv6
auto detection mode, the ipVersion member in SipAccountSettings must be set to one of the automatic modes. For
more details, see Supporting IPv6 in the iOS Developer Guide
- General stability improvements and bug fixes
Release Notes CounterPath Softphone SDK 1.6
Page 4 © 2017 CounterPath Corporation
1.3 Known Issues
iOS
• For iOS, the 64-bit simulator is not supported yet (x86_64 architectures is not supported yet).
Android
• The CounterPath SDK provides basic Android Bluetooth® support only, and is not expected to work with all
Android devices. CounterPath has tested Bluetooth against Jawbone ERA and Jabra EasyGo. For this reason,
customers are advised to test Bluetooth capabilities for every Android device/Bluetooth device pairing.
Android’s Bluetooth system undergoes frequent changes that may create new issues when upgrading a device.
Devices also ship their own Bluetooth hardware driver (and sometimes Bluetooth stacks) that can cause
issues. Although Bluetooth support is generic and should work with any Android phone and Bluetooth
headset combination, CounterPath has only tested a small set of possible device pairings. Basic features are
supported, such as incoming/outgoing calls and switching to/from Bluetooth headset to speaker/earpieces.
Advanced features, such as switching between multiple Bluetooth devices, aren’t supported in the SDK, and
must be done in the app or using the system settings UI.
• To enable Bluetooth, the permission "android.permission.BLUETOOTH" must be added to the app’s
manifest. In addition, devices running Android 4.0 or 4.1 require the permission
"android.permission.BROADCAST_STICKY".
• Attempting to use a Bluetooth device on the Samsung Galaxy S2 may cause the audio driver to freeze. A
device reboot may be required before the audio hardware can be used again.
Please report any issues you encounter.
Release Notes CounterPath Softphone SDK 1.6
Page 5 © 2017 CounterPath Corporation
2 SDK 1.5.8.1 (April 25, 2017)
This release includes updates to the iOS SDK only. No changes made in other platforms.
2.1 Resolved Issues
- With the release of iOS 10.3, Apple introduced more aggressive battery life management. This can cause
applications using the CounterPath SDK to become non-responsive or suspended in the background. If you find
that you are not receiving calls and IMs with your application in the background on iOS 10.3 or higher, call
[CPCiOSBackgroundManager setStrategy:] with parameter ECPCKeepBgAliveStrategyHard. Setting this may
consume more battery. Note that this issue does not apply if you are using push notifications for incoming calls or
IMs. (O-3482)
- Fixed an issue where call mute would not work with CallKit if audio from other apps (e.g. music) was also
active. (O-3483)
Release Notes CounterPath Softphone SDK 1.6
Page 6 © 2017 CounterPath Corporation
3 SDK 1.5.8 (January 31, 2017)
3.1 What's New
Stretto User Experience Metrics Module
This SDK includes the addition of the Stretto User Experience Metrics (UEM) SDK module. The Stretto UEM
module allows for the automatic collection of critical data summarizing service quality, device usage, feature
usage, and other helpful information. The module caches this data, and can seamlessly upload a report to Stretto
when requested by your application.
Other general changes include:
- Support for relay candidates (using TURN) in ICE.
- Windows SDK moving to use Visual Studio 2015. The Visual C++ Redistributable for Visual Studio 2015 is
required.
3.2 Resolved Issues
- Improvements in handling network switches with active calls.
- Fixed the issue where App Nap on macOS/OS X could cause the SDK to miss incoming calls.
- Various stability improvements.
Release Notes CounterPath Softphone SDK 1.6
Page 7 © 2017 CounterPath Corporation
4 SDK 1.5.7 (October 31, 2016)
This release includes updates to the iOS and Android SDKs only. No changes made in other platforms.
4.1 What's New
CallKit support for iOS
Apple introduced CallKit for iOS 10. This version of SDK includes CallKit support. Refer to the iOS Developer
guide for sequences and a sample.
4.2 Resolved Issues
• Video quality improvements
• Fixed an issue where DNS64 lookups could freeze the SDK
• IPv6 support enhancements
• Fixed an issue preventing IP version auto detection from working
• Fixed potential crash during network changes on Android
• Various stability improvements
Release Notes CounterPath Softphone SDK 1.6
Page 8 © 2017 CounterPath Corporation
5 SDK 1.5.6.1 (September 23, 2016)
This release includes updates to the iOS SDK only. No changes made in other platforms.
5.1 Resolved Issues
- Fixed an issue where some Bluetooth devices would not work on iOS 10.
- Fixed an issue where Apple may reject an App Store submission due to private API usage being flagged.
Previous SDK versions did not use private Apple APIs, but did use method names which conflicted; this
has been resolved in SDK 1.5.6.1.
TCP Backgrounding on iOS
For iOS platforms, using [CPCiOSBackgroundManager setBackgroundingEnabled:NO] with TCP SIP accounts is
deprecated on iOS 10. It is recommended to avoid using this, which hands the TCP socket over to iOS while the
application is in the background. Instead, setBackgroundingEnabled:YES should be used when using TCP SIP
accounts, to allow the SDK to remain in control of the socket when the application is in the background.
Release Notes CounterPath Softphone SDK 1.6
Page 9 © 2017 CounterPath Corporation
6 SDK 1.5.6 (August 17, 2016)
6.1 New Features
• Introduced integration with the Stretto™ Provisioning Module, to enable application developers to
leverage Stretto to easily retrieve SIP account and related settings for users logging into an application.
For more information, see the Stretto Provisioning section in the SDK Reference Guide included in the
SDK package.
• Auto discovery of IP Version is now supported on all platforms.
The SDK provides the ability to attempt auto detection of which IP version (IPv4 or IPv6) should be used.
As part of IP version auto detection, the SDK will consider network interfaces available, DNS responses,
and connection attempt results.
• The SDK now supports the ability to establish TLS 1.2 connections for XMPP. Applications can:
o set the requested TLS level by adjusting the sslVersion member of the XmppAccountSettings
struct.
o note which TLS version was negotiated by examining the XmppTLSConnectionInfo struct
returned in XmppAccountStatusChangedEvent.
• [iOS Platform] Support for working in NAT64/DNS64 environments, with SBCs or with STUN.
• OpenSSL updated to OpenSSL 1.0.1t.
6.2 Resolved Issues
Numerous stability improvements and bug fixes have been incorporated including:
• Adjustment for SDK to send 20 ms g729 packetization time to improve compatibility
• Resolved internal SDK crashes when the SDK is used from Swift based application
• Fixed an issue where transport specific SIP keep-alive settings would not be honored
• Fixed an issue where ISipConversationHandler::onError callback would not be fired for the .net based SDK
• Improved video compatibility with Asterisk
• Video improvements in low bandwidth environments
Release Notes CounterPath Softphone SDK 1.6
Page 10 © 2017 CounterPath Corporation
7 SDK 1.5.5 (June 23, 2016)
This release includes updates to the iOS SDK only. No changes made in other platforms.
7.1 iOS Specific Changes
Auto Discovery of IP Version
This release adds support for automatically discovering an IP version to use. The SDK now provides the ability to
specify new enum value of IpVersion_Auto for SipAccountSettings ipVersion setting, which will cause the SDK
to attempt auto detection of which IP version (IPv4 or IPv6) should be used. As part of IP version auto detection,
the SDK will consider network interfaces available, DNS responses, and connection attempt results.
In order to comply with June 1, 2016 App Store submission requirements by Apple, iOS applications using this
SDK should set ipVersion to IpVersion_Auto. An example of this can be seen in the iOS Advanced Audio Call
sample, which is included with the iOS SDK package.
Also note that an IPv6-capable SIP server is required for SIP connectivity with this SDK if an iOS device
connects to an IPv6-only WiFi or WWAN network. An iOS device connected to an IPv6-only network may be
part of Apple App Store submission testing, so ensure any test accounts you give to Apple for App Store
submission testing have support for an IPv4 and IPv6 SIP server. Further, devices running iOS 9 may in the near
future begin connecting to IPv6-only LTE networks, which will require an IPv6-capable SIP server.
NAT64 is not supported by the SDK 1.5.5. As a result, connecting to an IPv4 SIP server from an IPv6 network
with NAT64 is not supported.
Open SSL
Updated to use OpenSSL 1.0.1t.
Video Improvements
There have been improvements in video quality and performance.
7.2 Resolved Issues
• Fixed a defect where playing a sound clip does not work when the default device is selected.
• Various stability improvements and bug fixes.
Release Notes CounterPath Softphone SDK 1.6
Page 11 © 2017 CounterPath Corporation
8 SDK 1.5.4 (April 26, 2016)
8.1 Changes
The following changes apply to all platforms.
• Added support for TLS 1.2 for SIP.
The SDK now supports the ability to establish TLS 1.2 connections for SIP. Applications can:
o set the requested TLS level by adjusting the sslVersion member of the SipAccountSettings struct.
o also note which TLS version was negotiated by examining the SipTLSConnectionInfo struct returned
in SipAccountStatusChangedEvent.
For examples, please refer to the Advanced audio call sample application on iOS, OS X, Android or .net
Windows SDK.
• Updated to use OpenSSL 1.0.1s.
• The minimum requirements have been updated. Refer to the respective Developer Guides for details.
8.2 Desktop Specific Changes
The following changes apply to Desktop platforms (Windows and Mac).
• Added the ability to have the SDK use the default system device.
The SDK now offers the ability to use the default audio device configured in the host operating system. For
usage, please see the in-line comments for kAudioDefaultSystemDeviceId and
kAudioDefaultSystemCommDeviceId. For examples, please refer to the Advanced audio call sample
application bundled with the OS X or .net Windows SDK.
• Introduced a new flag named defaultSystemDevice, which identifies whether a device is the system default.
• Introduced a new flag named inadvisable on the AudioDeviceInfo struct, which identifies audio devices that
are not recommended to be used (for example, a virtual audio device), especially as a device automatically
chosen by the application.
8.3 Windows Specific Changes
• Added the ability to have the SDK use the default communication device.
The SDK now offers the ability to use the default audio device configured in the host operating system. For
usage, please see the in-line comments for kAudioDefaultSystemDeviceId and
kAudioDefaultSystemCommDeviceId. For examples, please refer to the Advanced audio call sample
application bundled with the OS X or .net Windows SDK.
• Introduced a new flag named defaultSystemCommDevice, which identifies whether a device is the default
communication device.
Release Notes CounterPath Softphone SDK 1.6
Page 12 © 2017 CounterPath Corporation
8.4 Android Specific Changes
• Added support for the Android M permission model.
The SDK exposes a new handler class called PermissionsHandler. Apps can implement this handler and
receive notifications from the SDK when permission is required from the user to access a particular resource
(for example, the microphone).
• Added SRTP support in the Android Advanced audio call sample app, to demonstrate how to establish
encrypted calls.
8.5 Resolved Issues
• Various stability improvements and bug fixes.
Release Notes CounterPath Softphone SDK 1.6
Page 13 © 2017 CounterPath Corporation
9 SDK 1.5.3 (Feb 04, 2016)
9.1 New Features
• Added the ability to inspect the value of custom headers in incoming INVITE messages.
• Added a Conversation Call Quality indicator:
o Good
o Fair
o Poor
o Unknown
See page 15 of the CounterPath Softphone SDK Reference Guide for details.
• Added a section in the CounterPath Softphone SDK Android Developer Guide, recommending the use of
fallback domain name servers. (See Fallback Domain Name Servers on page 19, revision 6 of the guide.)
9.2 Changes
• Improved echo cancellation on Windows platforms.
• Improved reliability when sending a file using SDK’s XMPP file transfer API.
• Improved bitrate estimation for VP8 video calls.
• Removed IPv4 specific functions from all code compiled on iOS, in preparation for Apple’s policy change
planned for 2016 mandating support for IPv6.
• Removed support for 32-bit version of OS X SDK.
9.3 Resolved Issues
• Fixed the audio quality issue on Nexus 6P devices.
• Fixed an issue on Android where the SDK would release the active Bluetooth audio device if the VoIP call
ended but a native call was still active.
• Fixed a DNS-related crash issue.
• Various stability improvements.
Release Notes CounterPath Softphone SDK 1.6
Page 14 © 2017 CounterPath Corporation
10 SDK 1.5.2 (Nov 18, 2015)
10.1 New Features
• Added support for certificate pinning. See the Certificate Pinning section.
• Addition of GSM codec.
• Full IPv6 support.
• Support for applications targeting Android API level 23 (Marshmallow).
• Added the ability to specify custom RTP payload types.
10.2 Changes
• Added conversation end reason of ConversationEndReason_CallAnsweredElsewhere.
• Improvements in H.264 interoperability.
• Performance enhancements for account initialization.
• Updated all Android samples to target API level 23.
• Updated to OpenSSL 1.0.1p.
10.3 Certificate Pinning
CounterPath has exposed the necessary interfaces to allow applications to implement certificate pinning for SIP
over TLS or XMPP. Pinning is a process that associates a host with their expected X509 certificate or public key.
In the account settings class for either SIP or XMPP, two new entries have been added: acceptedCertPublicKeys
and requiredCertPublicKeys. The in-line comments in the API describe how these entries are used by the SDK.
The two modes are using:
o acceptedCertPublicKeys so any certificate presented to you is accepted as long as the public key that is
set in the settings of the SDK matches. The SDK will accept it, even if it is unsigned, for example.
acceptedCertPublicKeys provides flexibility in dealing with certificate issues.
o requiredCertPublicKeys which provide the benefit of extra security.
Release Notes CounterPath Softphone SDK 1.6
Page 15 © 2017 CounterPath Corporation
10.4 Resolved Issues
• Fixed an issue where calling the destroy method on SipAccount in the Android SDK might cause a crash.
• Fixed crashes with the playSound(..) method on Android.
• Fixed for no audio during calls if account registered with useRegistar setting off.
• Fixed AudioStatistics.averageJitterMs always having a value of 0.
• When VAD is enabled, and there is no voice, the SDK will now force send a few RTP packets at the start of a
call, instead of sending RTP keep-alives.
• Reduced memory usage during VP8 video calls (notably for mobile SDKs).
• Various stability improvements.
Release Notes CounterPath Softphone SDK 1.6
Page 16 © 2017 CounterPath Corporation
11 SDK 1.5.1 (Sept 10, 2015)
11.1 New Features
• Support for H.264 packetization mode 1 for all platforms.
• NACK support (RFC 4585) for video for all platforms.
11.2 Resolved Issues
• Improvements in H.264 video quality for all platforms.
• Fixed an issue for all platforms that could result in outgoing packet loss for RTP, the real-time transport
protocol.
• Fixed issues for Android Bluetooth®.
• Fixed crashes on Android devices with Intel® chipsets: Dell Venue 8 and Samsung Galaxy Tab 3, 10.1.
• Fixed an issue on Windows and Mac where audio could be lost for an active call if a headset was unplugged
and then plugged back in.
• Various stability improvements for all platforms.
Release Notes CounterPath Softphone SDK 1.6
Page 17 © 2017 CounterPath Corporation
12 SDK 1.5 (Aug 10, 2015)
12.1 New Features
• New XMPP functionality has been exposed in the SDK. Please refer to the SDK Reference Guide for example
diagrams. Additionally, there are sample clients on all platforms that demonstrate these new features.
o + XMPP file transfer
o + XMPP multi user chat
o + XMPP Vcard
• Addition of support for Voice Quality Monitoring metrics
• Addition of HTML API documents for the C# SDK
• Support for HD resolution VP8 video on mobile platforms
• Adaptive bitrate support for the OPUS audio codec
• Addition of VP9 video codec support on desktop platforms
12.2 Resolved Issues
• Improvements have been made in echo cancellation for Android SIP calls.
• Fixed VP8 video codec crashes on various Android devices.
• Fixed an issue where, when registering against some Avaya IP office systems or Cisco CUCM systems with
rport enabled in the SDK, calls could not be received by the SDK.
• Various stability improvements
12.3 Changes
• Licensing callback no longer occur on the account interface. Instead, SDK applications must listen to events
on PhoneErrorHandler.
• For the C++ edition SDK, and .net edition SDK, the application must call process(..) on the Phone interface.
• Minimum version supported for Android SDK is now Android 4.1 (Jelly Bean, API level 16)
• Android Bluetooth support in the SDK is experimental. Please see the Android Specific Changes section for
more information.
12.4 Windows Specific Changes
• The SDK now requires the Visual C++ 2013 redistributable package to be installed for runtime. The Visual
C++ 2012 redistributable package is no longer required.
Release Notes CounterPath Softphone SDK 1.6
Page 18 © 2017 CounterPath Corporation
12.5 Android Specific Changes
• The SDK no longer offers a choice between using AudioTrack/JNI and OpenSL for the active audio layer. As
such, setting MediaStackSettings to use OpenSL or AndroidJni is deprecated and has no effect.
• Adjusting media stack settings to set the audio source or use low latency mode has been deprecated; use
SipAudioAndroid's setAudioSource(..) and setLowLatencyAudioPlayoutByDevice(..) respectively.
• setEchoCancellationMode(..) on SipAudio does not need to be called; by default, the SDK will attempt to use
the device's built in hardware AEC if available; otherwise it will fall back to a software AEC implementation.
• A new method on SipAudioAndroid has been added, setHardwareEchoCancellationByDevice(..), which
allows force disabling of hardware based AEC, and use of software based AEC instead. This method can be
used to disable hardware AEC on devices where testing has shown that software AEC performs better
• Android Bluetooth support in the SDK is experimental. Android's Bluetooth system undergoes frequent
changes which may create new issues when upgrading a device. Devices also ship their own Bluetooth
hardware driver (and sometimes Bluetooth stacks) which can cause issues. Although Bluetooth support is
generic and should work with any Android phone and Bluetooth headset combination, we have only tested a
small set of possible devices. Basic features such as incoming/outgoing calls and switching to/from Bluetooth
headset to speaker/earpiece are support while advanced features such as switching between multiple
Bluetooth devices isn't supported in the SDK and must be done in app or using the system settings UI. Please
report any issues you encounter.
o To enable Bluetooth, the permission "android.permission.BLUETOOTH" must be added to the app's
manifest. In addition, devices running Android 4.0 or 4.1 require the permission
"android.permission.BROADCAST_STICKY".
o Attempting to use a Bluetooth device on the Samsung Galaxy S2 may cause the audio driver to
freeze. A device reboot may be required before the audio hardware can be used again.