Эх сурвалжийг харах

update fcm call (not ready)

alqindiirsyam 1 жил өмнө
parent
commit
1ac57d06a6

+ 12 - 0
appbuilder-ios/NexilisLite/NexilisLite/Source/IncomingThread.swift

@@ -185,6 +185,8 @@ class IncomingThread {
             pushGroupNoMembers(message: message)
         } else if message.getCode() == CoreMessage_TMessageCode.INIT_PREFS {
             initPrefs(message: message)
+        } else if message.getCode() == CoreMessage_TMessageCode.NOTIFY_TO_CALLING {
+            notifyCalling(message: message)
         } else {
             //print("unprocessed code", message.getCode())
             ack(message: message)
@@ -197,6 +199,16 @@ class IncomingThread {
     /**
      *
      */
+    private func notifyCalling(message: TMessage) -> Void {
+        let lPin = message.getBody(key: CoreMessage_TMessageKey.L_PIN)
+        if let packetId = message.mBodies[CoreMessage_TMessageKey.PACKET_ID] {
+            _ = Nexilis.responseString(packetId: packetId, message: "00", timeout: 3000)
+        }
+        var dataMessage: [AnyHashable : Any] = [:]
+        dataMessage["l_pin"] = lPin
+        NotificationCenter.default.post(name: NSNotification.Name(rawValue: Nexilis.callFCM), object: nil, userInfo: dataMessage)
+    }
+    
     private func initPrefs(message: TMessage) -> Void {
         let data = message.getBody(key: CoreMessage_TMessageKey.DATA)
         if !data.isEmpty {

+ 1 - 0
appbuilder-ios/NexilisLite/NexilisLite/Source/Nexilis.swift

@@ -66,6 +66,7 @@ public class Nexilis: NSObject {
     public static let listenerStatusChat = "onMessageChatLibLite"
     public static let listenerTypingChat = "onTypingChatLibLite"
     public static let listenerStatusCall = "onStatusCallLibLite"
+    public static let callFCM = "onCallFCM"
     public static var showLibraryNotification = true
     
     public static let STREAMING_SEMINAR_ENDED = 88

+ 10 - 1
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Call/QmeraAudioViewController.swift

@@ -271,6 +271,7 @@ class QmeraAudioViewController: UIViewController {
         
         NotificationCenter.default.addObserver(self, selector: #selector(onStatusCall(_:)), name: NSNotification.Name(rawValue: Nexilis.listenerStatusCall), object: nil)
         NotificationCenter.default.addObserver(self, selector: #selector(onReceiveMessage(notification:)), name: NSNotification.Name(rawValue: Nexilis.listenerReceiveChat), object: nil)
+        NotificationCenter.default.addObserver(self, selector: #selector(onCallFCM(notification:)), name: NSNotification.Name(rawValue: Nexilis.callFCM), object: nil)
         
         if let u = self.user {
             self.users.append(u)
@@ -285,7 +286,6 @@ class QmeraAudioViewController: UIViewController {
                     DispatchQueue.global().async {
                         if let response = Nexilis.writeSync(message: CoreMessage_TMessageBank.getCalling(fPin: u.pin, type: "1"), timeout: 30 * 1000) {
                             if response.isOk() {
-                                
                             } else {
                                 DispatchQueue.main.async {
                                     self.status.text = "Busy"
@@ -317,6 +317,15 @@ class QmeraAudioViewController: UIViewController {
         }
     }
     
+    @objc func onCallFCM(notification: NSNotification) {
+        DispatchQueue.main.async {
+            let data:[AnyHashable : Any] = notification.userInfo!
+            if let l_pin = data["l_pin"] as? String {
+                API.initiateCCall(sParty: l_pin)
+            }
+        }
+    }
+    
     override func viewWillLayoutSubviews() {
         super.viewWillLayoutSubviews()
         end.circle()

+ 20 - 3
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Call/QmeraVideoViewController.swift

@@ -149,6 +149,7 @@ class QmeraVideoViewController: UIViewController {
         
         NotificationCenter.default.addObserver(self, selector: #selector(self.onStatusCall(_:)), name: NSNotification.Name(rawValue: Nexilis.listenerStatusCall), object: nil)
         NotificationCenter.default.addObserver(self, selector: #selector(onReceiveMessage(notification:)), name: NSNotification.Name(rawValue: Nexilis.listenerReceiveChat), object: nil)
+        NotificationCenter.default.addObserver(self, selector: #selector(onCallFCM(notification:)), name: NSNotification.Name(rawValue: Nexilis.callFCM), object: nil)
         
         view.backgroundColor = .clear
         navigationController?.navigationBar.topItem?.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
@@ -375,13 +376,20 @@ class QmeraVideoViewController: UIViewController {
             if ticketId.isEmpty {
                 if callFCM {
                     DispatchQueue.global().async {
-                        if let response = Nexilis.writeSync(message: CoreMessage_TMessageBank.getCalling(fPin: u.pin, type: "1"), timeout: 30 * 1000) {
+                        if let response = Nexilis.writeSync(message: CoreMessage_TMessageBank.getCalling(fPin: self.dataPerson[0]["f_pin"]!!, type: "2"), timeout: 30 * 1000) {
                             if response.isOk() {
                                 
                             } else {
                                 DispatchQueue.main.async {
-                                    self.status.text = "Busy"
-                                    self.end.isEnabled = false
+                                    if self.labelIncomingOutgoing.isDescendant(of: self.view) {
+                                        self.labelIncomingOutgoing.text = "Busy".localized()
+                                    }
+                                    if self.buttonDecline.isDescendant(of: self.view) {
+                                        self.buttonDecline.removeFromSuperview()
+                                    }
+                                    if self.buttonAccept.isDescendant(of: self.view) {
+                                        self.buttonAccept.removeFromSuperview()
+                                    }
                                 }
                             }
                         } else {
@@ -454,6 +462,15 @@ class QmeraVideoViewController: UIViewController {
         }
     }
     
+    @objc func onCallFCM(notification: NSNotification) {
+        DispatchQueue.main.async { [self] in
+            let data:[AnyHashable : Any] = notification.userInfo!
+            if let l_pin = data["l_pin"] as? String {
+                API.initiateCCall(sParty: l_pin, nCamIdx: 1, nResIdx: 2, nVQuality: 4, ivRemoteView: listRemoteViewFix, ivLocalView: cameraView, ivRemoteZ: zoomView)
+            }
+        }
+    }
+    
     @objc func onReceiveMessage(notification: NSNotification) {
         DispatchQueue.main.async {
             let data:[AnyHashable : Any] = notification.userInfo!

+ 7 - 0
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/ContactChatViewController.swift

@@ -183,6 +183,7 @@ class ContactChatViewController: UITableViewController {
         NotificationCenter.default.addObserver(self, selector: #selector(onStatusChat(notification:)), name: NSNotification.Name(rawValue: Nexilis.listenerStatusChat), object: nil)
         NotificationCenter.default.addObserver(self, selector: #selector(onReceiveMessage(notification:)), name: NSNotification.Name(rawValue: Nexilis.listenerReceiveChat), object: nil)
         NotificationCenter.default.addObserver(self, selector: #selector(onReload(notification:)), name: NSNotification.Name(rawValue: "onMember"), object: nil)
+        NotificationCenter.default.addObserver(self, selector: #selector(onReloadTab(notification:)), name: NSNotification.Name(rawValue: "reloadTabChats"), object: nil)
         NotificationCenter.default.addObserver(self, selector: #selector(onReload(notification:)), name: NSNotification.Name(rawValue: "onUpdatePersonInfo"), object: nil)
         
         tableView.tableHeaderView = segment
@@ -274,6 +275,12 @@ class ContactChatViewController: UITableViewController {
         }
     }
     
+    @objc func onReloadTab(notification: NSNotification) {
+        DispatchQueue.main.async {
+            self.getData()
+        }
+    }
+    
     @objc func onReceiveMessage(notification: NSNotification) {
         DispatchQueue.main.async { [self] in
             let data:[AnyHashable : Any] = notification.userInfo!