alqindiirsyam 2 jaren geleden
bovenliggende
commit
0636b03b3e

+ 14 - 14
appbuilder-ios/AppBuilder/AppBuilder/SecondTabViewController.swift

@@ -321,6 +321,20 @@ class SecondTabViewController: UIViewController, UIScrollViewDelegate, UIGesture
                 }
             }
         })
+        DispatchQueue.global().async {
+            self.getOpenGroups(listGroups: self.groups, completion: { g in
+                DispatchQueue.main.async {
+                    for og in g {
+                        if self.groups.first(where: { $0.id == og.id }) == nil {
+                            self.groups.append(og)
+                        }
+                    }
+                    DispatchQueue.main.async {
+                        self.tableView.reloadData()
+                    }
+                }
+            })
+        }
     }
     
     override func viewWillAppear(_ animated: Bool) {
@@ -440,20 +454,6 @@ class SecondTabViewController: UIViewController, UIScrollViewDelegate, UIGesture
                 DispatchQueue.main.async {
                     self.tableView.reloadData()
                 }
-                DispatchQueue.global().async {
-                    self.getOpenGroups(listGroups: g1, completion: { g in
-                        DispatchQueue.main.async {
-                            for og in g {
-                                if self.groups.first(where: { $0.id == og.id }) == nil {
-                                    self.groups.append(og)
-                                }
-                            }
-                            DispatchQueue.main.async {
-                                self.tableView.reloadData()
-                            }
-                        }
-                    })
-                }
             }
         }
     }

+ 34 - 7
appbuilder-ios/NexilisLite/NexilisLite/Source/Nexilis.swift

@@ -114,6 +114,8 @@ public class Nexilis: NSObject {
             Nexilis.dispatch?.wait()
             Nexilis.dispatch = nil
             
+            Nexilis.initiateAudio()
+            
             if(!id.isEmpty && (UserDefaults.standard.string(forKey: "me") == nil)){
                 if let response = Nexilis.writeSync(message: CoreMessage_TMessageBank.getSignUpApi(api: apiKey, p_pin: id), timeout: 30 * 1000){
                     id = response.getBody(key: CoreMessage_TMessageKey.F_PIN, default_value: "")
@@ -420,14 +422,39 @@ public class Nexilis: NSObject {
         }
         return result
     }
+
+    public static func setSpeaker(_ isEnabled: Bool) {
+        do {
+            
+        } catch {
+        }
+    }
+
     
-    public static func turnSpeakerOn(bSpeakerOn: Bool!) {
-//         API.pauseAudio()
-//         API.resumeAudio(bSpeakerOn: bSpeakerOn)
-        if (bSpeakerOn) {
-            API.adjustVolume(fValue: 10.0)
-        } else {
-            API.adjustVolume(fValue: 0.3)
+    public static func initiateAudio() {
+        do {
+            try AVAudioSession.sharedInstance().setPreferredSampleRate(AVAudioSession.sharedInstance().sampleRate)
+        } catch {
+        }
+    }
+    
+    public static func startAudio(isVideo: Bool = true) {
+        do {
+            try AVAudioSession.sharedInstance().setCategory(.playAndRecord, options: .defaultToSpeaker)
+            try AVAudioSession.sharedInstance().setMode(.voiceChat)
+            try AVAudioSession.sharedInstance().overrideOutputAudioPort(isVideo ? .speaker : .none)
+            try AVAudioSession.sharedInstance().setActive(true)
+        } catch {
+        }
+    }
+    
+    public static func stopAudio() {
+        do {
+            try AVAudioSession.sharedInstance().setCategory(.soloAmbient)
+            try AVAudioSession.sharedInstance().setMode(.default)
+            try AVAudioSession.sharedInstance().overrideOutputAudioPort(.none)
+            try AVAudioSession.sharedInstance().setActive(true)
+        } catch {
         }
     }
     

+ 5 - 6
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Call/QmeraAudioViewController.swift

@@ -359,7 +359,7 @@ class QmeraAudioViewController: UIViewController {
         } else {
             UIDevice.current.isProximityMonitoringEnabled = true
         }
-        Nexilis.turnSpeakerOn(bSpeakerOn: isSpeaker)
+        Nexilis.setSpeaker(isSpeaker)
     }
     
     @objc func didInvite(sender: Any?) {
@@ -394,10 +394,6 @@ class QmeraAudioViewController: UIViewController {
                 self.end.isEnabled = false
                 self.invite.isEnabled = false
                 self.speaker.isEnabled = false
-                let controller = self.presentedViewController
-                if controller != nil {
-                    controller!.dismiss(animated: true)
-                }
             }
             self.isEndByMe = true
             self.didEnd(sender: nil)
@@ -499,7 +495,7 @@ class QmeraAudioViewController: UIViewController {
                 for i in 0..<Nexilis.shared.callManager.calls.count {
                     Nexilis.shared.callManager.end(call: Nexilis.shared.callManager.calls[i])
                 }
-                DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
+                DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) {
                     self.dismiss(animated: false, completion: nil)
                 }
             } else {
@@ -586,6 +582,9 @@ class QmeraAudioViewController: UIViewController {
                         }
                         self.timer?.fire()
                         self.firstCall = false
+                        DispatchQueue.main.asyncAfter(deadline: .now() + 1, execute: {
+                            API.adjustVolume(fValue: 10.0)
+                        })
                     }
                 }
                 if (!isOutgoing || !firstCall), users.count >= 1, let user = User.getData(pin: String(arrayMessage[1])), !users.contains(user) {

+ 4 - 17
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Call/QmeraVideoViewController.swift

@@ -365,14 +365,7 @@ class QmeraVideoViewController: UIViewController {
         ])
         if isInisiator {
             labelIncomingOutgoing.text = "Outgoing video call".localized() + "..."
-            if AVAudioSession.sharedInstance().category == .playAndRecord {
-                do {
-                    try AVAudioSession.sharedInstance().setCategory(.soloAmbient)
-        //            try AVAudioSession.sharedInstance().setMode(.default)
-        //            try AVAudioSession.sharedInstance().overrideOutputAudioPort(.none)
-                } catch {
-                }
-            }
+            Nexilis.startAudio()
             API.initiateCCall(sParty: dataPerson[0]["f_pin"]!, nCamIdx: 1, nResIdx: 2, nVQuality: 4, ivRemoteView: listRemoteViewFix, ivLocalView: cameraView, ivRemoteZ: zoomView)
         } else {
             let systemSoundID: SystemSoundID = 1254
@@ -544,14 +537,7 @@ class QmeraVideoViewController: UIViewController {
             } else if goVideoCall == -1 {
                 return
             }
-            if AVAudioSession.sharedInstance().category == .playAndRecord {
-                do {
-                    try AVAudioSession.sharedInstance().setCategory(.soloAmbient)
-        //            try AVAudioSession.sharedInstance().setMode(.default)
-        //            try AVAudioSession.sharedInstance().overrideOutputAudioPort(.none)
-                } catch {
-                }
-            }
+            Nexilis.startAudio()
             API.receiveCCall(sParty: dataPerson[0]["f_pin"]!, nCamIdx: 1, nResIdx: 2, nVQuality: 4, ivRemoteView: listRemoteViewFix, ivLocalView: cameraView,ivRemoteZ: zoomView)
         }
         DispatchQueue.main.async {
@@ -582,6 +568,7 @@ class QmeraVideoViewController: UIViewController {
                     self.labelTimerVC.text = format
                 }
                 self.vcTimer.fire()
+                API.adjustVolume(fValue: 10.0)
             }
         }
     }
@@ -820,7 +807,7 @@ class QmeraVideoViewController: UIViewController {
             }
             self.isSpeaker = isSpeaker
         }
-        Nexilis.turnSpeakerOn(bSpeakerOn: isSpeaker)
+        Nexilis.setSpeaker(isSpeaker)
     }
     
     @objc func didTapSpeakerButton(sender: AnyObject){

+ 14 - 28
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/ContactChatViewController.swift

@@ -188,6 +188,20 @@ class ContactChatViewController: UITableViewController {
             self.navigationController?.navigationBar.topItem?.title = "Start Conversation".localized()
             self.navigationController?.navigationBar.setNeedsLayout()
         }
+        DispatchQueue.global().async {
+            self.getOpenGroups(listGroups: self.groups, completion: { g in
+                DispatchQueue.main.async {
+                    for og in g {
+                        if self.groups.first(where: { $0.id == og.id }) == nil {
+                            self.groups.append(og)
+                        }
+                    }
+                    DispatchQueue.main.async {
+                        self.tableView.reloadData()
+                    }
+                }
+            })
+        }
     }
     
 //    func removeAllData() {
@@ -229,22 +243,6 @@ class ContactChatViewController: UITableViewController {
     
     @objc func segmentChanged(sender: Any) {
         filterContentForSearchText(searchController.searchBar.text!)
-        if segment.selectedSegmentIndex == 2 {
-            self.getGroups { g1 in
-                self.getOpenGroups(listGroups: g1, completion: { g in
-                    self.groups.removeAll()
-                    self.groups.append(contentsOf: g1)
-                    for og in g {
-                        if self.groups.first(where: { $0.id == og.id }) == nil {
-                            self.groups.append(og)
-                        }
-                    }
-                    DispatchQueue.main.async {
-                        self.tableView.reloadData()
-                    }
-                })
-            }
-        }
     }
     
     // MARK: - Data source
@@ -258,18 +256,6 @@ class ContactChatViewController: UITableViewController {
                     DispatchQueue.main.async {
                         self.tableView.reloadData()
                     }
-                    DispatchQueue.global().async {
-                        self.getOpenGroups(listGroups: g1, completion: { g in
-                            for og in g {
-                                if self.groups.first(where: { $0.id == og.id }) == nil {
-                                    self.groups.append(og)
-                                }
-                            }
-                            DispatchQueue.main.async {
-                                self.tableView.reloadData()
-                            }
-                        })
-                    }
                 }
             }
         }