Skip to content
🎉 Welcome! Translations are currently experimental. | 翻訳は現在実験的です。 | 翻译目前处于实验阶段。
Click here to submit feedback! | ここをクリックしてフィードバックを送信してください! | 点击这里提交反馈!

Swift SDK Quickstart

This guide will walk you through the process of setting up AptosKit, and fetching data on the Aptos blockchain.

Install the SDK

AptosKit is available as a Swift package. To add it to your project, add the following to your Package.swift file:

Package.swift
dependencies: [
  .package(url: "https://github.com/mcxross/swift-aptos.git", .upToNextMajor(from: <version>))
]

Import the SDK

Import the SDK in your Swift file:

Main.swift
import AptosKit

Create the ClientConfig object

This object is used to configure the client behavior. You can set maxRetries, requestTimeout, and retryOnServerErrors properties.

Main.swift
let config = ClientConfig(
    followRedirects: true,
    agent: "AptosClient",
    likeAgent: nil,
    requestTimeout: 5000,
    retryOnServerErrors: 3,
    maxRetries: 5,
    cache: false,
    proxy: nil
)

Create the AptosSettings object

This object is used to configure the Aptos network connection. You can set network, fullnode, and faucet properties.

Main.swift
let aptosSettings = AptosSettings(
    network: .devnet,
    fullNode: nil,
    faucet: nil,
    indexer: nil,
    client: nil,
    clientConfig: config,
    fullNodeConfig: nil,
    indexerConfig: nil,
    faucetConfig: nil
)

Create the AptosConfig object

Main.swift
let aptosConfig = AptosConfig(settings: aptosSettings)

Create the Aptos object

This object is used to interact with the Aptos blockchain. It serves as the entry point for all interactions with the blockchain.

Main.swift
let aptos = Aptos(config: aptosConfig, graceFull: false)

Fetch the chain ID

Main.swift
let chainId = try await aptos.getChainId()

Congratulations! You have successfully set up the AptosKit SDK and fetched the chain ID from the Aptos blockchain.

Complete Example

Main.swift
 
import SwiftUI
import AptosKit
 
struct ContentView: View {
@State private var chainId: String? = nil
 
var body: some View {
  VStack {
    if let chainId = chainId {
      Text("Chain ID: \(chainId)")
    } else {
      Text("Fetching Chain ID...")
    }
  }
.padding()
    .onAppear {
    fetchChainId()
  }
}
 
private func fetchChainId() {
  DispatchQueue.main.async {
    Task {
      do {
 
        let clientConfig = ClientConfig(
            followRedirects: true,
            agent: "AptosClient",
            likeAgent: nil,
            requestTimeout: 5000,
            retryOnServerErrors: 3,
            maxRetries: 5,
            cache: false,
            proxy: nil
        )
 
        let aptosSettings = AptosSettings(
            network: .devnet,
            fullNode: nil,
            faucet: nil,
            indexer: nil,
            client: nil,
            clientConfig: clientConfig,
            fullNodeConfig: nil,
            indexerConfig: nil,
            faucetConfig: nil
        )
 
        let aptosConfig = AptosConfig(settings: aptosSettings)
        let aptos = Aptos(config: aptosConfig, graceFull: false)
 
        let chainId = try await aptos.getChainId()
        self.chainId = chainId.expect(message: "Failed...")?.stringValue ?? "null"
      } catch {
        print("Failed to get chain ID: \(error)")
        self.chainId = "Error"
        }
      }
    }
  }
}