SendingNetwork
  • OVERVIEW
    • Getting Started
    • FAQs
  • Network Instructional Articles
    • Basics
      • Introducing the Edge, WatchDog, and Guardian Nodes
      • Overview
      • Messaging Solution
      • Privacy Solution
      • Rich Communication Solution
      • Multi-Platform Solution
      • Decentralized Identity
      • Multiple Chat Modes
      • How It Works
      • Token Utility
      • The Team
    • Key Concepts
      • Decentralized Identity
      • Social Graphs
      • Edge Node
  • SDK Documentation
    • Glossary
    • JavaScript client SDK
      • DID
      • User
      • Message
      • Room
      • Contact
      • Social Graph
    • iOS client SDK
      • Push
      • DID
      • User
      • Message
      • Room
      • Contact
    • Android client SDK
      • User
      • Room
    • Java SDK
      • DID
      • Room
      • Message
    • Node.js SDK
      • DID
      • Room
      • Message
    • Unreal SDK
      • DID
      • User
      • Message
      • Room
    • Unity SDK
      • DID
      • Room
      • Message
    • Website chat widget SDK
      • Customization
      • DID
      • User
      • Room
      • Message
      • Other
    • Bot SDKs
      • Golang Bot SDK
        • DID
        • User
        • Room
        • Message
    • Extensible Message Interface
    • Push Notifications
    • Flutter SDK
      • DID
      • User
      • Message
      • Room
    • PHP SDK
      • DID
      • Room
      • User
    • Developer Key
  • Acquisition Kit
    • Social Boost Development Instructions
  • WatchDog Agent
    • WatchDog Agent Guide
    • WatchDog Agent Deployment Tutorial
      • Linux Deployment Tutorial
    • One-Click Deployment
  • Edge Node
    • Edge Node Deployment Tutorial
    • VPS Setup Guide
      • Google Cloud Platform (GCP)
      • Amazon Web Services (AWS)
      • Contabo
    • Check Node Stats with Auto-Reply Bot in SendingMe App
    • Alpha-3 Testnet FAQs
  • delegation node
    • Delegation Node Deployment Tutorial
  • Private Delegation Node
  • Use Cases
    • Wallet-to-Wallet Messaging
    • Dapp Notifications
    • Identity Verification
    • Gamer Acquisition
    • Cross-platform Trading
Powered by GitBook
On this page
  • 1. Check if an Address has a SendingNetwork DID
  • 2. Log into a DID or Register an Address
  • 3. Sign the Message Returned
  • (Deprecated) DID login process:
  • (Deprecated) Get DID list
  • (Deprecated) Get DID information
  • (Deprecated) Create DID
  • (Deprecated) Save DID information
  • (Deprecated) Update DID
  • (Deprecated) DID Pre-login
  • (Deprecated) Log in to DID
  1. SDK Documentation
  2. iOS client SDK

DID

iOS Decentralized Identity APIs

1. Check if an Address has a SendingNetwork DID

- (MXHTTPOperation *)getDIDList:(NSString *)address
                        success:(void (^) (MXDIDListResponse *response))success
                        failure:(void (^)(NSError *error))failure ;

Input Parameters:

Name
Type
Description
Required

address

NSString

wallet address

true

Output Parameters:

MXDIDListResponse

Name
Type
Description
Required

array

NSString

list of DIDs

False

2. Log into a DID or Register an Address

If the returned array is empty, log in using the wallet address; otherwise, use the first element of the array as the 'did' parameter.

- (MXHTTPOperation *)postPreLoginDID:(NSString *)did
                             address:(NSString*)address
                             success:(void (^) (MXPreLoginResponse *response))success
                             failure:(void (^)(NSError *error))failure;

Input Parameters:

Name
Type
Description
Required

address

NSString

wallet address

false

did

NSString

user DID

false

Output Parameters:

Name
Type
Description
Required

DID

NSString

user DID (existing or newly created)

true

message

NSString

message to be signed

true

updated

NSString

update time

true

random_server

NSString

random number generated by the DID node

true

3. Sign the Message Returned

- (MXHTTPOperation *)postLoginDID:(NSString *)did
                     withParameter:(NSDictionary *)parameter
                     success:(void (^) (MXDIDLoginResponse *response))success
                     failure:(void (^)(NSError *error))failure {

Input Parameters: parameter

Name
Type
Description
Required

type

NSString

Login type (e.g., m.login.did.identity)

true

updated

NSString

update time returned by the pre_login

true

identifier

IdentifierModel

login information

true

device_id

NSString

device id, not needed for a new device

false

random_server

NSString

returned by postPreLoginDID

true

IdentifierModel Type:

Name
Type
Description

did

NSString

user DID

token

NSString

Token used to sign the message returned by pre_login

Output Parameters:

MXDIDLoginResponse

Name
Type
Description
Required

access_token

NSString

access token

true

user_id

NSString

user ID

true

device_id

NSString

device id

true


The login process and APIs described below are deprecated. Please avoid using them.

(Deprecated) DID login process:

  1. Get DID list. If the list is empty, register a decentralized identity. Otherwise, call pre_login in step 4 to log in to an existing DID.

  2. Create a DID document with the current wallet address by calling the DIDCreate method.

  3. Sign the message returned in step 2 and call the DIDSave method.

  4. Call pre_login to get the message to be signed.

  5. Sign the message returned in step 4 and use the signature to log in to DID with postLoginDID method.

(Deprecated) Get DID list

client?.getDIDInfo(wallet, success: { <#MXDIDListInfoResponse#> in
    <#code#>
}, failure: { <#Error#> in
    <#code#>
})

Parameters:

Name
Type
Description
Required

address

string

Wallet address

true

Returns:

Name
Type
Description
Required

response

string array

User DID list

true

(Deprecated) Get DID information

client?.getDIDInfo(wallet, success: { <#MXDIDListInfoResponse#> in
    <#code#>
}, failure: { <#Error#> in
    <#code#>
})

Parameters:

Name
Type
Description
Required

DID

string

DID string from the getDIDInfo(address)

true

Returns:

Name
Type
Description
Required

controllers

Json

controller information

true

current_public_key

string

current device's public key

true

public_keys

Json

public key information

true

controllers and public_keys type:

Name
Type
Description

type

string

EcdsaSecp256k1RecoveryMethod2020/``Ed25519VerificationKey2018

value

string

wallet address or public key

key_id

string

public key id

(Deprecated) Create DID

client?.postCreateDID(address, success: { <#MXCreateDIDResponse#> in
    <#code#>
}, failure: { <#Error#> in
    <#code#>
})

Parameters:

Name
Type
Description
Required

address

string

wallet address with blockchain information like eip155:1

true

Returns:

Name
Type
Description
Required

DID

string

user DID (existing or newly created)

true

message

string

message to be signed

true

updated

string

update time

true

(Deprecated) Save DID information

client?.postSaveDID(did, withParameter: ["signature":"","operation":"create","updated":updateTime], success: { <#MXSaveDIDResponse#> in
    <#code#>
}, failure: { <#Error#> in
    <#code#>
})

Parameters:

Name
Type
Description
Required

DID

string

DID string

true

Parameters:

Name
Type
Description
Required

signature

string

sign the message with web3.eth.personal.sign method

true

operation

string

create, link, unlink, link_key, unlink_key

true

ids

string array

the DID URL of unlink, unlink_key; unnecessary in create, link, link_publick operation

false

address

string

wallet address (with blockchain-specific prefix, e.g., eip155:1 ) in link, create operation

true

updated

string

updated time returned by postCreateDID(address)

true

Message Prefix

operation
Type
Message

create

string

Create an account\n

link

string

Add new address\n

link_key

string

Login with this account\n

unlink/unlin_key

string

Unlink this address\n

burn

string

Burn this account\n

(Deprecated) Update DID

client?.postUpdateDID(did, withParameter: ["operation":"link"], success: { <#MXUpdateDIDResponse#> in
    <#code#>
}, failure: { <#Error#> in
    <#code#>
})

Parameters:

Name
Type
Description
Required

DID

string

DID string

true

POST Body

Name
Type
Description
Required

ids

string array

Wallet address ID that needs to be unbound

false

address

string

Wallet address that needs to be added. The address needs to be prefixed by blockchain specific strings like did:pkh:eip155:1

false

operation

string

link, unlink, link_key, unlink_key

true

Returns:

Name
Type
Description
Required

did

string

User DID (existing or newly created)

true

message

string

Message to be signed

true

updated

string

Update time

true

(Deprecated) DID Pre-login

client?.postPreLoginDID(DID, success: { <#MXPreLoginResponse#> in
    <#code#>
}, failure: { <#Error#> in
    <#code#>
})

Parameters:

Name
Type
Description
Required

DID

string

DID string

true

Returns:

Name
Type
Description
Required

DID

string

User DID (existing or newly created)

true

message

string

Message to be signed

true

updated

string

Update time

true

(Deprecated) Log in to DID

client?.postLoginDID(did, withParameter: ["type":" m.login.did.identity","updated":updateTime,], success: { <#MXDIDLoginResponse#> in
    <#code#>
}, failure: { <#Error#> in
    <#code#>
})

Parameters:

Name
Type
Description
Required

type

string

type of login (the type of the above example is m.login.did.identity)

true

updated

string

updated time returned by the pre_login method

true

identifier

json

login information

true

device_id

string

device id, not needed for new device

false

identifier type:

Name
Type
Description

DID

string

User DID

token

string

Sign the message returned by pre_login method and perform base16 encoding. The signature method is etherum.Sign(accounts.TextHash(message), privateKey) or personal_sign from Metamask.

Returns:

Name
Type
Description
Required

access_token

string

access token

true

user_id

string

user id

true

device_id

string

device id

true

PreviousPushNextUser

Last updated 1 year ago