расширение для клавиатуры, показ уведомлений iOS

Если кто-то имеет дело с подобной проблемой дизайна и нуждается в синхронизации изменений на нескольких устройствах Android, я рекомендую проверить Google Cloud Messaging для Android (GCM).

Я работаю над одно решение, в котором изменения, сделанные на одном клиенте, должны распространяться на других клиентов. И я только что реализовал доказательство реализации концепции (server & amp; client), и это работает как прелесть.

В принципе, каждый клиент отправляет изменения дельты на сервер. Например. Идентификатор ресурса ABCD1234 изменился со значения 100 до 99.

Сервер проверяет эти изменения дельты в своей базе данных и либо одобряет изменение (клиент находится в синхронизации), либо обновляет свою базу данных или отклоняет изменение (клиент отсутствует sync).

Если изменение одобрено сервером, сервер затем уведомляет других клиентов (за исключением тех, кто отправил изменение дельты) через GCM и отправляет многоадресное сообщение с тем же дельта-изменением. Клиенты обрабатывают это сообщение и обновляют свою базу данных.

Прохладно, что эти изменения распространяются почти мгновенно !!! если эти устройства подключены к сети. И мне не нужно внедрять какой-либо механизм опроса для этих клиентов.

Имейте в виду, что если устройство слишком длинное, и в очереди GCM для доставки ожидается более 100 сообщений, GCM отбросит эти и отправит специальное сообщение, когда устройства вернутся в сеть. В этом случае клиент должен выполнить полную синхронизацию с сервером.

Также проверьте этот учебник , чтобы начать с реализации клиента CGM.

0
задан Shahzad 18 January 2019 в 13:40
поделиться

1 ответ

Расширения добавляют новые функциональные возможности к существующему классу, структуре, перечислению или типу протокола.

Синтаксис для расширения:

    extension ViewControllerName {
      // Put code which you want to 
    }      

   /**
     If you implement UITableViewDataSource and UITableViewDelegate methods 
     or you can implement for UIPickerViewDataSource methods and protocol also    
  */

   extension ViewController: UItableViewDataSource, UITableViewDelegate {

     //implement tableview datasource and delegate method 

   }

      /**
          Keyboard show/hide 
      */  
      extension ViewController {
       /**
           Add scrollview functionality to scroll top and you can call 
           this function from anywhere in the controller.
       */
       func scrollToTop() {

       } 


        @objc func keyboardWasShown(notification: NSNotification)
            {
                var info = notification.userInfo!
                let keyboardSize = (info[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size
                let contentInsets : UIEdgeInsets = UIEdgeInsets(top: 0.0, left: 0.0, bottom: keyboardSize!.height+10, right: 0.0)
                self.scrolView.contentInset = contentInsets
                self.scrolView.scrollIndicatorInsets = contentInsets
                var aRect : CGRect = self.view.frame
                aRect.size.height -= keyboardSize!.height
                if let activeField = self.activeTextField
                {
                    if (!aRect.contains(activeField.frame.origin))
                    {
                        self.scrolView.scrollRectToVisible(activeField.frame, animated: true)
                    }
                }
            }
            // when keyboard hide reduce height of scroll view
            @objc func keyboardWillBeHidden(notification: NSNotification){
                let contentInsets : UIEdgeInsets = UIEdgeInsets(top: 0.0, left: 0.0,bottom: 0.0, right: 0.0)
                self.scrolView.contentInset = contentInsets
                self.scrolView.scrollIndicatorInsets = contentInsets
                self.view.endEditing(true)
            }
        }
0
ответ дан LinusGeffarth 18 January 2019 в 13:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: