Мобильная Back End в качестве службы (MBaaS) направлена на предоставление разработчикам приложений возможность создавать легко новую функцию-полной кросс-платформенных отечественных и веб-приложений.В первый part 1 этой серии, я прошел через демонстрационное приложение обмена сообщениями на питание от применения Kinvey.Мы исследовали, как использовать управление пользователями, файловое хранилище и хранилище данных .
Для завершения демонстрации, мы должны использовать две основные функциональные части Kinvey: разрешения, предоставленные хранилищем данных, и нажмите уведомления, которые активируются с помощью бизнес-логики функциональности .
Настройка Up
Как Первый article 4 в этой серии, и мой начальная статья объясняет концепцию MBaaS 5 предпосылки для этой статьи.Кроме того, эта статья предпринимает «реального приложения» подход к пониманию MBaaS.Это, как говорится, некоторые знания прошивкой и Свифта было бы полезно.Тем не менее, я представил приложения источником code 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
и MessageThread
классы:
/*
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, что обеспечивает все функциональные возможности, подробно сих пор был бы адекватен в ограниченном наборе вариантов использования.Тем не менее, способность централизовать бизнес-логику, если оно связано с жизненным циклом объекта данных открывает многие двери для создания эффективных кросс-платформенных приложений.В кулера демо-приложения, это относится двумя различными способами:
- При
Message
экземпляр сохраняется в хранилище данных, мы должны определить, кто он направляется.После того как мы установили, что получатель сообщения, нам нужно послать им толчок уведомление . - При
Message
экземпляр сохраняется в хранилище данных, мы должны также принестиMessageThread
экземпляр и сохранитьlatestMessage
недвижимость.Это освобождает нас от необходимости делать дополнительные выборки называют при заполнении просмотреть сообщение потока .
Хотя оба они могут быть достигнуты с помощью применения IOS, что бы поставить логику в неправильном месте.Рассмотрим, если мы также имели приложений и веб-Android для приложения кулера.Мы хотели бы те же функции, происходит на сообщения сохраняются на обоих этих платформах, а также.В этом случае, любой бизнес-логики, которая охватывает несколько платформ должен находиться на сервере с помощью бизнес-логики возможность Kinvey в .
Настройка Нажмите Notifications
Для уведомления толчка, чтобы правильно работать на IOS, а нам нужно настроить Kinvey работать с нашей сертификат (ы) Push Notification для приложения.Этот шаг включает в себя два этапа:
- Настроить приложение с сертификатами Push Notification для разработки и производства в центре разработчиков IOS .
- Экспорт и загрузил нужный сертификат для Kinvey .
Полный процесс выполнения этих шагов выходит за рамки данной статьи, но Kinvey имеет “ Push 8 “руководство в документации, чтобы помочь вам в общем процессе интеграции .
Kinvey Коллекция Hooks
Для достижения двух целей, перечисленных выше, мы можем использовать один конкретный кусок функциональности в Kinvey: сбор крючков.С сбора крючков, мы можем определить на стороне сервера бизнес-логику в JavaScript, который выполняется в определенных точках.Предопределенные точки для коллекции, перечислены ниже:
-
onPreSave
Эта логика выполняется до экземпляра сохраняются в хранилище данных.Любые ошибки, которые происходят в этой логике было бы предотвратитьsave
действия из исполняется . -
onPreFetch
Эта логика выполняется до какого-либо принести призываемentity
типа.Любые ошибки будет препятствоватьfetch
действия из исполняется . -
onPreDelete
Эта логика выполняется до любогоentity
экземпляр удаляется из хранилища данных.Любые ошибки будет препятствовать экземпляр от удаления из хранилища данных . -
onPostSave
Эта логика будет выполнен после экземпляр сохраняется в хранилище данных.Здесь какой-то ошибки не будет препятствовать объект не сохранялась в хранилище данных, но они будут вызывать ошибку, чтобы вернуться по просьбе . -
onPostFetch
Эта логика будет выполнен послеfetch
команда была выполнена с помощью хранилища данных.Здесь какой-то ошибки не будет препятствовать объект от того, извлекается из хранилища данных, но они будут вызывать ошибку, чтобы вернуться по просьбе . -
onPostDelete
Логика будет выполнен после экземпляр удаляется из хранилища данных.Здесь какой-то ошибки не будет препятствовать объект от удаления, но они вызовут ошибку, чтобы вернуться к запросу .
Уведомления Push-это важная часть любого приложения обмена сообщениями.В идеале, мы хотели бы один, чтобы быть отправлены каждый раз отправитель экономит Message
объект в хранилище данных.Kinvey предоставляет эту возможность через функциональности своих бизнес-логики в крючки.Короче говоря, вы можете добавлять свою логику JavaScript, который выполняет в определенные моменты жизненного цикла объекта данных .
Бизнес-логика Modules
Kinvey предоставляет набор модулей, которые позволяют получить доступ к базовой функциональности Kinvey в коде бизнес-логики в.Несколько модулей доступны, но я использовала следующие модули бизнес-логики крюк:
-
logger
Обеспечивает плавный способ регистрации информации от бизнес-логики в console -
collectionAccess
Предоставляет возможность запрашивать хранилище данных Kinvey из вашего бизнеса logic -
push
Предоставляет доступ к функциям Push Notification для Kinvey с вашим бизнесом logic -
async
Обеспечивает подход к решению с асинхронным JavaScript.Это async 9 модуль, который вы, возможно, использовали в Node.jsприложения .
- Полную информацию о бизнес-логики модулей, увидеть “Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров