Swift is a strongly typed language that has long been used not only for iOS development. Apple is actively promoting it to new platforms and today it can be used for almost any task. Thanks to this, this implementation provides the work of TVM (toncoin, everscale, venom, gosh) SDK on many platforms at once, including the native one for mobile phones. Let me remind you that swift can also be built for android.
OS | Result |
---|---|
MacOS | ✅ |
Linux | ✅ |
iOS | ✅ |
Windows | Soon |
You need to get an API-KEY here https://dashboard.evercloud.dev
All requests are async
import EverscaleClientSwift
var config: TSDKClientConfig = .init()
config.network = TSDKNetworkConfig(endpoints: ["https://net.ton.dev"])
let client: TSDKClientModule = .init(config: config)
// Crypto
client.crypto.factorize(TSDKParamsOfFactorize(composite: "17ED48941A08F981")) { (response) in
print(response.result?.factors)
}
// Boc
let payload: TSDKParamsOfParse = .init(boc: "te6ccgEBAQEAWAAAq2n+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE/zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzSsG8DgAAAAAjuOu9NAL7BxYpA")
client.boc.parse_message(payload) { (response) in
if let result = response.result, let parsed: [String: Any] = result.parsed.toDictionary() {
print(parsed["id"])
print(parsed["src"])
print(parsed["dst"])
}
}
client.crypto.factorize(TSDKParamsOfFactorize(composite: "17ED48941A08F981")) { (response) in
if let error = response.error {
print(error.data.toJSON())
print(error.code)
}
}
cd everscale-client-swift
bash scripts/install_tonsdk.sh
Install Rust to your OS
git clone https://github.com/tonlabs/ever-sdk
cd ./SDK
cargo update
cargo build --release
copy or create symlink of dynamic library
macOS :
./SDK/target/release/libton_client.dylib
to
/usr/local/lib/libton_client.dylib
Linux :
./SDK/target/release/libton_client.so
to
/usr/lib/libton_client.so
Create pkgConfig file :
macOS :
/usr/local/lib/pkgconfig/libton_client.pc
prefix=/usr/local
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib
Name: ton_client
Description: ton_client
Version: 1.0.0
Cflags: -I${includedir}
Libs: -L${libdir} -lton_client
Linux:
/usr/lib/pkgconfig/libton_client.pc
prefix=/usr
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib
Name: ton_client
Description: ton_client
Version: 1.0.0
Cflags: -I${includedir}
Libs: -L${libdir} -lton_client
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh || true && \
source ~/.profile
rustup target add aarch64-apple-ios x86_64-apple-ios || true && \
cargo install cargo-lipo
Go to your project folder and:
git clone https://github.com/tonlabs/SDK.git || true && \
cd ./SDK
git pull --ff-only || true && \
cargo update || true && \
cargo lipo --release
⚠️ Wait installation
In xcode File > Add files to "Name Your Project" navigate to ./SDK/ton_client/tonclient.h
Create bridge. In xcode File > New > File, select Header File, set name for example Tonclient-Bridging-Header.h
and add
#include <stdbool.h>
#import "tonclient.h"
like this:
#ifndef Tonclient_Bridging_Header_h
#define Tonclient_Bridging_Header_h
#include <stdbool.h>
#import "tonclient.h"
#endif
Please, set custom working directory to project folder for your xcode scheme. This is necessary for the relative path "./" to this library folders. You may change it with the xcode edit scheme menu Product > Scheme > Edit Scheme menu Run submenu Options enable checkbox "Use custom directory" and add custom working directory.
Or if above variant not available, then inside file path_to_this_library/.swiftpm/xcode/xcshareddata/xcschemes/TonClientSwift.xcscheme
set to tag "LaunchAction" absolute path to this library with options:
useCustomWorkingDirectory = "YES"
customWorkingDirectory = "/path_to_this_library"
server_address=https://net.ton.dev
giver_address=0:653b9a6452c7a982c6dc92b2da9eba832ade1c467699ebb3b43dca6d77b780dd
giver_abi_name=Giver
giver_function=grant
Optional: Install locale NodeSE for tests if you needed:
server_address=http://localhost:80
giver_abi_name=GiverNodeSE_v2
giver_amount=10000000000
cd everscale-client-swift
bash api_generate.sh
link |
Stars: 19 |
Last commit: 3 weeks ago |
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics