-
Dariusz Rybicki authoredDariusz Rybicki authored
XXClient-quick-start-guide.md 2.14 KiB
XXClient Quick Start Guide
Add XXClient
library as a dependency to your project using Swift Package Manager.
▶️ Instantiating cMix
You can use a convenient CMixManager
wrapper to manage cMix stored on disk:
let cMixManager: CMixManager = .live(
passwordStorage: .init(
save: { password in
// securely save provided password
},
load: {
// load securely stored password
}
)
)
let cMix: CMix
if cMixManager.hasStorage() {
cMix = try cMixManager.load()
} else {
cMix = try cMixManager.create()
}
Check out included example iOS application for the PasswordStorage
implementation that uses the iOS keychain.
▶️ Connecting to the network
Start network follower:
try cMix.startNetworkFollower(timeoutMS: 10_000)
Wait until connected:
let isNetworkHealthy = try cMix.waitForNetwork(timeoutMS: 30_000)
▶️ Making a new reception identity
Use the cMix to make a new reception identity:
let myIdentity = try cMix.makeReceptionIdentity()
▶️ Create new E2E
let login: Login = .live
let e2e = try login(
cMixId: cMix.getId(),
identity: myIdentity
)
▶️ Connecting to remote
Perform auth key negotiation with the given recipient to get the Connection
:
let connection = try cMix.connect(
withAuthentication: false,
e2eId: e2e.getId(),
recipientContact: ...
)
Pass true
for the withAuthentication
parameter if you want to prove id ownership to remote as well.
▶️ Sending messages
Send a message to the connection's partner:
let sendReport = try connection.send(
messageType: 1,
payload: ...
)
Check if the round succeeded:
try cMix.waitForRoundResult(
roundList: try sendReport.encode(),
timeoutMS: 30_000,
callback: .init { result in
switch result {
case .delivered(let roundResults):
...
case .notDelivered(let timedOut):
...
}
}
)
▶️ Receiving messages
Use connection's message listener to receive messages from partner:
try connection.registerListener(
messageType: 1,
listener: .init { message in
...
}
)