To run the example project, clone the repo, and run pod install
from the Example directory first.
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
}
}
}
nearclientios makes use of Swift's async/await and thus requires iOS 13.
NEAR Inc
nearclientios is available under the MIT license. See the LICENSE file for more info.