-
Notifications
You must be signed in to change notification settings - Fork 0
MigrationGuide from 1.7.x to 2.0.0
This guide will introduce you to the changes made to the BandyerSDK in version 2.0. There are some breaking change you must take into account in order to use the 2.0 version of the SDK if you are still using a 1.x version.
- Minimum deployment target
- Consistent naming convention
- Deprecations
- Call and Chat clients
- Call intents
- User info fetcher
- Call banner controller delegate
- Channel view controller
The BandyerSDK minimum deployment target has been raised from iOS 9.0 to iOS 10.0. We dropped support for devices running iOS 9.0.
Starting from 2.0 version all types will follow a consistent naming convention. Any type provided by the BandyerSDK is now prefixed with the BDK prefix. If you are using the BandyerSDK in a "Swift" project you must update all references to BandyerSDK types removing any prefix, whereas if you are using the BandyerSDK in an "Objective-c" project you must update all references to BandyerSDK types using the BDK prefix instead of the old ones.
For example, the call client protocol was called BCXCallClient
in version 1.7.3, now it has been renamed to BDKCallClient
. As mentioned above, "Objective-c" code referencing the BCXCallClient
must be updated referencing BDKCallClient
type instead, whereas "Swift" code must be updated referencing CallClient
instead.
The following snippet shows you how your "Swift" code should be changed referencing the new types instead of the old ones.
extension ContactsViewController: BCXCallClientObserver {
...
public func callClientDidStart(_ client: BCXCallClient) {
// Do something when client starts
}
...
}
BCXCallClientObserver
conformance using the BandyerSDK 1.7 version
extension ContactsViewController: CallClientObserver {
...
public func callClientDidStart(_ client: CallClient) {
// Do something when client starts
}
...
BDKCallClientObserver
conformance using the BandyerSDK 2.0 version
The following snippet shows you how your "Objective-c" code should be changed referencing the new types instead of the old ones.
@interface ContactsViewController () <BCXCallClientObserver>
@end
@implementation ContactsViewController
...
- (void)callClientDidStart:(id <BCXCallClient>)client
{
// Do something when client starts
}
...
@end
BCXCallClientObserver
conformance using the BandyerSDK 1.7 version
@interface ContactsViewController () <BDKCallClientObserver>
@end
@implementation ContactsViewController
...
- (void)callClientDidStart:(id <BDKCallClient>)client
{
// Do something when client starts
}
...
@end
BDKCallClientObserver
conformance using the BandyerSDK 2.0 version
All deprecated types, methods and properties have been removed from 2.0 version. So if you were using one of deprecated method or type, you must update your code using the new APIs.
Starting from 2.0 version the start
methods of the call and chat clients have been changed removing the userAlias parameter. Now both start
methods take no parameters but there's a catch, you must open an user session before calling start on any client. The BandyerSDK singleton instance gained two new methods openSession(userId:)
and closeSession()
that must be called when an user is logged in and when an user is logged out of your application respectively. You MUST call openSession(userId:)
([openSessionWithUserId:]
in Objective-c) before starting any client otherwise the client will fail starting.
As a side note, the closeSession()
([closeSession]
in Objective-c) method will stop any running client.
The old BDKMakeOutgoingCallIntent
and BDKIncomingCallHandlingIntent
have been renamed and updated.
The BDKMakeOutgoingCallIntent
has been renamed to StartOutgoingCallIntent
and all its initializers have been updated taking a CallOptions
object as parameter.
The BDKIncomingCallHandlingIntent
has been renamed to HandleIncomingCallIntent
and its initializer takes a mandatory call object as parameter.
Take a look at our making an outgoing call guide and at our receiving an incoming call guide for some detailed examples of how the two intents now look like.
The old BDKUserInfoFetcher
protocol and its related BDKUserDisplayItem
type have changed and updated with the goal of moving towards a consistent API between all Bandyer supported platforms.
The BDKUserDisplayItem
has been renamed to UserDetails
. UserDetails
objects are now immutable and cannot be modified once created. The UserDetails
class exposes a lot of convenience initializers useful for creating an object with all the user details your app can provide.
The BDKUserInfoFetcher
protocol has been renamed to UserDetailsProvider
. It has lost conformance to the NSCopying
and the NSObjectProtocol
protocols. The old BCXHandleProvider
protocol has been merged in the UserDetailsProvider
protocol.
Take a look at our customizing user information guide for some detailed examples of how the UserDetailsProvider
now looks like.
The CallBannerControllerDelegate
protocol methods have changed signature. You must update your object conforming to this protocol with the new methods signatures. Here's a snippet showing you how they changed:
extension ViewController: CallBannerControllerDelegate {
func callBannerController(_ controller: CallBannerController, didTouch banner: CallBannerView) {
}
func callBannerController(_ controller: CallBannerController, willShow banner: CallBannerView) {
}
func callBannerController(_ controller: CallBannerController, willHide banner: CallBannerView) {
}
}
CallBannerDelegate
conformance in BandyerSDK 1.7 version
Becomes:
extension ViewController: CallBannerControllerDelegate {
func callBannerControllerDidTouchBanner(_ controller: CallBannerController) {
}
func callBannerControllerWillShowBanner(_ controller: CallBannerController) {
}
func callBannerControllerWillHideBanner(_ controller: CallBannerController) {
}
}
CallBannerDelegate
conformance in BandyerSDK 2.0 version
- (void)callBannerController:(BDKCallBannerController *_Nonnull)controller willHide:(BDKCallBannerView *_Nonnull)banner
{
}
- (void)callBannerController:(BDKCallBannerController *_Nonnull)controller willShow:(BDKCallBannerView *_Nonnull)banner
{
}
- (void)callBannerController:(BDKCallBannerController *_Nonnull)controller didTouch:(BDKCallBannerView *_Nonnull)banner
{
}
CallBannerDelegate
conformance in BandyerSDK 1.7 version
Becomes:
- (void)callBannerControllerWillHideBanner:(BDKCallBannerController *)controller
{
}
- (void)callBannerControllerWillShowBanner:(BDKCallBannerController *)controller
{
}
- (void)callBannerControllerDidTouchBanner:(BDKCallBannerController *)controller
{
}
CallBannerDelegate
conformance in BandyerSDK 2.0 version
The ChannelViewController
does not show the call banner anymore. The ChannelViewControllerDelegate
has been updated removing methods related to in-app notifications and the call banner from its signature. Here's a snippet showing you how it changed:
extension ViewController: ChannelViewControllerDelegate {
func channelViewControllerDidFinish(_ controller: ChannelViewController) {
}
func channelViewController(_ controller: ChannelViewController, didTouch notification: ChatNotification) {
}
func channelViewController(_ controller: ChannelViewController, didTouch banner: CallBannerView) {
}
func channelViewController(_ controller: ChannelViewController, willHide banner: CallBannerView) {
}
func channelViewController(_ controller: ChannelViewController, willShow banner: CallBannerView) {
}
func channelViewController(_ controller: ChannelViewController, didTapAudioCallWith users: [String]) {
}
func channelViewController(_ controller: ChannelViewController, didTapVideoCallWith users: [String]) {
}
}
ChannelViewControllerDelegate
conformance in BandyerSDK 1.7 version
Becomes:
extension ContactsViewController: ChannelViewControllerDelegate {
func channelViewControllerDidFinish(_ controller: ChannelViewController) {
}
func channelViewController(_ controller: ChannelViewController, didTapAudioCallWith users: [String]) {
}
func channelViewController(_ controller: ChannelViewController, didTapVideoCallWith users: [String]) {
}
}
ChannelViewControllerDelegate
conformance in BandyerSDK 2.0 version
- (void)channelViewControllerDidFinish:(BCHChannelViewController *)controller
{
}
- (void)channelViewController:(BCHChannelViewController *)controller didTapAudioCallWith:(NSArray *)users
{
}
- (void)channelViewController:(BCHChannelViewController *)controller didTapVideoCallWith:(NSArray *)users
{
}
- (void)channelViewController:(BCHChannelViewController *)controller willHide:(BDKCallBannerView *)banner
{
}
- (void)channelViewController:(BCHChannelViewController *)controller willShow:(BDKCallBannerView *)banner
{
}
- (void)channelViewController:(BCHChannelViewController *)controller didTouchBanner:(BDKCallBannerView *)banner
{
}
ChannelViewControllerDelegate
conformance in BandyerSDK 1.7 version
Becomes:
- (void)channelViewControllerDidFinish:(BDKChannelViewController *)controller
{
}
- (void)channelViewController:(BDKChannelViewController *)controller didTapAudioCallWith:(NSArray *)users
{
}
- (void)channelViewController:(BDKChannelViewController *)controller didTapVideoCallWith:(NSArray *)users
{
}
ChannelViewControllerDelegate
conformance in BandyerSDK 2.0 version
Looking for other platforms? Take a look at Android, Flutter, ReactNative, Ionic / Cordova. Anything unclear or inaccurate? Please let us know by submitting an Issue or write us here.