Ввод Mobile Back End, как сервис на практике (Часть 2)

Мобильная задняя часть в качестве службы (MBaaS) направлена ​​на предоставление разработчикам приложений возможность создавать легко новая функция-полной кросс-платформенных родной и веб-приложений.В первый part 1 из этой серии, я шел через демо приложения обмена сообщениями на питание от применения Kinvey.Мы исследовали, как использовать управление пользователями, файловое хранилище и хранилище данных .

Для завершения демо, мы должны использовать два ключевых элементов функциональности Kinvey: разрешения, предоставленные хранилищем данных, и нажмите уведомления, которые позволили через бизнес-логики функциональности .

Screenshots of WaterCooler app 2
Кулера сообщениями приложение демо.( Просмотр большой version __21 | 3 )

Настройка Up

Как Первый article 4 в этой серии, и мой начальная статья объясняет концепцию MBaaS __38 | 5 предпосылки для этой статьи.Кроме того, эта статья делает принять “реального приложения» подход к пониманию MBaaS.Это, как говорится, некоторые знания прошивкой и Свифта было бы полезно.Тем не менее, я представил приложения источником code __44 | 6 , так что вы можете узнать и проанализировать в своем собственном темпе .

Permissions

В дополнение к хранилищу данных и хранения файлов поддержки, предоставляемой Kinvey, есть также надежный модель безопасности, которая может быть применена ко всем этим данным.Все конфигурации для разрешения на либо файлов или объектов хранилища данных произойдет с KCSMetadata класса.Этот экземпляр может быть сконфигурирован с классами модели на заказ данных или прилагается в качестве параметров в файл при загрузке его в хранилище файлов .

Файл Permissions

Как мы уже обсуждали ранее, возможности управления файл мощный кусок любого инструмента MBaaS.Тем не менее, разъяснение, кто может получить доступ к содержимому в равной степени важны.В нашем примере, профиль фотографии, которыезагружены должны быть доступны для просмотра всем пользователям.Если бы мы хотели, чтобы добавить обмену на изображение, чтобы часть одной-к-одному сообщениями приложения, то мы хотели бы, чтобы ограничить, кто может получить доступ к изображение.Потому что мы хотим, чтобы кто-нибудь, чтобы увидеть фотографию, мы можем использовать setGloballyReadable Метод KCSMetadata чтобы гарантировать, что в то время как только создатель может редактировать этот файл, любой пользователь может прочитать его .

// Extracted from SignupViewController.swift (http://tuck.cc/1vsaWcr)

// Initialize with the default initializer
let metadata = KCSMetadata();

// Ensure that all users can access this file
metadata.setGloballyReadable(true);

// This is added to a params object that is passed to the upload data method
var fileParams = [
  KCSFileMimeType : "image/jpeg",
  KCSFileACL : metadata
];

// By passing in this fileParams object, the file will be readable by all
KCSFileStore.uploadData(photoData, options: fileParams, completionBlock: { (file:KCSFile!, error:NSError!) -> Void in
    println("File Upload Completed")
}, progressBlock: nil);

Data Store Permissions

Чтобы сделать это как можно более простым для интеграции в приложения, я определил несколько Swift extensions 7 классам, предусмотренных в SDK Kinvey для IOS.Одним из таких является продолжением традиций Инициализатор KCSMetadata класс для настройки разрешений для Message 10 ~ и | классы:

/*
  This method is a convenience initializer that sets the permissions
  on a KCSMetadata instance for the user IDs passed in (and, optionally,
  for the current user as well). All persistable data in the Kinvey data
  store can be configured using a KCSMetadata instance.
 */
extension KCSMetadata {

  convenience init(userIds:[String], includeActiveUser:Bool) {
    self.init()
    var ids = userIds
    setGloballyReadable(false)
    setGloballyWritable(false)
    if(includeActiveUser) {
      ids.append(KCSUser.activeUser().userId)
    }
    for userId in ids {
      readers.addObject(userId)
      writers.addObject(userId)
    }
  }
}

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

class Message : NSObject, KCSPersistable {

  var entityId:String = ""
  var messageText:String!
  var senderId:String!
  var threadId:String!
  var userEntryTime:NSDate!
  var metadata:KCSMetadata! = nil

  init(messageText:String, recipientId:String) {
    senderId = KCSUser.activeUser().userId
    messageText = messageText
    entityId = NSUUID().UUIDString
    // This uses our convenience initializer to allow for the limited
    // permissions of only the sender and recipient
    metadata = KCSMetadata(userIds: [recipientId], includeActiveUser:true)
  }

  // You have to let Kinvey know which property corresponds to the meta-data
  // instance. Do this by assigning the property the KCSEntityKeyMetadata
  // value in the hostToKinveyPropertyMapping method.
  override func hostToKinveyPropertyMapping() -> [NSObject : AnyObject]! {
    return [
      "entityId" : KCSEntityKeyId,
      "messageText" : "message",
      "senderId" : "senderId",
      "threadId" : "threadId",
      "metadata" : KCSEntityKeyMetadata
    ]
  }
}

Бизнес-логика и нажмите Notifications

Решения MBaaS, что обеспечивает все функциональные подробно сих пор бы быть достаточно ограниченным набором прецедентов.Тем не менее, способность к централизации бизнес-логики, когда привязан к жизненному циклу объекта данных открывает многие двери для создания эффективных кросс-платформенных приложений.В кулера демо-приложения, это актуально в двух различных способов:

  1. При Message экземпляр сохраняется в хранилище данных, мы должны определить, кто он направляется.После того как мы установили получателя сообщения, нам нужно послать им толчок уведомление .
  2. При Message экземпляр сохраняется в хранилище данных, мы должны также принести MessageThread экземпляр и сохранить latestMessage недвижимость.Это освобождает нас от необходимости делать дополнительные выборки называют при заполнении просмотреть сообщение потока .

В то время как оба из них может быть достигнуто путем применения IOS, что бы положить логику в неправильном месте.Рассмотрим, если мы также имели приложений и веб-Android для приложения кулера.Мы хотели бы те же функции, происходят на сообщения сохраняются на обоих этих платформах, а также.В этом случае, любой бизнес-логики, которая охватывает несколько платформ должен находиться на сервере с помощью бизнес-логики возможность Kinvey в .

Настройка Нажмите Notifications

Для уведомления толчка, чтобы работать должным образом на IOS, мы должны настроить Kinvey работать с нашей сертификата (ов) Push Notification для приложения.Этот шаг включает в себя два различных действия:

  1. Настроить приложение с сертификатами толчок уведомления для разработки и производства в центре разработчиков IOS .
  2. Экспорт и загруженытребуется сертификат Kinvey .

Полный процесс выполнения этих шагов выходит за рамки данной статьи, но Kinvey имеет “ Push 8 | __8″ руководство в документации, чтобы помочь вам в общем процессе интеграции .

Kinvey Коллекция Hooks

Для достижения двух целей, перечисленных выше, мы можем использовать один конкретный кусок функциональности в Kinvey: сбор крючков.С сбора крючков, мы можем определить на стороне сервера бизнес-логику в JavaScript, который выполняется в определенных точках.Предопределенные точки для коллекции, перечислены ниже:

  • onPreSaveЭта логика выполняется до экземпляра сохраняются в хранилище данных.Любые ошибки, которые происходят в этой логике было бы предотвратить save действие выполняется из .
  • onPreFetchЭта логика выполняется до любой выборки призываем entity типа.Любые ошибки будет препятствовать fetch действие выполняется из .
  • onPreDeleteЭта логика выполняется до любого entity экземпляр удаления из хранилища данных.Любые ошибки будет препятствовать экземпляр от удаления из хранилища данных .
  • onPostSaveЭта логика будет выполнена после экземпляр сохраняется в хранилище данных.Любые ошибки здесь не помешало бы объект из хранится в хранилище данных, но они будут вызывать ошибку, чтобы вернуться по просьбе .
  • onPostFetchЭта логика будет выполнена после fetch Команда была выполнена в хранилище данных.Любые ошибки здесь не помешало бы объект от того за уши из хранилища данных, но они будут вызывать ошибку, чтобы вернуться по просьбе .
  • onPostDeleteЛогика будет выполнена после экземпляр удаляется из хранилища данных.Любые ошибки здесь не помешало бы объект от удаления, но они вызывают ошибку, чтобы вернуться к запросу .

Уведомления толчка являются важной частью любого приложения обмена сообщениями.В идеале, мы хотели бы один, чтобы быть отправлены каждый раз отправитель сэкономит Message объект в хранилище данных.Kinvey предоставляет эту возможность через функциональности своих бизнес-логики в крючки.Короче говоря, вы можете добавлять свою логику JavaScript, который выполняет в определенные моменты жизненного цикла объекта данных .

Бизнес-логика Modules

Kinvey предоставляет набор модулей, которые позволяют получить доступ к функциям ядра Kinvey в коде бизнес-логики в.Несколько модулей доступны, но я использовала следующие модули с бизнес-логики крючком:

  • loggerОбеспечивает плавный способ регистрации информации от бизнес-логики в console
  • collectionAccessПредоставляет способ запроса хранилище данных Kinvey из вашего бизнеса logic
  • pushОбеспечивает доступ к функциональности Push Notification для Kinvey с бизнес logic
  • asyncОбеспечивает подход к работе с асинхроннымиJavaScript.Это async 9 Модуль вы, возможно, использовали в Node.js приложений .

Comments are closed.