Skip to content
Snippets Groups Projects
Commit 06f3b093 authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Reorganize documentation

parent 7d19bb67
No related branches found
No related tags found
2 merge requests!102Release 1.0.0,!33XXMessengerClient
# 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:
```swift
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:
```swift
try cMix.startNetworkFollower(timeoutMS: 10_000)
```
Wait until connected:
```swift
let isNetworkHealthy = try cMix.waitForNetwork(timeoutMS: 30_000)
```
## ▶️ Making a new reception identity
Use the cMix to make a new reception identity:
```swift
let myIdentity = try cMix.makeReceptionIdentity()
```
## ▶️ Create new E2E
```swift
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`:
```swift
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:
```swift
let sendReport = try connection.send(
messageType: 1,
payload: ...
)
```
Check if the round succeeded:
```swift
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:
```swift
try connection.registerListener(
messageType: 1,
listener: .init { message in
...
}
)
```
\ No newline at end of file
...@@ -3,134 +3,14 @@ ...@@ -3,134 +3,14 @@
![Swift 5.6](https://img.shields.io/badge/swift-5.6-orange.svg) ![Swift 5.6](https://img.shields.io/badge/swift-5.6-orange.svg)
![platform iOS](https://img.shields.io/badge/platform-iOS-blue.svg) ![platform iOS](https://img.shields.io/badge/platform-iOS-blue.svg)
## 📱 Demo
Refer to this [demo](https://git.xx.network/elixxir/shielded-help-demo/elixxir-dapp-demo) to see an example of how to build an app with the SDK to send `E2E` messages and send `RestLike` message.
Also you can checkout included example iOS application.
## 📖 Documentation ## 📖 Documentation
You can find full documentation with step by step guide [here](https://xxdk-dev.xx.network/mobile%20docs/ios-sdk) - [XXClient Quick Start Guide](Docs/XXClient-quick-start-guide.md)
- [XXMessengerClient](Docs/XXMessengerClient.md) - [XXMessengerClient](Docs/XXMessengerClient.md)
## 🚀 Quick Start ## 📱 Demo
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:
```swift
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:
```swift
try cMix.startNetworkFollower(timeoutMS: 10_000)
```
Wait until connected:
```swift
let isNetworkHealthy = try cMix.waitForNetwork(timeoutMS: 30_000)
```
### ▶️ Making a new reception identity
Use the cMix to make a new reception identity:
```swift
let myIdentity = try cMix.makeReceptionIdentity()
```
### ▶️ Create new E2E
```swift
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`:
```swift
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:
```swift
let sendReport = try connection.send(
messageType: 1,
payload: ...
)
```
Check if the round succeeded:
```swift
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:
```swift Checkout included example iOS application.
try connection.registerListener(
messageType: 1,
listener: .init { message in
...
}
)
```
## 🛠 Development ## 🛠 Development
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment