Swift implementation of WalletConnect v.2 protocol for native iOS applications

Overview

Wallet Connect v.2 - Swift

Swift implementation of WalletConnect v.2 protocol for native iOS applications.

Requirements

  • iOS 13
  • XCode 13
  • Swift 5

Usage

Responder

Responder client is usually a wallet.

Instantiate a Client

You usually want to have a single instance of a client in you app.

        let metadata = AppMetadata(name: String?,
                                   description: String?,
                                   url: String?,
                                   icons: [String]?)
        let client = WalletConnectClient(metadata: AppMetadata,
                            apiKey: String,
                            isController: Bool,
                            relayHost: String)

The controller client will always be the "wallet" which is exposing blockchain accounts to a "dapp" and therefore is also in charge of signing.

After instantiation of a client set its delegate.

Pair Clients

Pair client with a uri generated by the proposer client.

let uri = "wc:..."
try! client.pair(uri: uri)

Approve Session

Sessions are always proposed by the Proposer client so Responder client needs either reject or approve a session proposal.

class ClientDelegate: WalletConnectClientDelegate {
...
    func didReceive(sessionProposal: SessionProposal) {
        client.approve(proposal: proposal, accounts: [String]) { result in ... }
    }
...

or

    func didReceive(sessionProposal: SessionProposal) {
        client.reject(proposal: proposal, reason: Reason)
    }

NOTE: addresses provided in accounts array should follow CAPI10 semantics.

Handle Delegate methods

    func didReceive(sessionProposal: SessionProposal) {
        // handle session proposal
    }
    func didReceive(sessionRequest: SessionRequest) {
        // handle session request
    }

JSON-RPC Payloads

Receive

You can parse JSON-RPC Requests received from "Requester" in didReceive(sessionRequest: SessionRequest) delegate function.

Request parameters can be type casted based on request method as below:

            let params = try! sessionRequest.request.params.get([EthSendTransaction].self)
Respond
            let jsonrpcResponse = JSONRPCResponse<AnyCodable>(id: request.id, result: AnyCodable(responseParams))
            client.respond(topic: sessionRequest.topic, response: .response(jsonrpcResponse))

Installation

Swift Package Manager

Add .package(url:_:) to your Package.swift:

dependencies: [
    .package(url: "https://github.com/WalletConnect-Labs/WalletConnectSwiftV2", .branch("main")),
],

Example App

open Example/ExampleApp.xcodeproj

License

LGPL-3.0

Comments
  • [Crash] SDK crashes when disconnect from topic

    [Crash] SDK crashes when disconnect from topic

    Describe the bug When disconnecting from topic, SDK crashes sometime.

    WalletConnectNetworking/NetworkingInteractor.swift:98: Fatal error: 'try!' expression unexpectedly raised an error: WalletConnectKMS.Serializer.Errors.symmetricKeyForTopicNotFound
    2022-11-17 07:59:43.276879+1100 Dapper Pro[40117:9253430] WalletConnectNetworking/NetworkingInteractor.swift:98: Fatal error: 'try!' expression unexpectedly raised an error: WalletConnectKMS.Serializer.Errors.symmetricKeyForTopicNotFound
    

    SDK Version

    • Client: Swift
    • Version: 1.0.5

    To Reproduce Steps to reproduce the behavior:

    1. Go to a dApp
    2. Make a connection
    3. Disconnect from the topic
    4. Disconnect again from the topic

    Expected behavior The pairing or session need to be removed from the list

    Screenshots Screenshot 2022-11-17 at 8 00 25 am

    Device:

    • Device: iPhone12 Pro Max
    • OS: iOS16
    bug 
    opened by lmcmz 15
  • WalletConnectSwiftV2 swift package not correctly published

    WalletConnectSwiftV2 swift package not correctly published

    Describe the bug

    Trying to get the hello world project out to test out WalletConnectSwiftV2; can't import the WalletConnectSign object in order to use Sign as in the example here.

    SDK Version

    • Client: Swift
    • Version: 5

    To Reproduce

    1. Add WalletConnectSwiftV2 as a dependency to a Swift/Xcode/iOS project following instructions here.
    2. Type import WalletConnectSign
    3. Notice that you get an error No such module as "WalletConnectSign"

    Expected behavior Following the example app to import WalletConnectSign.

    Screenshots

    Screen Shot 2022-07-12 at 10 23 09 AM our problem.

    Additional context On main branch!

    bug 
    opened by zkhalapyan 9
  • Got error on webSocketNotConnected after scan an QR code

    Got error on webSocketNotConnected after scan an QR code

    Describe the bug For now, the example app is not working when scanning the QR code.

    SDK Version

    • Client: Swift
    • Version: v0.7.0-beta.101

    To Reproduce Steps to reproduce the behavior:

    1. Go to https://react-app.walletconnect.com
    2. Click on connect
    3. Open example wallet App
    4. Scan the QR code
    5. Error shown

    Expected behavior Wallet connect should establish the connection.

    Screenshots Screen Shot 2022-06-18 at 10 59 49 pm

    Device (please complete the following information):

    • Device: iPhone12Pro Max
    • OS: iOS15
    • Browser: Chrome
    bug 
    opened by lmcmz 9
  • Always get Missing package product 'WalletConnect' error when try to run example code

    Always get Missing package product 'WalletConnect' error when try to run example code

    Describe the bug Download the example code

    SDK Version

    • Client: Xcode
    • Version 13.3.1

    To Reproduce Steps to reproduce the behavior:

    1. Download the example code
    2. Build
    3. Get Missing package product 'WalletConnect' error
    4. I try to build WalletConnect scheme, succeed, but get another error: Missing package product 'Web3'

    Expected behavior Example code works

    Screenshots image

    Device (please complete the following information):

    • Device: iPhone13 simulator
    bug 
    opened by Santiago0412 8
  • Use pre-made modal in native iOS (Dapp Support)

    Use pre-made modal in native iOS (Dapp Support)

    From mobile linking qrcode-modal package, npm install --save @walletconnect/qrcode-modal

    Is it possible to use this in a native iOS app, in this case, Xcode project?

    opened by markrachapoom 8
  • No callback received when disconnected

    No callback received when disconnected

    When I manually call Sign to disconnect, I find that there is no disconnect callback on my side. On the contrary, when I disconnect on the browser, all callbacks are normal.

    bug waiting for response 
    opened by Lvykk 7
  • [Sign] proposal public for uniformity

    [Sign] proposal public for uniformity

    Description

    in the kotlin version of the sdk proposal is public. For consistency, the swift proposal is changed to public

    Resolves # (issue)

    How Has This Been Tested?

    Due Dilligence

    • [ ] Breaking change
    • [ ] Requires a documentation update
    opened by kirill09 7
  • Error Initializing with Wallet Connect (dApp -> Rainbow Wallet)

    Error Initializing with Wallet Connect (dApp -> Rainbow Wallet)

    Describe the bug Redirecting the user to Rainbow Wallet and getting an error "Error Initializing Wallet Connect".

    SDK Version

    • Client: Swift / iOS
    • Version: main

    To Reproduce

    The code runs directly inside AppDelegate in a SwiftUI app:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        let metadata = AppMetadata(name: "Example",
                                   description: "The best of the best.",
                                   url:"example.come",
                                   icons:[])
        let client = WalletConnectClient(metadata: metadata,
                                         projectId: "607d02fd15dee0875944ded71bab8ce0",
                                         isController: false,
                                         relayHost: "wss://relay.walletconnect.com");
        let connectParams = ConnectParams(
            permissions: SessionType.Permissions(
                blockchain: SessionType.Blockchain(chains: ["eip155:1"]),
                jsonrpc: SessionType.JSONRPC(methods: ["eth_sendTransaction", "personal_sign", "eth_signTypedData"]),
                notifications: SessionType.Notifications(types: [""])))
        
        do {
            if let uri = try client.connect(params: connectParams), let url = URL(string: uri) {
                if (UIApplication.shared.canOpenURL(url)) {
                    print(uri)
                    DispatchQueue.main.asyncAfter(deadline: .now() + 10.0) {
                        UIApplication.shared.open(url, options: [:], completionHandler: nil)
                    }
                    
                }
            }
        } catch {
            print("[PROPOSER] Pairing connect error: \(error)")
        }
        
        client.delegate = self;
        return true
    }
    

    Expected behavior For Rainbow wallet to ask if it's ok to connect.

    Screenshots

    IMG_7379

    bug 
    opened by zkhalapyan 7
  • UI tests

    UI tests

    What changed

    • UITesting environment
    • TU001, TU002, TU004 cases covered
    • Alert on Ping response

    Video https://drive.google.com/file/d/11uRbgL1gZprK_LVotNO2oKy2Ml6dX_kI/view?usp=sharing

    opened by flypaper0 7
  • Investigate pairing metadata nil

    Investigate pairing metadata nil

    I'm try to get information about dApp metadata after approve(session). Session was settled, and it works normally, but peer field in pairing sill nil.

    bug accepted 
    opened by llbartekll 6
  • Is it possible delete Settled Pairings ?

    Is it possible delete Settled Pairings ?

    While testing the demo app, I can see there are a lot of old existing in my cache. And it seems like there is no way for now in the SDK that we can delete those settled pairings. It might be indeed if the wallet wanna reset itself to a fresh new state.

    The duplicated pairing has been created when the same dapp and same wallet connect or reconnect multiple times.

    IMG_9186

    enhancement 
    opened by lmcmz 6
  • Feature/chat wallet app extraction

    Feature/chat wallet app extraction

    • Remove wallet from Chat app
    • Implement new Wallet app with updated design using Web3Wallet lib
    • [ ] Breaking change
    • [x] Requires a documentation update
    opened by alexander-lsvk 1
  • [Push] notification decryption

    [Push] notification decryption

    Description

    • add resubscription service for push sdk
    • add NotificationService target for example wallet that decrypt PNs delivered by the echo server
    • add PushDecryptionService that shares the keychain group with push sdk

    Resolves # (issue)

    How Has This Been Tested?

    Delivery of PNs has been tested with Push Notification Tester. Here is an example payload, encrypted message has been generated by JS dapp.

    {"aps":{
         "mutable-content" : 1
    },
    "topic":"54855cd02500161515c75d97540c39caf193ce056d88d7cc36a41da895493f29",
    "ciphertext":"AIvB700nz1RdAHOxzIVrBhtn/z8Zu9eXN91YJHjHh1pLGmvPasEMazkD3vadMewd9j6T8mtJNKYWizh81vIH21E5DSHKefSsYwa638jBsyp75jIMvT9IdU4kk2CZNJ+jwnSpwq3bo4Tw9XRl2ABXKLSsWsGfr6kDViZUSu5wt8A5rIbtUQ4xNeshbOyOCxnk6P3IafiFFsQUS/jN2Ya1GKkZ7vlEjqxL+kSdLffxwu3vb8WqhJrGbSlbD9XRaGA18XMEmPG5gRsGUU+wGg=="
    }
    

    Due Dilligence

    • [ ] Breaking change
    • [x] Requires a documentation update
    accepted 
    opened by llbartekll 0
  • Does cosmostation support wallet connect?

    Does cosmostation support wallet connect?

    Hello,

    I'm trying to connect wallet on cosmostation from my native ios dapp using wallet connect. Is there any possibility to connect cosmostation wallet using deep linking(Wallet connect) from native ios app?

    IMG_A9211E17575A-1

    bug 
    opened by ShangChiYan 0
Releases(1.2.0)
  • 1.2.0(Jan 2, 2023)

    What's Changed

    • [Push, Echo] api milestone 1 by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/624
    • [Sign] Sessions publisher by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/634
    • [Push, Echo] exposes all push client methods with implementations by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/635
    • [Sign] Cleanup method opened by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/636
    • [Core] Add timestamp to logging by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/642
    • [Sign] PeerMetadata for Pairing by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/641
    • Web3Wallet implementation + integration tests by @alexander-lsvk in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/638

    New Contributors

    • @alexander-lsvk made their first contribution in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/638

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/1.1.0...1.2.0

    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Dec 7, 2022)

    What's Changed

    • [CI] GH token for User Agent job by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/613
    • [Readme] Cocoapods instructions by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/615
    • [Verify] Add Verify target by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/591
    • [Auth] Signer factory #592 by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/607
    • [Auth] Multi account support by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/616
    • [CI] XCode 14.1 by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/623

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/1.0.6...1.1.0

    Source code(tar.gz)
    Source code(zip)
  • 1.0.6(Nov 28, 2022)

    What's Changed

    • [Sample] Solana sign transaction by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/579
    • [Sign] remove force unwrap from request by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/597
    • [Sign] #575 concurrent settle request and propose response by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/594
    • [Sign] Response error fix by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/600
    • [Relay] Socket reconnection by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/601

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/1.0.5...1.0.6

    Source code(tar.gz)
    Source code(zip)
  • 1.0.5(Nov 8, 2022)

    What's Changed

    • [Infra] User Agent automation by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/566
    • [Infra] Cocoapods support by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/569
    • [Infra] Resources Bundle fix by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/573

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/v1.0.4...1.0.5

    Source code(tar.gz)
    Source code(zip)
  • v1.0.4(Nov 2, 2022)

  • v1.0.3(Nov 1, 2022)

    What's Changed

    • [Showcase] Stop capture session after scan by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/559
    • [Core] User agent v1.0.3 by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/562

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/v1.0.2...v1.0.3

    Source code(tar.gz)
    Source code(zip)
  • v1.0.2(Oct 28, 2022)

    What's Changed

    • [Chat] instance wrapper, rename package by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/555
    • [CI] Derived data cache by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/554
    • [Core] Filename duplicates removed by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/556
    • [Chat] PubKey removed from invite by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/557
    • [Chat] Chat alpha by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/558

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/v1.0.0...v1.0.2

    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Oct 24, 2022)

    What's Changed

    • [Pairing] add debug availability for cleanup method by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/552
    • [Pairing] Hot fix for pairing interacting protocol by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/553
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Oct 21, 2022)

    What's Changed

    • [Relay] Retry on connection error by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/506
    • [Core] RPCHistory factory by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/510
    • [Sign] Networking package by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/498
    • [Networking] #502 Add tll and prompt to requests by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/514
    • [Bugfix] Combine timeout for dispatcher retry by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/516
    • [Pair] Pairing API by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/511
    • [CI] Default timeout increased by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/518
    • [CI] Project ID from secrets by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/519
    • [Core] AppMetadata redirect by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/523
    • [Core] Web3 from WalletConnect repo #426 by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/522
    • [Pair] Add Pairing Client to Auth by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/521
    • [Auth] Remove pairing methods from auth by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/531
    • [Env] Default relay host by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/534
    • [Pair] Activate Pair Service by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/533
    • [Pair] Pairing error response test by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/535
    • [Bugfix] tvOS operatingSystem by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/538
    • [Sign] Pairing API integration by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/536
    • [Apps] Wallet pairing integration by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/541
    • [Networking] expose networking client interface by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/543
    • [Networking] Expose client ID by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/545
    • [Pair] update method unsupported by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/547
    • [Auth] EIP1271 signature verification by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/546
    • [Pair] Pairing request subscription fix by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/548
    • [Sign] Release v1.0.0 by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/550

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/v0.10.3-rc0...v1.0.0

    Source code(tar.gz)
    Source code(zip)
  • v0.10.3-rc0(Sep 15, 2022)

    What's Changed

    • [Sign] Restore integration tests
    • [Relay] Fot fix for json rpc duplicates
    • [Core] Wallet hot fix
    • [Sign] Fix race condition with storing the pairing symm key

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/v0.10.2-rc.0...v0.10.3-rc0

    Source code(tar.gz)
    Source code(zip)
  • v0.10.2-rc.0(Sep 9, 2022)

    What's Changed

    • [Auth] Auth sample by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/469
    • [Auth] Sample Wallet scan by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/470
    • [API] Update public api docs by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/473
    • [Auth] #472 extend pairing by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/477
    • [Interface] Replace string with WalletConnectURI by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/475
    • [Logger] Unexpected keyNotFound error #420 by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/474
    • [App] prepare showcase app for testflight by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/482
    • [Refactor] Networking package Part 1 #391 by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/480
    • [App] Add info plist values to showcase app by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/484
    • [Refactor] Generic NetworkInteractor by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/483
    • [Auth, Sign] #485 remove pairing by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/486
    • [Pairing] #487 pairing ping by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/490
    • [CI] Host URL arg by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/492
    • [Auth] Rename cacao params by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/493
    • [Relay] feat: allow to pass relay endpoint by @arein in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/496
    • [Auth] #488 get pairings by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/495
    • [Core] update user agent by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/497

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/v0.10.1-rc.0...v0.10.2-rc.0

    Source code(tar.gz)
    Source code(zip)
  • v0.10.1-rc.0(Aug 25, 2022)

    What's Changed

    • [Auth] #462 test message compromised by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/463
    • [Hotfix] Fix background task not invalidated by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/467

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/v0.10.0-rc.0...v0.10.1-rc.0

    Source code(tar.gz)
    Source code(zip)
  • v0.10.0-rc.0(Aug 24, 2022)

    What's Changed

    • [Sign] #372 Clean protocol codes by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/419
    • [Auth] #382 auth networking interactor by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/421
    • fix: intake process does not work for non-public org members by @arein in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/407
    • [Auth] #378 auth client by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/425
    • [Auth] Cacao signer by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/405
    • [Core] WalletConnectRouter by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/424
    • Create pull_request_template.md by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/428
    • [Hotfix] EIP-155 signature fix by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/436
    • [Relay] Relay Singleton instance by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/438
    • [Auth] #434 auth client factory by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/441
    • [Auth] #440 update public interface by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/444
    • [Auth] #416 auth request test by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/448
    • [Auth] #415 auth instance by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/452
    • Adds more unit tests for WCPairing by @MaisaMilena in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/437
    • [Auth] Handle errors by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/449
    • [Auth] #453 invalid signature error by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/457
    • [Relay] Add invalidation of background task by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/458
    • [Auth] Test respond error by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/461
    • #454 Update WalletConnectURI with API identifier prefix by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/455

    New Contributors

    • @MaisaMilena made their first contribution in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/437

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/v0.9.3-rc.0...v0.10.0-rc.0

    Source code(tar.gz)
    Source code(zip)
  • v0.9.3-rc.0(Aug 8, 2022)

    What's Changed

    • [Auth] #396 auth respond subscriber by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/404
    • Fix unit test run by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/410
    • [Auth] #394 SIWE messge formatter by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/406
    • update user-agent by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/418
    • v0.9.3-rc.0 by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/412

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/v0.9.2-rc.0...v0.9.3-rc.0

    Source code(tar.gz)
    Source code(zip)
  • v0.9.2-rc.0(Aug 5, 2022)

    What's Changed

    • [Refactor] SDK's Factories by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/363
    • [CI] Upgrade XCode on GH Runner by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/369
    • [Auth] #367 auth target by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/371
    • #347 extend pairing on approve proposal by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/373
    • #379 auth core types by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/381
    • [Auth] Pairing Services by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/383
    • [Core] Allow to override key in keychain by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/387
    • Add user agent for mac os by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/386
    • feat: moves issues to the Swift board by @arein in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/388
    • [Network] Refactor: #355 Relay client RPC by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/384
    • #376 auth request service by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/385
    • feat: only run ui test on release by @arein in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/392
    • [Network] #364: Change relay methods prefix from "iridium" to "irn" by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/402
    • [Tests] #250 Session Request integration tests re-enabled by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/398
    • [Auth] #395 Auth Request Subscriber by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/397
    • [Auth] #377 Auth respond service by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/401
    • Version bump to v0.9.2-rc.0 by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/408

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/v0.9.1-rc.0...v0.9.2-rc.0

    Source code(tar.gz)
    Source code(zip)
  • v0.9.1-rc.0(Jul 26, 2022)

    What's Changed

    • feat: reorders the ci steps to decrease ci time by @arein in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/354
    • feat: adds workflow badges by @arein in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/356
    • #248 fix crash on pair by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/365
    • Fix sdk version in user agent by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/366

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/v0.9.0-rc.0...v0.9.1-rc.0

    Source code(tar.gz)
    Source code(zip)
  • v0.9.0-rc.0(Jul 19, 2022)

    What's Changed

    • #296 Exchange messages between clients by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/309
    • [Showcase] Chat sample app template by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/315
    • [Chat] Feature: #305 Keyserver registry service by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/311
    • [Chat] Showcase app UI #293 by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/317
    • [Chat] expose interfaces, add storage by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/316
    • [Tests] #250: Re-enable session delete integration test by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/318
    • [Chat] Sample app (demo) by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/320
    • [Chat] Message callback on send by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/327
    • [Chat] sync chat sdk with kotlin implementation and add reject method by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/322
    • [Sign] add 6000 code on disconnect by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/328
    • [Chat] #325 Messages and threads persistent store by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/332
    • [Chat] #326 resubscribe for threads by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/333
    • [Chat] Sample app welcome flow by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/334
    • [Network] Feature: #330 Granular tags by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/335
    • [Chat] #337 fix hardcoded self account by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/338
    • [Chat] #336 remove messages duplicates by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/339
    • [Chat] Sample App - Empty state view by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/341
    • [Bugfix] #340: Required namespaces check by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/342
    • feat: parallelizes build by @arein in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/344
    • feat: uses concurrency to cancel obsolete runs by @arein in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/346
    • add user agent by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/349
    • [Release] Develop -> Main v2-rc0 by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/350
    • update session namespace on response only by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/351
    Source code(tar.gz)
    Source code(zip)
  • v0.8.1-beta.102(Jul 7, 2022)

    What's Changed

    • [Bugfix] Bug in JWT encoder by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/312

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/v0.8.0-beta.102...v0.8.1-beta.102

    Source code(tar.gz)
    Source code(zip)
  • v0.8.0-beta.102(Jul 5, 2022)

    What's Changed

    • [Chat] Deliver an invite by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/254
    • [Core] JSON-RPC Package (& Commons) by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/261
    • [Chat] Registry by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/262
    • [Core] ApproveEngine async calls by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/270
    • [Chat] Create thread by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/266
    • [Core] Envelope types by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/279
    • [Sign] Feature: #252 Update session namespaces checks against required namespaces by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/276
    • [CI] SPM Cache by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/277
    • [Wallet] State synchronisation by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/274
    • [Core] Add SocketAuthenicator and JWT by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/283
    • [Core] ClientID Storage by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/294
    • [SDK] Inject WebSocket factory by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/281
    • [Feature] Ed25519 DID Key Factory by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/299
    • [Feature] Protocol renaming by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/301
    • [Feature] Local nonce generation by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/304
    • [Network] Message Tag by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/300
    • [Core] Add claims to jwt by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/307

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/v0.7.0-beta.101...v0.8.0-beta.102

    Source code(tar.gz)
    Source code(zip)
  • v0.7.0-beta.101(Jul 4, 2022)

    What's Changed

    • Cleanup Service + SequenceStore refactor by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/241
    • Deliver an invite by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/254
    • UI tests by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/242
    • Approve engine refactor by @flypaper0 in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/260
    • #256 JSON-RPC Package (& Commons) by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/261

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/v0.6.0-beta.100...v0.7.0-beta.101

    Source code(tar.gz)
    Source code(zip)
  • v0.6.0-beta.100(May 26, 2022)

    What's Changed

    • #189 Fix build dependencies in main by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/196
    • Improve camera session in sample wallet by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/239
    • rename update expiry to extend on Sign publishers in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/237
    • Rename Auth package to Sign https://github.com/WalletConnect/WalletConnectSwiftV2/pull/232
    • Edit session namespace https://github.com/WalletConnect/WalletConnectSwiftV2/pull/231
    • Update namespaces https://github.com/WalletConnect/WalletConnectSwiftV2/pull/230
    • fix Auth connect method https://github.com/WalletConnect/WalletConnectSwiftV2/pull/229
    • remove getAcknowledgedSessions https://github.com/WalletConnect/WalletConnectSwiftV2/pull/228
    • auth wrapper https://github.com/WalletConnect/WalletConnectSwiftV2/pull/222
    • Permission validation for requests and events https://github.com/WalletConnect/WalletConnectSwiftV2/pull/221
    • Namespaces sample app https://github.com/WalletConnect/WalletConnectSwiftV2/pull/218
    • Permission validation for requests and events #221
    • update readme, update Concurrency #217
    • Namespace validation #215
    • rename client #214
    • Update namespaces #212
    • Add Concurrency #206
    • Namespace chains check #204
    • required chainid #203
    • Networking #200
    • Fix build dependencies in main #196
    • fix wallet to not operate on mocked data #194
    • completion errors on public methods #191
    • Refactor proposal view to work with namespaces #188
    • beta100 by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/238

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/0.5.0...v0.6.0-beta.100

    beta.100 migration guide: https://gist.github.com/llbartekll/2048f1a53799430b12a321d7d149db43

    Source code(tar.gz)
    Source code(zip)
  • 0.5.0(Feb 18, 2022)

    What's Changed

    • #26 push notification support by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/79
    • #11 auto/manual socket connection by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/66
    • #67 remove controller flag by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/68
    • Rejection reasons by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/70
    • Remove client name by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/71
    • #54 Public account type by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/65
    • #17 engine responses by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/72
    • Remove unused secure storage by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/75
    • #74 extract kms by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/76
    • fix inconsistency with js sdk by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/78

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/0.4.0...0.5.0

    Source code(tar.gz)
    Source code(zip)
  • 0.4.0(Feb 4, 2022)

    What's Changed

    • #35 Update permission checks by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/45
    • Fix some build warnings and typos by @hewigovens in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/47
    • register background task by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/42
    • Make WalletConnectURI public by @hewigovens in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/53
    • Example Apps by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/48
    • #49 improve sample dapp by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/57
    • #56 query record by id by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/59
    • #50 Update error reason codes by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/58
    • #36 Upgrade method permissions checks by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/62
    • #28 universal linking by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/61

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/0.3.0...0.4.0

    Source code(tar.gz)
    Source code(zip)
  • 0.3.0(Jan 21, 2022)

    This release incorporates community feedback, and has several improvements.

    What's Changed

    • Buildable api documentation
    • Package separation
    • Networking layer improvements
    • Bind pairing engine responses by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/20
    • Fast workaround fix for pairing responses by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/29
    • Message signing by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/23
    • #24 filter client sequences by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/25
    • Engine request improvement by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/30
    • #19 tests fix by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/32
    • example app improvements by @llbartekll in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/31
    • Remove CryptoSwift by @hewigovens in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/38
    • #33 Validation for CAIP-2 and CAIP-10 by @MisterVants in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/34

    New Contributors

    • @hewigovens made their first contribution in https://github.com/WalletConnect/WalletConnectSwiftV2/pull/38

    Full Changelog: https://github.com/WalletConnect/WalletConnectSwiftV2/compare/0.2.0...0.3.0

    Source code(tar.gz)
    Source code(zip)
Owner
WalletConnect
Open protocol connecting Wallets to Dapps
WalletConnect
Language Server Protocol (LSP) client for Swift

LanguageClient This is a Swift library for abstracting and interacting with language servers that implement the Language Server Protocol. It is built

Chime 35 Jan 1, 2023
Alamofire Network Layer written in swift 5 using the protocol oriented, combine, UIKit, MVVM.

CoreAPI-iOS This project Contains Alamofire Network layer Based on Protocol Oriented Concept and Combine Framework. It is created with UIKit, Alamofir

Mehran Kamalifard 27 Nov 11, 2022
Restofire is a protocol oriented networking client for Alamofire

Restofire is a protocol oriented networking client for Alamofire. Features Requirements Installation Usage License Features Global Configuration for h

Restofire 381 Sep 29, 2022
FreeRDP is a free remote desktop protocol library and clients

FreeRDP: A Remote Desktop Protocol Implementation FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache lic

null 7.8k Jan 8, 2023
GeminiProtocol - URLSession support for the Gemini Protocol

GeminiProtocol Network.Framework and URLSession support for the Gemini Protocol

Izzy 3 Feb 16, 2022
A Combine-style wrapper around Network's NWConnection with a UDP protocol

A Combine-style wrapper around Network's NWConnection with a UDP protocol

Emlyn Bolton 3 Sep 26, 2022
VFNetwork is a protocol-oriented network layer that will help you assemble your requests in just a few steps.

Simple, Fast and Easy. Introduction VFNetwork is a protocol-oriented network layer that will help you assemble your requests in just a few steps. How

Victor Freitas 4 Aug 22, 2022
🌏 A zero-dependency networking solution for building modern and secure iOS, watchOS, macOS and tvOS applications.

A zero-dependency networking solution for building modern and secure iOS, watchOS, macOS and tvOS applications. ?? TermiNetwork was tested in a produc

Bill Panagiotopoulos 90 Dec 17, 2022
Lightweight library for web server applications in Swift on macOS and Linux powered by coroutines.

Why Zewo? • Support • Community • Contributing Zewo Zewo is a lightweight library for web applications in Swift. What sets Zewo apart? Zewo is not a w

Zewo 1.9k Dec 22, 2022
Frank is a DSL for quickly writing web applications in Swift

Frank Frank is a DSL for quickly writing web applications in Swift with type-safe path routing. Sources/main.swift import Frank // Handle GET request

Kyle Fuller Archive 377 Jun 29, 2022
ROAD – Rapid Objective-C Applications Development

A set of reusable components taking advantage of extra dimension Attribute-Oriented Programming adds. Components Core - support for attributes, reflec

EPAM Systems 54 Nov 19, 2022
iOS implementation of OmniEdge VPN

Overview This repository contains the open source OmniEdge Evalution Version iOS Client code. No

OmniEdge 50 Nov 22, 2022
Easy to use SMJobBless, along with a full Swift implementation of the Authorization Services and Service Management frameworks

Leverage SMJobBless functionality with just one function call: let message = "Example App needs your permission to do thingamajig." let icon = Bundle.

null 20 Dec 23, 2022
DICOM implementation written in Swift

DcmSwift DcmSwift is a (partial, work in progress) DICOM implementation written

OPALE 6 Dec 1, 2022
A slim implementation of a websocket server using Swift and Vapor 4.0.

Swift Websocket Server Example using Vapor 4.0 This project includes a minimum working example for a websocket server written in Swift. To interact wi

Adrian Hupka 5 Sep 22, 2022
Swift implementation of libp2p, a modular & extensible networking stack

Swift LibP2P The Swift implementation of the libp2p networking stack Table of Contents Overview Disclaimer Install Usage Example API Contributing Cred

null 19 Dec 18, 2022
Native ios app to download tiktoks localy made in swift with SwiftUI

sequoia Native ios app to download tiktoks localy made in swift with SwiftUI without external dependencies. features save video localy view saved vide

fleur 9 Dec 11, 2022
WebSocket implementation for use by Client and Server

WebSocket ⚠️ This module contains no networking. To create a WebSocket Server, see WebSocketServer. To create a WebSocket Client, see WebSocketClient.

Zewo Graveyard 63 Jan 29, 2022
This is a completely fresh implementation of the iCepa app.

iCepa Restart This is a completely fresh implementation of the iCepa app. It is a testbed for Network Extension experiments for advanced VPN-style app

The iCepa Project 684 Dec 12, 2022