Skip to content

Commit e800552

Browse files
authored
Release/3.9.1 (#62)
* 3.9.1 release * updated versions and pod file
1 parent e90a65e commit e800552

File tree

6 files changed

+96
-68
lines changed

6 files changed

+96
-68
lines changed

KitchenSink.xcodeproj/project.pbxproj

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
9C3E5A0424DC3FDD0030855E /* PeopleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C3E5A0324DC3FDD0030855E /* PeopleViewController.swift */; };
5959
9C5E417624DD914B002C95DD /* MessagingPeopleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C5E417524DD914B002C95DD /* MessagingPeopleTests.swift */; };
6060
9C6DE77924F46B610055D500 /* SpaceMembershipViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C6DE76C24F46B610055D500 /* SpaceMembershipViewController.swift */; };
61-
9CB90C0824E72685009D9D75 /* (null) in Sources */ = {isa = PBXBuildFile; };
61+
9CB90C0824E72685009D9D75 /* BuildFile in Sources */ = {isa = PBXBuildFile; };
6262
9CB90C0924E72685009D9D75 /* FilterSpacesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CB90C0724E72685009D9D75 /* FilterSpacesViewController.swift */; };
6363
9D1CCC272657FD3400EB302C /* CallObjectStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D1CCC262657FD3300EB302C /* CallObjectStorage.swift */; };
6464
9D1CCC292657FD4600EB302C /* AuxCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D1CCC282657FD4600EB302C /* AuxCollectionViewCell.swift */; };
@@ -775,9 +775,11 @@
775775
files = (
776776
);
777777
inputFileListPaths = (
778+
"${PODS_ROOT}/Target Support Files/Pods-KitchenSink/Pods-KitchenSink-frameworks-${CONFIGURATION}-input-files.xcfilelist",
778779
);
779780
name = "[CP] Embed Pods Frameworks";
780781
outputFileListPaths = (
782+
"${PODS_ROOT}/Target Support Files/Pods-KitchenSink/Pods-KitchenSink-frameworks-${CONFIGURATION}-output-files.xcfilelist",
781783
);
782784
runOnlyForDeploymentPostprocessing = 0;
783785
shellPath = /bin/sh;
@@ -978,7 +980,7 @@
978980
9DDC82DC24AA36A300F06E31 /* ContactTableViewCell.swift in Sources */,
979981
1FDC6E2B298159B10054EC1B /* UIApplication+Extenstion.swift in Sources */,
980982
90F9B00B24B79FB200447A9D /* TeamsViewController.swift in Sources */,
981-
9CB90C0824E72685009D9D75 /* (null) in Sources */,
983+
9CB90C0824E72685009D9D75 /* BuildFile in Sources */,
982984
9C6DE77924F46B610055D500 /* SpaceMembershipViewController.swift in Sources */,
983985
9D3701A924ABDD43004E480E /* ImageExtension.swift in Sources */,
984986
4F326C8928EB073100EA57D9 /* PasswordCaptchaView.swift in Sources */,
@@ -1287,7 +1289,7 @@
12871289
CODE_SIGN_ENTITLEMENTS = KitchenSinkBroadcastExtension/KitchenSinkBroadcastExtension.entitlements;
12881290
CODE_SIGN_IDENTITY = "Apple Development";
12891291
CODE_SIGN_STYLE = Automatic;
1290-
CURRENT_PROJECT_VERSION = 29;
1292+
CURRENT_PROJECT_VERSION = 3910;
12911293
DEVELOPMENT_TEAM = 9X38D433RE;
12921294
ENABLE_BITCODE = NO;
12931295
FRAMEWORK_SEARCH_PATHS = (
@@ -1308,7 +1310,7 @@
13081310
"@executable_path/Frameworks",
13091311
"@executable_path/../../Frameworks",
13101312
);
1311-
MARKETING_VERSION = 3.9.0;
1313+
MARKETING_VERSION = 3.9.1;
13121314
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
13131315
MTL_FAST_MATH = YES;
13141316
PRODUCT_BUNDLE_IDENTIFIER = com.webex.sdk.KitchenSinkv3.0.KitchenSinkBroadcastExtension;
@@ -1342,7 +1344,7 @@
13421344
CODE_SIGN_ENTITLEMENTS = KitchenSinkBroadcastExtension/KitchenSinkBroadcastExtension.entitlements;
13431345
CODE_SIGN_IDENTITY = "Apple Development";
13441346
CODE_SIGN_STYLE = Automatic;
1345-
CURRENT_PROJECT_VERSION = 29;
1347+
CURRENT_PROJECT_VERSION = 3910;
13461348
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
13471349
DEVELOPMENT_TEAM = 9X38D433RE;
13481350
ENABLE_BITCODE = NO;
@@ -1360,7 +1362,7 @@
13601362
"@executable_path/Frameworks",
13611363
"@executable_path/../../Frameworks",
13621364
);
1363-
MARKETING_VERSION = 3.9.0;
1365+
MARKETING_VERSION = 3.9.1;
13641366
MTL_FAST_MATH = YES;
13651367
PRODUCT_BUNDLE_IDENTIFIER = com.webex.sdk.KitchenSinkv3.0.KitchenSinkBroadcastExtension;
13661368
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -1396,7 +1398,7 @@
13961398
CODE_SIGN_ENTITLEMENTS = KitchenSink/KitchenSink.entitlements;
13971399
CODE_SIGN_IDENTITY = "Apple Development";
13981400
CODE_SIGN_STYLE = Automatic;
1399-
CURRENT_PROJECT_VERSION = 3903;
1401+
CURRENT_PROJECT_VERSION = 3910;
14001402
DEVELOPMENT_TEAM = 9X38D433RE;
14011403
ENABLE_BITCODE = NO;
14021404
FRAMEWORK_SEARCH_PATHS = (
@@ -1418,7 +1420,7 @@
14181420
"@executable_path/Frameworks",
14191421
executable_path/Frameworks,
14201422
);
1421-
MARKETING_VERSION = 3.9.0;
1423+
MARKETING_VERSION = 3.9.1;
14221424
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
14231425
MTL_FAST_MATH = YES;
14241426
PRODUCT_BUNDLE_IDENTIFIER = com.webex.sdk.KitchenSinkv3.0;
@@ -1454,7 +1456,7 @@
14541456
CODE_SIGN_ENTITLEMENTS = KitchenSink/KitchenSink.entitlements;
14551457
CODE_SIGN_IDENTITY = "Apple Development";
14561458
CODE_SIGN_STYLE = Automatic;
1457-
CURRENT_PROJECT_VERSION = 3903;
1459+
CURRENT_PROJECT_VERSION = 3910;
14581460
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
14591461
DEVELOPMENT_TEAM = 9X38D433RE;
14601462
ENABLE_BITCODE = NO;
@@ -1473,7 +1475,7 @@
14731475
"@executable_path/Frameworks",
14741476
executable_path/Frameworks,
14751477
);
1476-
MARKETING_VERSION = 3.9.0;
1478+
MARKETING_VERSION = 3.9.1;
14771479
MTL_FAST_MATH = YES;
14781480
PRODUCT_BUNDLE_IDENTIFIER = com.webex.sdk.KitchenSinkv3.0;
14791481
PRODUCT_NAME = "$(TARGET_NAME)";

KitchenSink/Controllers/CallViewController.swift

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class CallViewController: UIViewController, MultiStreamObserver, UICollectionVie
4141
var captcha: Phone.Captcha?
4242
var captchaVerifyCode: String = ""
4343
var isCUCMOrWxcCall = false
44+
var mergedCall = false
4445
private var isNoiseDetectedAlertShown = false
4546
private let virtualBackgroundCell = "VirtualBackgroundCell"
4647
private var backgroundItems: [Phone.VirtualBackground] = []
@@ -410,7 +411,7 @@ class CallViewController: UIViewController, MultiStreamObserver, UICollectionVie
410411
self.webexCallStatesProcess(call: call)
411412
}
412413
}
413-
414+
414415
let tap = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:)))
415416
self.remoteVideoView.isUserInteractionEnabled = true
416417
remoteVideoView.addGestureRecognizer(tap)
@@ -620,6 +621,10 @@ class CallViewController: UIViewController, MultiStreamObserver, UICollectionVie
620621
}
621622

622623
func checkOtherActiveWxcCall() {
624+
if mergedCall {
625+
swapCallButton.isHidden = true
626+
return
627+
}
623628
let otherCall = getOtherActiveWxcCall()
624629
if let otherCall = otherCall {
625630
swapCallButton.setTitle(otherCall.title, for: .normal)
@@ -708,7 +713,7 @@ class CallViewController: UIViewController, MultiStreamObserver, UICollectionVie
708713
return
709714
}
710715

711-
call.enableReceivingNoiseRemoval(shouldEnable: !receivingNoiseInfo.isNoiseRemovalEnabled) { result in
716+
call.enableReceivingNoiseRemoval(shouldEnable: !receivingNoiseInfo.isNoiseRemovalEnabled) { [weak self] result in
712717
switch result {
713718
case .NoError:
714719
print("enable/disable ReceivingNoiseRemoval success")
@@ -717,6 +722,7 @@ class CallViewController: UIViewController, MultiStreamObserver, UICollectionVie
717722
case .InternalError:
718723
print("InternalError")
719724
}
725+
self?.updateNoiseRemovalState()
720726
}
721727
}
722728

@@ -744,8 +750,9 @@ class CallViewController: UIViewController, MultiStreamObserver, UICollectionVie
744750
self.present(alert, animated: true)
745751
return
746752
}
747-
call.mergeCall(targetCallId: currentCallId ?? "")
748-
self.navigationController?.popToRootViewController(animated: true)
753+
print("Merge call old: \(oldCallId), new: \(currentCallId)")
754+
mergedCall = true
755+
self.call?.mergeCall(targetCallId: oldCallId)
749756
}
750757

751758
@objc private func handleMuteCallAction(_ sender: UIButton) {
@@ -777,8 +784,9 @@ class CallViewController: UIViewController, MultiStreamObserver, UICollectionVie
777784
self.present(alert, animated: true)
778785
return
779786
}
787+
print("Transfer call old: \(oldCallId), new: \(currentCallId)")
780788
call.transferCall(toCallId: currentCallId ?? "")
781-
self.presentingViewController?.presentingViewController?.dismiss(animated: true, completion: nil)
789+
self.dismiss(animated: true, completion: nil)
782790
}
783791

784792
@objc private func handleToggleVideoCallAction(_ sender: UIButton) {
@@ -1492,6 +1500,7 @@ class CallViewController: UIViewController, MultiStreamObserver, UICollectionVie
14921500

14931501
call.onConnected = { [weak self] in
14941502
guard let self = self else { return }
1503+
print("onConnected Call object : + \(call.callId ?? "") , correlationId : \(call.correlationId ?? "") , externalTrackingId: + \(call.externalTrackingId ?? "")")
14951504
self.player.stop()
14961505
if self.call?.onMediaChanged != nil {
14971506
self.badNetworkIcon.isHidden = false
@@ -1508,6 +1517,12 @@ class CallViewController: UIViewController, MultiStreamObserver, UICollectionVie
15081517
self.mergeCallButton.isHidden = false
15091518
self.transferCallButton.isHidden = false
15101519
}
1520+
if self.mergedCall {
1521+
self.addCallButton.isHidden = false
1522+
self.toggleVideoButton.isHidden = false
1523+
self.mergeCallButton.isHidden = true
1524+
self.transferCallButton.isHidden = true
1525+
}
15111526
}
15121527
print("isVideoEnabled: \(call.isVideoEnabled)")
15131528
self.updateStates(callInfo: call)
@@ -1634,7 +1649,7 @@ class CallViewController: UIViewController, MultiStreamObserver, UICollectionVie
16341649
}
16351650

16361651
call.onFailed = { reason in
1637-
print("Call Failed!")
1652+
print("Call Failed! \(reason)")
16381653
self.player.stop()
16391654
let otherCall = self.getOtherActiveWxcCall()
16401655
if let otherCall = otherCall {
@@ -1942,6 +1957,7 @@ class CallViewController: UIViewController, MultiStreamObserver, UICollectionVie
19421957
showAlert.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in
19431958
call.enableReceivingNoiseRemoval(shouldEnable: true) { result in
19441959
print("noise removed")
1960+
strongSelf.updateNoiseRemovalState()
19451961
}
19461962
}))
19471963

KitchenSink/Controllers/HomeViewController.swift

Lines changed: 42 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -508,43 +508,49 @@ extension WebexSDK.Person {
508508
}
509509

510510
extension HomeViewController {
511-
func deviceRegistration() {
512-
webex.people.getMe(completionHandler: { result in
513-
guard let person = result.data, let personId = person.id, let emails = person.emails, let emailId = emails.first?.toString() else {
514-
print("Unable to register User for Push notifications with webhook handling server because of missing emailId or person details")
515-
return
516-
}
517-
518-
let Url = String(format: "https://fierce-forest-67615.herokuapp.com/register")
519-
guard let serviceUrl = URL(string: Url), let token = token, let voipToken = voipToken else { return }
520-
let parameters: [String: Any] = [
521-
"voipToken": voipToken,
522-
"msgToken": token,
523-
"email": emailId,
524-
"personId": personId
525-
]
526-
guard let path = Bundle.main.path(forResource: "Secrets", ofType: "plist") else { return }
527-
guard let keys = NSDictionary(contentsOfFile: path) else { return }
528-
let bundleId = keys["bundleId"] as? String ?? ""
511+
func deviceRegistration() {
512+
webex.people.getMe(completionHandler: { result in
513+
guard let person = result.data, let personId = person.encodedId else {
514+
print("Unable to register User for Push notifications with webhook handling server because of missing emailId or person details")
515+
return
516+
}
517+
guard let path = Bundle.main.path(forResource: "Secrets", ofType: "plist") else { return }
518+
guard let keys = NSDictionary(contentsOfFile: path) else { return }
519+
guard let token = token, let voipToken = voipToken else { return }
529520

530-
webex.phone.setPushTokens(bundleId: bundleId, deviceId: UIDevice.current.identifierForVendor?.uuidString ?? "", deviceToken: token, voipToken: voipToken)
521+
if let urlString = keys["registerationUrl"] as? String {
522+
guard let serviceUrl = URL(string: urlString) else { print("Invalid URL"); return }
531523

532-
var request = URLRequest(url: serviceUrl)
533-
request.httpMethod = "POST"
534-
request.setValue("Application/json", forHTTPHeaderField: "Content-Type")
535-
guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else {
536-
return
537-
}
538-
request.httpBody = httpBody
539-
request.timeoutInterval = 20
540-
let session = URLSession.shared
541-
session.dataTask(with: request) { (data, response, error) in
542-
if let response = response {
543-
print("DEVICE REGISTRATION: \(response)")
544-
}
545-
}.resume()
546-
})
547-
}
524+
let parameters: [String: Any] = [
525+
"voipToken": voipToken,
526+
"deviceToken": token,
527+
"pushProvider": "APNS",
528+
"userId": personId,
529+
"prod": false
530+
]
531+
var request = URLRequest(url: serviceUrl)
532+
request.httpMethod = "POST"
533+
request.setValue("Application/json", forHTTPHeaderField: "Content-Type")
534+
guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else {
535+
return
536+
}
537+
request.httpBody = httpBody
538+
request.timeoutInterval = 20
539+
let session = URLSession.shared
540+
session.dataTask(with: request) { (data, response, error) in
541+
if let response = response {
542+
print("DEVICE REGISTRATION: \(response)")
543+
}
544+
}.resume()
545+
}
546+
else {
547+
let bundleId = keys["bundleId"] as? String ?? ""
548+
549+
webex.phone.setPushTokens(bundleId: bundleId, deviceId: UIDevice.current.identifierForVendor?.uuidString ?? "", deviceToken: token, voipToken: voipToken)
550+
return
551+
}
552+
})
553+
}
548554

549555
func addCustomBackground() {
550556
let fileName = "Background"
@@ -579,7 +585,7 @@ extension HomeViewController {
579585
extension HomeViewController { // waiting call related code
580586
func setIncomingCallListener() {
581587
webex.phone.onIncoming = { call in
582-
print("onIncoming Call object : " + (call.callId ?? "") + " , " + " correlationId : " + (call.correlationId ?? ""))
588+
print("onIncoming Call object : + \(call.callId ?? "") , correlationId : \(call.correlationId ?? "") , externalTrackingId: + \(call.externalTrackingId ?? "")")
583589
CallObjectStorage.self.shared.addCallObject(call: call)
584590
call.onScheduleChanged = { c in
585591
self.getUpdatedSchedule(call: c)

KitchenSink/Controllers/InitiateCall/SubTabs/DialCallViewController.swift

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,9 +161,17 @@ class DialCallViewController: UIViewController, DialPadViewDelegate, UITextField
161161
}
162162
CallObjectStorage.self.shared.addCallObject(call: call)
163163

164-
let callVC = CallViewController(space: space, addedCall: true, currentCallId: call.callId ?? "", oldCallId: oldCallId, call: call)
164+
// CallViewController is already open
165165
DispatchQueue.main.async {
166-
self?.present(callVC, animated: true)
166+
if let callVC = self?.presentingViewController as? CallViewController {
167+
print("Associated calll old: \(oldCallId), new: \(String(describing: call.callId))")
168+
callVC.currentCallId = call.callId
169+
callVC.addedCall = true
170+
callVC.oldCallId = oldCallId
171+
callVC.call = call
172+
callVC.viewDidLoad()
173+
self?.dismiss(animated: true)
174+
}
167175
}
168176
case .failure(let error):
169177
let alert = UIAlertController(title: "Error", message: "\(error)", preferredStyle: .alert)

KitchenSink/Controllers/LoginViewController.swift

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -182,15 +182,11 @@ class LoginViewController: UIViewController {
182182
}
183183

184184
func switchRootController() {
185-
// showLoadingIndicator("syncing spaces")
186-
// webex.onInitialSpacesSyncCompleted = {
187-
// self.dismissLoadingIndicator()
188-
DispatchQueue.main.async {
189-
guard let window = self.keyWindow else { return }
190-
window.rootViewController = UINavigationController(rootViewController: HomeViewController())
191-
window.makeKeyAndVisible()
192-
}
193-
// }
185+
DispatchQueue.main.async {
186+
guard let window = self.keyWindow else { return }
187+
window.rootViewController = UINavigationController(rootViewController: HomeViewController())
188+
window.makeKeyAndVisible()
189+
}
194190
}
195191

196192
private func handleNotificationRoutingIfNeeded() {
@@ -222,7 +218,7 @@ class LoginViewController: UIViewController {
222218
// The scope parameter can be a space separated list of scopes that you want your access token to possess
223219
let authenticator = OAuthAuthenticator(clientId: clientId, clientSecret: clientSecret, scope: scopes, redirectUri: redirectUri, emailId: email.toString(), isFedRAMPEnvironment: isFedRAMPMode)
224220
webex = Webex(authenticator: authenticator)
225-
self.initializeWebex(showLoading: true)
221+
self.initializeWebex()
226222
completion?(true)
227223
return
228224
}

Podfile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ target 'KitchenSink' do
88
use_frameworks!
99

1010
# Pods for KitchenSink
11-
pod 'WebexSDK','~> 3.9.0'
12-
# pod 'WebexSDK/Meeting','~> 3.9.0' # Uncomment this line and comment the above line for Meeting-only SDK
13-
# pod 'WebexSDK/Wxc','~> 3.9.0' # Uncomment this line and comment the above line for Calling-only SDK
11+
pod 'WebexSDK','~> 3.9.1'
12+
# pod 'WebexSDK/Meeting','~> 3.9.1' # Uncomment this line and comment the above line for Meeting-only SDK
13+
# pod 'WebexSDK/Wxc','~> 3.9.1' # Uncomment this line and comment the above line for Calling-only SDK
1414

1515

1616
target 'KitchenSinkUITests' do
@@ -24,6 +24,6 @@ target 'KitchenSinkBroadcastExtension' do
2424
use_frameworks!
2525

2626
# Pods for KitchenSinkBroadcastExtension
27-
pod 'WebexBroadcastExtensionKit','~> 3.9.0'
27+
pod 'WebexBroadcastExtensionKit','~> 3.9.1'
2828

2929
end

0 commit comments

Comments
 (0)