Skip to content
This repository has been archived by the owner on Jul 1, 2023. It is now read-only.

here-wallet/near-swift-sdk

Repository files navigation

Near

Build Status Version License MIT Platform

Example

To run the example project, clone the repo, and run pod install from the Example directory first.

Usage

import nearclientios
class ViewController: UIViewController, WalletSignInDelegate {
  private var walletAccount: WalletAccount?
  private var near: Near?

  override func viewDidLoad() {
    super.viewDidLoad()
    let keyStore = KeychainKeyStore(keychain: .init(service: "example.keystore"))
    let config = NearConfig(
      networkId: "testnet", // "default" for mainnet 
      nodeUrl: URL(string: "https://rpc.testnet.near.org")!, // "https://rpc.mainnet.near.org" for mainnet
      masterAccount: nil,
      keyPath: nil,
      helperUrl: nil,
      initialBalance: nil,
      providerType: .jsonRPC(URL(string: "https://rpc.testnet.near.org")!), // "https://rpc.mainnet.near.org" for mainnet
      signerType: .inMemory(keyStore),
      keyStore: keyStore,
      contractName: nil,
      walletUrl: "https://wallet.testnet.near.org" // "https://wallet.near.org" for mainnet
    )
    near = try! Near(config: config)
    walletAccount = try! WalletAccount(near: near!, authService: DefaultAuthService.shared)
    let appName = UIApplication.name ?? "signInTitle"
    DefaultAuthService.shared.walletSignIn = self
    try! await walletAccount!.requestSignIn(contractId: nil, title: appName, presentingViewController: self)
  }
  func completeSignIn(url: URL) async {
    try! await walletAccount?.completeSignIn(url: url)
    MainActor.run {
      //do any additional UI work on the main thread after sign in is complete
    }
  }
}

Requirements

nearclientios makes use of Swift's async/await and thus requires iOS 13.

Installation

Author

NEAR Inc

License

nearclientios is available under the MIT license. See the LICENSE file for more info.