测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2017年11月 |
SwiftSwift 版本 | 4.0 |
SPM支持 SPM | ✗ |
由 Mounir Ybanez 维护。
一个用于 Firebase REST API 的 iOS 轻量级包装器。有关 Firebase 的更多详细信息,请参阅此处。它用 Swift 编写,具有 100% 的代码覆盖率。
请确保复制 PyroAuthInfo.plist
。并注意该文件添加的包标识符。
let apiKey = "yourFirebaseAPIKey"
let bundleIdentifier = "com.my.app"
let auth = PyroAuth.create(key: apiKey, bundleIdentifier: bundleIdentifier)
// The variable 'auth' is nil if you provide an invalid bundle identifier.
// Otherwise, you are good to go.
// NOTE: If you build this project as framework, you can opt out
// providing the bundle identifier. The default value
// is the project's bundle identifier
auth.signIn(email: email, password: password) { result in
switch result {
case .failed(let error):
print(error)
// Do some stuff
case .succeeded(let data):
print(data)
// Do some stuff
// 'data' is PyroAuthContent
}
}
auth.register(email: email, password: password) { result in
switch result {
case .failed(let error):
print(error)
// Do some stuff
case .succeeded(let data):
print(data)
// Do some stuff
// 'data' is PyroAuthContent
}
}
auth.refresh(token: "refreshToken") { result in
switch result {
case .failed(let error):
print(error)
// Do some stuff
case .succeeded(let data):
print(data)
// Do some stuff
// 'data' is PyroAuthTokenContent
}
}
auth.sendPasswordReset(email: "[email protected]") { result in
switch result {
case .failed(let error):
print(error)
// Do some stuff
case .succeeded(let data):
print(data)
// Do some stuff
// 'data' is Bool
}
}
let baseURL = "https://foo.firebaseio.com"
let accessToken = "accessToken"
let pyrobase = Pyrobase.create(baseURL: baseURL, accessToken: accessToken)
pyrobase.get(path: "users/abcde12345wert", query: [:]) { result in
switch result {
case .failed(let error):
print(error)
// Do some stuff
case .succeeded(let data):
print(data)
// Do some stuff
}
}
pyrobase.post(path: "messages", value: ["message": "hello world", "user_id": "abcde12345qwert"]) { result in
switch result {
case .failed(let error):
print(error)
// Do some stuff
case .succeeded(let data):
print(data)
// Do some stuff
}
}
pyrobase.put(path: "users/abcde12345wert", value: ["first_name": "Juan", "last_name": "Dela Cruz"]) { result in
switch result {
case .failed(let error):
print(error)
// Do some stuff
case .succeeded(let data):
print(data)
// Do some stuff
}
}
pyrobase.patch(path: "users/abcde12345wert", value: ["first_name": "Jose"]) { result in
switch result {
case .failed(let error):
print(error)
// Do some stuff
case .succeeded(let data):
print(data)
// Do some stuff
}
}
let baseURL = "https://foo.firebaseio.com"
let accessToken = "accessToken"
let transaction = PyroTransaction.create(baseURL: baseURL, accessToken: accessToken)
transaction.run(
parentPath: "posts/yuiop98765nbcwe",
childKey: "likes_count",
mutator: { data in
let likesCount = data as! Int
return likesCount + 1
}) { result in
switch result {
case .failed(let error):
print(error)
// Do some stuff
case .succeeded(let data):
print(data)
// Do some stuff
}
}
class StreamCallback: PyroEventSourceCallback {
func pyroEventSource(_ eventSource: PyroEventSource, didReceiveError error: Error) {
// Do some stuff
}
func pyroEventSource(_ eventSource: PyroEventSource, didReceiveMessage message: PyroEventSourceMessage) {
// Do some stuff
}
func pyroEventSourceOnOpen(_ eventSource: PyroEventSource) {
// Do some stuff
}
func pyroEventSourceOnClosed(_ eventSource: PyroEventSource) {
// Do some stuff
}
func pyroEventSourceOnConnecting(_ eventSource: PyroEventSource) {
// Do some stuff
}
}
let callback = StreamCallback()
let baseURL = "https://foo.firebaseio.com"
let accessToken = "accessToken"
let eventSource = PyroEventSource.create(baseURL: baseURL, accessToken: accessToken)
eventSource.callback = callback
eventSource.stream("chat/rooms/hdjye53910kwdop")
eventSource.close()
始终记得在你的查询路径的规则中添加 .indexOn
。如果没有设置它,可能会收到 badRequest
错误。
let query = ["orderBy": "\"$key\"", "limitToFirst": 1]
pyrobase.get("posts", query: query) { result in
switch result {
case .failed(let error):
print(error)
// Do some stuff
case .succeeded(let data):
print(data)
// Do some stuff
}
}
MIT 许可证