Мобильная задняя часть в качестве службы (MBaaS) направлена на предоставление разработчикам приложений возможность создавать легко новая функция-полной кросс-платформенных родной и веб-приложений.В первый part 1 из этой серии, я шел через демо приложения обмена сообщениями на питание от применения Kinvey.Мы исследовали, как использовать управление пользователями, файловое хранилище и хранилище данных .
Для завершения демо, мы должны использовать два ключевых элементов функциональности Kinvey: разрешения, предоставленные хранилищем данных, и нажмите уведомления, которые позволили через бизнес-логики функциональности .
Настройка 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, что обеспечивает все функциональные подробно сих пор бы быть достаточно ограниченным набором прецедентов.Тем не менее, способность к централизации бизнес-логики, когда привязан к жизненному циклу объекта данных открывает многие двери для создания эффективных кросс-платформенных приложений.В кулера демо-приложения, это актуально в двух различных способов:
- При
Message
экземпляр сохраняется в хранилище данных, мы должны определить, кто он направляется.После того как мы установили получателя сообщения, нам нужно послать им толчок уведомление . - При
Message
экземпляр сохраняется в хранилище данных, мы должны также принестиMessageThread
экземпляр и сохранитьlatestMessage
недвижимость.Это освобождает нас от необходимости делать дополнительные выборки называют при заполнении просмотреть сообщение потока .
В то время как оба из них может быть достигнуто путем применения IOS, что бы положить логику в неправильном месте.Рассмотрим, если мы также имели приложений и веб-Android для приложения кулера.Мы хотели бы те же функции, происходят на сообщения сохраняются на обоих этих платформах, а также.В этом случае, любой бизнес-логики, которая охватывает несколько платформ должен находиться на сервере с помощью бизнес-логики возможность Kinvey в .
Настройка Нажмите Notifications
Для уведомления толчка, чтобы работать должным образом на IOS, мы должны настроить Kinvey работать с нашей сертификата (ов) Push Notification для приложения.Этот шаг включает в себя два различных действия:
- Настроить приложение с сертификатами толчок уведомления для разработки и производства в центре разработчиков IOS .
- Экспорт и загруженытребуется сертификат 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 приложений .
- Для полной ссылкой на би …
Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров