Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
E
Elixxir dApps SDK Swift
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
mobile
iOS
Elixxir dApps SDK Swift
Commits
b67c1871
Commit
b67c1871
authored
2 years ago
by
Dariusz Rybicki
Browse files
Options
Downloads
Patches
Plain Diff
Add basic usage examples to README.md
parent
58f2ed2d
No related branches found
No related tags found
1 merge request
!4
Add basic usage examples
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
README.md
+140
-0
140 additions, 0 deletions
README.md
with
140 additions
and
0 deletions
README.md
+
140
−
0
View file @
b67c1871
...
...
@@ -9,6 +9,146 @@ Add `ElixxirDAppsSDK` library as a dependency to your project using Swift Packag
For usage examples, checkout included example iOS application.
### ▶️ Instantiating client
Create a new client and store it on disk:
```
swift
let
createClient
:
ClientCreator
=
.
live
try
createClient
(
directoryURL
:
...
,
ndf
:
...
,
password
:
...
)
```
Load existing client from disk:
```
swift
let
loadClient
:
ClientLoader
=
.
live
let
client
=
try
loadClient
(
directoryURL
:
...
,
password
:
...
)
```
You can also use a convenient
`ClientStorage`
wrapper to manage a client stored on disk:
```
swift
let
storage
:
ClientStorage
=
.
live
(
passwordStorage
:
.
init
(
save
:
{
password
in
// securely save provided client's password
},
load
:
{
// load securely stored client's password
}
)
)
let
client
:
Client
if
storage
.
hasStoredClient
()
{
client
=
try
storage
.
loadClient
()
}
else
{
client
=
try
storage
.
createClient
()
}
```
Check out included example iOS application for the
`PasswordStorage`
implementation that uses the iOS keychain.
### ▶️ Connecting to the network
Start network follower:
```
let client: Client = ...
try client.networkFollower.start(timeoutMS: 10_000)
```
Wait until connected:
```
let client: Client = ...
let isNetworkHealthy = client.waitForNetwork(timeoutMS: 30_000)
```
### ▶️ Making a new identity
Use the client to make a new identity:
```
swift
let
client
:
Client
=
...
let
myIdentity
=
try
client
.
makeIdentity
()
```
### ▶️ Connecting to remote
Perform auth key negotiation with the given recipient to get the
`Connection`
:
```
swift
let
client
:
Client
=
...
let
connection
=
try
client
.
connect
(
withAuthentication
:
false
,
recipientContact
:
...
,
myIdentity
:
...
)
```
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
connection
:
Connection
=
...
let
report
=
try
connection
.
send
(
messageType
:
1
,
payload
:
...
)
```
Check if the round succeeded:
```
swift
let
client
:
Client
=
...
try
client
.
waitForDelivery
(
roundList
:
...
,
timeoutMS
:
30_000
)
{
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
let
connection
:
Connection
=
...
connection
.
listen
(
messageType
:
1
)
{
message
in
...
}
```
### ▶️ Using rest-like API
Use
`RestlikeRequestSender`
to perform rest-like requests:
```
swift
let
client
:
Client
=
...
let
connection
:
Connection
=
...
let
sendRestlike
:
RestlikeRequestSender
=
.
live
(
authenticated
:
false
)
let
response
=
try
sendRestlike
(
clientId
:
client
.
getId
(),
connectionId
:
connection
.
getId
(),
request
:
...
)
```
Pass
`true`
for the
`authenticated`
parameter if you want to perform authenticated requests.
## 🛠 Development
Open
`ElixxirDAppsSDK.xcworkspace`
in Xcode (≥13.4).
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment