Swift SDK
The following guide provides documentation for the Zephr Swift SDK. If you need access to this SDK, please emailĀ support@zuora.com.
Installation
The Blaize Swift SDK can be added as a dependency of another Swift Package or as a Swift Package Dependency in Xcode.
To use this package, add the dependency
https://bitbucket.org/blaizeinc/swift-sdk
Configuration
The Swift SDK requires you configure it with your tenantId before API calls can be made. Do this in your AppDelegate:
import UIKit
import Blaize
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(\_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: \[UIApplicationLaunchOptionsKey: Any\]?) -> Bool {
BlaizeConfiguration.shared.tenantId = 'yourTenantId'
// Override point for customization after application launch.
return true
}
}
Optionally, the Blaize environment can be provided, too:
BlaizeConfiguration.shared.env = "staging"
It is possible to specify a base URL for the Blaize service, if it is non-standard (not normally needed):
BlaizeConfiguration.shared.overrideBaseUrl = "http://localhost:8080"
Public API Usage
Register
import Blaize
func register() {
var attributes = \["first-name": "John","last-name": "Citizen"\]
BlaizePublic.client.register(email: "johncit@blaize.io", password: "SomePassword1", attributes: attributes) { result in
switch result {
case .success(let blaizeSessionId):
// persist blaizeSessionId
print("Logged in")
case .userAlreadyExists
print("A user with that email address already exists... try resetting your password")
case .emailDomainBlacklisted
print("The email address you have supplied is not allowed for registration")
case .badRequest
print("One of more of the mandatory fields were not provided or are incorrect")
}
}
}
Login
import Blaize
func login() {
BlaizePublic.client.login(email: "johncit@blaize.io", password: "SomePassword1") { result in
switch result {
case .success(let blaizeSessionId):
// persist blaizeSessionId
print("Logged in")
case .userNotFound
print("User not found")
case .badPassword
print("Password was incorrect")
case .badRequest
print("Something went wrong")
}
}
}
Create Anonymous Session
import Blaize
func anonymousSession() {
BlaizePublic.client.anonymousSession() { result in
switch result {
case .success(let blaizeSessionId):
// persist blaizeSessionId
print("Anonymous session created")
case .failure
print("Something went wrong")
}
}
}
Logout
import Blaize
func logout() {
BlaizePublic.client.logout(sessionId: "sessionId") { result in
switch result {
case .success:
print("Logged out")
case .failure
print("Something went wrong")
}
}
}
Forget me
import Blaize
func forgetMe() {
BlaizePublic.client.forgetMe(sessionId: "sessionId") { result in
switch result {
case .success:
print("User deleted")
case .failure
print("Something went wrong")
}
}
}
Get User Profile
import Blaize
func getUserProfile() {
BlaizePublic.client.getUserProfile(sessionId: "sessionId") { result in
switch result {
case .success(let profileResult):
// do something with profileResult
case .failure
print("Something went wrong")
}
}
}
Update User Profile
import Blaize
func updateUserProfile() {
// Set whether to merge or overwrite attributes
let merge = true
let attributes = \["first-name": "Jane"\]
BlaizePublic.client.updateUserProfile(sessionId: "sessionId", attributes: attributes, merge: merge) { result in
switch result {
case .success:
print("User profile updated successfully")
case .failure
print("Something went wrong")
}
}
}
Get Extended Profile
import Blaize
func getExtendedProfile() {
BlaizePublic.client.getExtendedProfile(sessionId: "sessionId", appId: "appId") { result in
switch result {
case .success(let extendedProfile):
// do something with extendedProfile
case .failure
print("Something went wrong")
}
}
}
Update Extended Profile
import Blaize
func entitlementChallenge() {
let entitlementIds = \["entId1", "entId2"\]
BlaizePublic.client.entitlementChallenge(sessionId: "sessionId", entitlementIds: entitlementIds) { result in
switch result {
case .success(let entitlementChallenge):
// do something with entitlementChallenge
// if entitlementChallenge\["entId1"\] == true { ... }
case .failure
print("Something went wrong")
}
}
}
Entitlement challenge
import Blaize
func checkEntitlements() {
let articleEntitlementId = "5341dc17-f91b-4311-b9ee-6906024c87a2"
let videoEntitlementId = "2b7fa1f5-795d-459e-84eb-8e0c62fb018f"
let response = BlaizePublic.client.challenge(\[articleEntitlementId, videoEntitlementId\])
if response\[articleEntitlementId\] == nil {
print("You cannot view articles")
}
if response\[videoEntitlementId\] == nil {
print("You cannot view videos")
}
}
Access Decision
import Blaize
func accessDecision() {
BlaizePublic.client.accessDecision(
sessionId: "sessionId", //required
path: "/", //optional
httpMethod: .get, //optional
requestHeaders: \["X-Custom": "true"\], //optional
contentMetadata: \["content\_id": "1234"\], //optional
jwt: "eyJhbGciOiJIUzI1NiIsInR5cCI6Ik..." //optional
) { decision in
// do something with decision
// decision.status
// decision.headers
// decision.body
}
}