From daf371ff734d2577699a5a75dbdcd9ecd9359396 Mon Sep 17 00:00:00 2001 From: Mpendulo Ndlovu Date: Fri, 18 Aug 2023 11:38:44 +0200 Subject: [PATCH 01/14] Improve message handling --- .../Classes/Communication/SocketClient.swift | 46 +++++++++++++++---- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift b/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift index f80de72..f1616d3 100644 --- a/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift +++ b/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift @@ -229,10 +229,8 @@ private extension SocketClient { let message = data.first as? [String: Any] else { return } - if - let message = message["message"] as? [String: Any], - message["type"] as? String == KeyExchangeType.start.rawValue { - self.keyExchange.reset() + if !self.isValidMessage(message: message) { + return } if !self.keyExchange.keysExchanged { @@ -244,6 +242,36 @@ private extension SocketClient { } } } + + func isValidMessage(message: [String: Any]) -> Bool { + if + let message = message["message"] as? [String: Any], + let type = message["type"] as? String { + if type == "ping" { + return false + } + + if type.contains("key_handshake") { + return true + } else if !keyExchange.keysExchanged { + return false + } + } + + return true + } + + func isKeyExchangeMessage(_ message: [String: Any]) -> Bool { + if + let msg = message["message"] as? [String: Any], + let type = msg["type"] as? String, + type.contains("key_handshake") { + handleReceiveKeyExchange(message) + return true + } + + return false + } // MARK: Socket disconnected event @@ -286,6 +314,10 @@ private extension SocketClient { } func handleMessage(_ msg: [String: Any]) { + if isKeyExchangeMessage(msg) { + return + } + guard let message = Message.message(from: msg) else { Logging.error("Could not parse message \(msg)") return @@ -376,8 +408,6 @@ extension SocketClient { do { let encryptedMessage: String = try self.keyExchange.encryptMessage(message) - // debug code - let data = try! JSONEncoder().encode(message) let message: Message = .init( id: self.channelId, message: encryptedMessage @@ -396,8 +426,6 @@ extension SocketClient { do { let encryptedMessage: String = try self.keyExchange.encryptMessage(message) - // debug code - let data = try! JSONEncoder().encode(message) let message: Message = .init( id: self.channelId, message: encryptedMessage @@ -411,7 +439,6 @@ extension SocketClient { } else { do { let encryptedMessage: String = try self.keyExchange.encryptMessage(message) - let data = try! JSONEncoder().encode(message) let message: Message = .init( id: channelId, message: encryptedMessage @@ -423,7 +450,6 @@ extension SocketClient { } } } else { - let data = try! JSONEncoder().encode(message) let message = Message( id: channelId, message: message From d6455f47911cf1c2d40ddd2f1d897817caa214c1 Mon Sep 17 00:00:00 2001 From: Mpendulo Ndlovu Date: Fri, 18 Aug 2023 11:39:14 +0200 Subject: [PATCH 02/14] Update SDK version number --- README.md | 2 +- metamask-ios-sdk.podspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a8f36e2..40af37b 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ To add MetaMask iOS SDK as an SPM package to your project, in Xcode select: `Fil dependencies: [ .package( url: "https://github.com/MetaMask/metamask-ios-sdk", - from: "0.2.0" + from: "0.2.1" ) ] ``` diff --git a/metamask-ios-sdk.podspec b/metamask-ios-sdk.podspec index 258632a..3d8141d 100644 --- a/metamask-ios-sdk.podspec +++ b/metamask-ios-sdk.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'metamask-ios-sdk' - s.version = '0.2.0' + s.version = '0.2.1' s.summary = 'Enable users to easily connect with their MetaMask Mobile wallet.' s.swift_version = '5.0' From 172e9ccc15ffd6badedfe2cdbe9bc5dfab4bf620 Mon Sep 17 00:00:00 2001 From: Mpendulo Ndlovu Date: Fri, 18 Aug 2023 11:39:55 +0200 Subject: [PATCH 03/14] Update example project to sign with any selected network --- Example/metamask-ios-sdk/SignView.swift | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Example/metamask-ios-sdk/SignView.swift b/Example/metamask-ios-sdk/SignView.swift index cdd6b9e..2bc015b 100644 --- a/Example/metamask-ios-sdk/SignView.swift +++ b/Example/metamask-ios-sdk/SignView.swift @@ -10,7 +10,7 @@ import metamask_ios_sdk struct SignView: View { @ObservedObject var ethereum: Ethereum = MetaMaskSDK.shared.ethereum - @State var message = "{\"domain\":{\"chainId\":1,\"name\":\"Ether Mail\",\"verifyingContract\":\"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC\",\"version\":\"1\"},\"message\":{\"contents\":\"Hello, Linda!\",\"from\":{\"name\":\"Aliko\",\"wallets\":[\"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\",\"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF\"]},\"to\":[{\"name\":\"Linda\",\"wallets\":[\"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\",\"0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57\",\"0xB0B0b0b0b0b0B000000000000000000000000000\"]}]},\"primaryType\":\"Mail\",\"types\":{\"EIP712Domain\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"version\",\"type\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\"}],\"Group\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"members\",\"type\":\"Person[]\"}],\"Mail\":[{\"name\":\"from\",\"type\":\"Person\"},{\"name\":\"to\",\"type\":\"Person[]\"},{\"name\":\"contents\",\"type\":\"string\"}],\"Person\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"wallets\",\"type\":\"address[]\"}]}}" + @State var message = "" @State private var cancellables: Set = [] @@ -57,6 +57,16 @@ struct SignView: View { } } } + .onAppear { + updateMessage() + } + .onChange(of: ethereum.chainId) { _ in + updateMessage() + } + } + + func updateMessage() { + message = "{\"domain\":{\"chainId\":\"\(ethereum.chainId)\",\"name\":\"Ether Mail\",\"verifyingContract\":\"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC\",\"version\":\"1\"},\"message\":{\"contents\":\"Hello, Linda!\",\"from\":{\"name\":\"Aliko\",\"wallets\":[\"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\",\"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF\"]},\"to\":[{\"name\":\"Linda\",\"wallets\":[\"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\",\"0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57\",\"0xB0B0b0b0b0b0B000000000000000000000000000\"]}]},\"primaryType\":\"Mail\",\"types\":{\"EIP712Domain\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"version\",\"type\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\"}],\"Group\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"members\",\"type\":\"Person[]\"}],\"Mail\":[{\"name\":\"from\",\"type\":\"Person\"},{\"name\":\"to\",\"type\":\"Person[]\"},{\"name\":\"contents\",\"type\":\"string\"}],\"Person\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"wallets\",\"type\":\"address[]\"}]}}" } func signInput() { From c5006363cff58e1ebfac22d761312d78e323f1ae Mon Sep 17 00:00:00 2001 From: Mpendulo Ndlovu Date: Fri, 18 Aug 2023 12:08:06 +0200 Subject: [PATCH 04/14] Abstract key exchange check --- .../metamask-ios-sdk/Classes/Communication/SocketClient.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift b/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift index f1616d3..0d5f5dc 100644 --- a/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift +++ b/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift @@ -266,7 +266,6 @@ private extension SocketClient { let msg = message["message"] as? [String: Any], let type = msg["type"] as? String, type.contains("key_handshake") { - handleReceiveKeyExchange(message) return true } @@ -315,6 +314,7 @@ private extension SocketClient { func handleMessage(_ msg: [String: Any]) { if isKeyExchangeMessage(msg) { + handleReceiveKeyExchange(msg) return } From 76fbcd1e994862072d08eb392c6ed6d6692cde4a Mon Sep 17 00:00:00 2001 From: Mpendulo Ndlovu Date: Fri, 1 Sep 2023 19:25:09 +0200 Subject: [PATCH 05/14] Don't terminate socket connection of clients disconnected --- .../Classes/Communication/SocketChannel.swift | 2 +- .../Classes/Communication/SocketClient.swift | 8 -------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/Sources/metamask-ios-sdk/Classes/Communication/SocketChannel.swift b/Sources/metamask-ios-sdk/Classes/Communication/SocketChannel.swift index ea17cf2..b0a3413 100644 --- a/Sources/metamask-ios-sdk/Classes/Communication/SocketChannel.swift +++ b/Sources/metamask-ios-sdk/Classes/Communication/SocketChannel.swift @@ -41,7 +41,7 @@ class SocketChannel { socketManager = SocketManager( socketURL: url, config: [ - .log(false), + .log(true), options ] ) diff --git a/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift b/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift index 0d5f5dc..577d88c 100644 --- a/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift +++ b/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift @@ -99,12 +99,6 @@ class SocketClient: CommunicationClient { handleDisconnection() } - func resetClient() { - isConnected = false - self.keyExchange.reset() - tearDownConnection?() - } - func connect() { guard !channel.isConnected else { return } @@ -137,7 +131,6 @@ class SocketClient: CommunicationClient { func clearSession() { store.deleteData(for: SESSION_KEY) - resetClient() setupClient() } @@ -289,7 +282,6 @@ private extension SocketClient { ) if !self.connectionPaused { - self.resetClient() self.connectionPaused = true } } From b6e8fe89eb5050a451034576d6e26fc7db8c0baf Mon Sep 17 00:00:00 2001 From: Mpendulo Ndlovu Date: Fri, 18 Aug 2023 11:38:44 +0200 Subject: [PATCH 06/14] Improve message handling --- .../Classes/Communication/SocketClient.swift | 46 +++++++++++++++---- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift b/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift index f80de72..f1616d3 100644 --- a/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift +++ b/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift @@ -229,10 +229,8 @@ private extension SocketClient { let message = data.first as? [String: Any] else { return } - if - let message = message["message"] as? [String: Any], - message["type"] as? String == KeyExchangeType.start.rawValue { - self.keyExchange.reset() + if !self.isValidMessage(message: message) { + return } if !self.keyExchange.keysExchanged { @@ -244,6 +242,36 @@ private extension SocketClient { } } } + + func isValidMessage(message: [String: Any]) -> Bool { + if + let message = message["message"] as? [String: Any], + let type = message["type"] as? String { + if type == "ping" { + return false + } + + if type.contains("key_handshake") { + return true + } else if !keyExchange.keysExchanged { + return false + } + } + + return true + } + + func isKeyExchangeMessage(_ message: [String: Any]) -> Bool { + if + let msg = message["message"] as? [String: Any], + let type = msg["type"] as? String, + type.contains("key_handshake") { + handleReceiveKeyExchange(message) + return true + } + + return false + } // MARK: Socket disconnected event @@ -286,6 +314,10 @@ private extension SocketClient { } func handleMessage(_ msg: [String: Any]) { + if isKeyExchangeMessage(msg) { + return + } + guard let message = Message.message(from: msg) else { Logging.error("Could not parse message \(msg)") return @@ -376,8 +408,6 @@ extension SocketClient { do { let encryptedMessage: String = try self.keyExchange.encryptMessage(message) - // debug code - let data = try! JSONEncoder().encode(message) let message: Message = .init( id: self.channelId, message: encryptedMessage @@ -396,8 +426,6 @@ extension SocketClient { do { let encryptedMessage: String = try self.keyExchange.encryptMessage(message) - // debug code - let data = try! JSONEncoder().encode(message) let message: Message = .init( id: self.channelId, message: encryptedMessage @@ -411,7 +439,6 @@ extension SocketClient { } else { do { let encryptedMessage: String = try self.keyExchange.encryptMessage(message) - let data = try! JSONEncoder().encode(message) let message: Message = .init( id: channelId, message: encryptedMessage @@ -423,7 +450,6 @@ extension SocketClient { } } } else { - let data = try! JSONEncoder().encode(message) let message = Message( id: channelId, message: message From f8ca95ccd534da497d637fa6d40d3c2635395278 Mon Sep 17 00:00:00 2001 From: Mpendulo Ndlovu Date: Fri, 18 Aug 2023 11:39:14 +0200 Subject: [PATCH 07/14] Update SDK version number --- README.md | 2 +- metamask-ios-sdk.podspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 856d532..b47e4da 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ To add MetaMask iOS SDK as an SPM package to your project, in Xcode select: `Fil dependencies: [ .package( url: "https://github.com/MetaMask/metamask-ios-sdk", - from: "0.2.0" + from: "0.2.1" ) ] ``` diff --git a/metamask-ios-sdk.podspec b/metamask-ios-sdk.podspec index dae13d5..b16ed65 100644 --- a/metamask-ios-sdk.podspec +++ b/metamask-ios-sdk.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'metamask-ios-sdk' - s.version = '0.2.0' + s.version = '0.2.1' s.summary = 'Enable users to easily connect with their MetaMask Mobile wallet.' s.swift_version = '5.0' From 9da1d19c44b96949f3531c305d255cb570c22630 Mon Sep 17 00:00:00 2001 From: Mpendulo Ndlovu Date: Fri, 18 Aug 2023 11:39:55 +0200 Subject: [PATCH 08/14] Update example project to sign with any selected network --- Example/metamask-ios-sdk/SignView.swift | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Example/metamask-ios-sdk/SignView.swift b/Example/metamask-ios-sdk/SignView.swift index cdd6b9e..2bc015b 100644 --- a/Example/metamask-ios-sdk/SignView.swift +++ b/Example/metamask-ios-sdk/SignView.swift @@ -10,7 +10,7 @@ import metamask_ios_sdk struct SignView: View { @ObservedObject var ethereum: Ethereum = MetaMaskSDK.shared.ethereum - @State var message = "{\"domain\":{\"chainId\":1,\"name\":\"Ether Mail\",\"verifyingContract\":\"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC\",\"version\":\"1\"},\"message\":{\"contents\":\"Hello, Linda!\",\"from\":{\"name\":\"Aliko\",\"wallets\":[\"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\",\"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF\"]},\"to\":[{\"name\":\"Linda\",\"wallets\":[\"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\",\"0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57\",\"0xB0B0b0b0b0b0B000000000000000000000000000\"]}]},\"primaryType\":\"Mail\",\"types\":{\"EIP712Domain\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"version\",\"type\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\"}],\"Group\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"members\",\"type\":\"Person[]\"}],\"Mail\":[{\"name\":\"from\",\"type\":\"Person\"},{\"name\":\"to\",\"type\":\"Person[]\"},{\"name\":\"contents\",\"type\":\"string\"}],\"Person\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"wallets\",\"type\":\"address[]\"}]}}" + @State var message = "" @State private var cancellables: Set = [] @@ -57,6 +57,16 @@ struct SignView: View { } } } + .onAppear { + updateMessage() + } + .onChange(of: ethereum.chainId) { _ in + updateMessage() + } + } + + func updateMessage() { + message = "{\"domain\":{\"chainId\":\"\(ethereum.chainId)\",\"name\":\"Ether Mail\",\"verifyingContract\":\"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC\",\"version\":\"1\"},\"message\":{\"contents\":\"Hello, Linda!\",\"from\":{\"name\":\"Aliko\",\"wallets\":[\"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\",\"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF\"]},\"to\":[{\"name\":\"Linda\",\"wallets\":[\"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\",\"0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57\",\"0xB0B0b0b0b0b0B000000000000000000000000000\"]}]},\"primaryType\":\"Mail\",\"types\":{\"EIP712Domain\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"version\",\"type\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\"}],\"Group\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"members\",\"type\":\"Person[]\"}],\"Mail\":[{\"name\":\"from\",\"type\":\"Person\"},{\"name\":\"to\",\"type\":\"Person[]\"},{\"name\":\"contents\",\"type\":\"string\"}],\"Person\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"wallets\",\"type\":\"address[]\"}]}}" } func signInput() { From 2dd535bfbbc1caee9b086345c0ade3e097dc768b Mon Sep 17 00:00:00 2001 From: Mpendulo Ndlovu Date: Fri, 18 Aug 2023 12:08:06 +0200 Subject: [PATCH 09/14] Abstract key exchange check --- .../metamask-ios-sdk/Classes/Communication/SocketClient.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift b/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift index f1616d3..0d5f5dc 100644 --- a/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift +++ b/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift @@ -266,7 +266,6 @@ private extension SocketClient { let msg = message["message"] as? [String: Any], let type = msg["type"] as? String, type.contains("key_handshake") { - handleReceiveKeyExchange(message) return true } @@ -315,6 +314,7 @@ private extension SocketClient { func handleMessage(_ msg: [String: Any]) { if isKeyExchangeMessage(msg) { + handleReceiveKeyExchange(msg) return } From c64bebd4885f5b5f92aed7ca110cd44fc0aa8ac6 Mon Sep 17 00:00:00 2001 From: Mpendulo Ndlovu Date: Fri, 1 Sep 2023 19:25:09 +0200 Subject: [PATCH 10/14] Don't terminate socket connection of clients disconnected --- .../Classes/Communication/SocketChannel.swift | 2 +- .../Classes/Communication/SocketClient.swift | 8 -------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/Sources/metamask-ios-sdk/Classes/Communication/SocketChannel.swift b/Sources/metamask-ios-sdk/Classes/Communication/SocketChannel.swift index ea17cf2..b0a3413 100644 --- a/Sources/metamask-ios-sdk/Classes/Communication/SocketChannel.swift +++ b/Sources/metamask-ios-sdk/Classes/Communication/SocketChannel.swift @@ -41,7 +41,7 @@ class SocketChannel { socketManager = SocketManager( socketURL: url, config: [ - .log(false), + .log(true), options ] ) diff --git a/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift b/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift index 0d5f5dc..577d88c 100644 --- a/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift +++ b/Sources/metamask-ios-sdk/Classes/Communication/SocketClient.swift @@ -99,12 +99,6 @@ class SocketClient: CommunicationClient { handleDisconnection() } - func resetClient() { - isConnected = false - self.keyExchange.reset() - tearDownConnection?() - } - func connect() { guard !channel.isConnected else { return } @@ -137,7 +131,6 @@ class SocketClient: CommunicationClient { func clearSession() { store.deleteData(for: SESSION_KEY) - resetClient() setupClient() } @@ -289,7 +282,6 @@ private extension SocketClient { ) if !self.connectionPaused { - self.resetClient() self.connectionPaused = true } } From 31890106bfc5e015f085b3f75fb0455443d3ddd2 Mon Sep 17 00:00:00 2001 From: Mpendulo Ndlovu Date: Wed, 6 Sep 2023 17:35:03 +0200 Subject: [PATCH 11/14] Revert README changes --- README.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/README.md b/README.md index b47e4da..40af37b 100644 --- a/README.md +++ b/README.md @@ -196,8 +196,4 @@ To run the example project, clone this repository, change directory to `metamask You will need to have MetaMask Mobile wallet installed on your target i.e physical device or simulator, so you can either have it installed from the [App Store](https://apps.apple.com/us/app/metamask-blockchain-wallet/id1438144202), or clone and compile MetaMask Mobile wallet from [source](https://github.com/MetaMask/metamask-mobile) and build to your target device. ## Requirements -### iOS -This SDK has an iOS minimum version requirement of 14.0. You need your app to have an iOS minimum deployment of no less than 14.0. We have not tested the SDK on beta versions of iOS 17 yet, it is possible that compatibility issues may be experienced therefore we advise against running it on iOS 17 for best results. - -### Xcode -This SDK has been tested on up to version Xcode 14.3. Some compatibility issues may exist with beta versions of Xcode 15, therefore we advise against using Xcode 15 for best results. \ No newline at end of file +This SDK has an iOS minimum version requirement of 14.0. You need your app to have an iOS minimum deployment of no less than 14.0. From c7d294c87df43148ab2ecfdeaed32f4fc18ab00a Mon Sep 17 00:00:00 2001 From: Mpendulo Ndlovu Date: Wed, 6 Sep 2023 21:01:35 +0200 Subject: [PATCH 12/14] Update Swift Package with bumped version of socket io --- Package.resolved | 8 ++++---- Package.swift | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Package.resolved b/Package.resolved index 1259081..a51a249 100644 --- a/Package.resolved +++ b/Package.resolved @@ -5,8 +5,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/socketio/socket.io-client-swift", "state" : { - "revision" : "af5ce97b755d964235348d96f6db5cbdcbe334a5", - "version" : "16.0.1" + "revision" : "175da8b5156f6b132436f0676cc84c2f6a766b6e", + "version" : "16.1.0" } }, { @@ -14,8 +14,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/daltoniam/Starscream", "state" : { - "revision" : "df8d82047f6654d8e4b655d1b1525c64e1059d21", - "version" : "4.0.4" + "revision" : "ac6c0fc9da221873e01bd1a0d4818498a71eef33", + "version" : "4.0.6" } } ], diff --git a/Package.swift b/Package.swift index 5a0892e..4257704 100644 --- a/Package.swift +++ b/Package.swift @@ -17,7 +17,7 @@ let package = Package( dependencies: [ // Dependencies declare other packages that this package depends on. // .package(url: /* package url */, from: "1.0.0"), - .package(url: "https://github.com/socketio/socket.io-client-swift", .upToNextMajor(from: "16.0.1")) + .package(url: "https://github.com/socketio/socket.io-client-swift", .upToNextMajor(from: "16.1.0")) ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. From 824d77668f75fcbc1338c7422998b2c364a47a91 Mon Sep 17 00:00:00 2001 From: Mpendulo Ndlovu Date: Wed, 6 Sep 2023 21:01:35 +0200 Subject: [PATCH 13/14] Update Swift Package with bumped version of socket io --- Package.resolved | 8 ++++---- Package.swift | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Package.resolved b/Package.resolved index 1259081..a51a249 100644 --- a/Package.resolved +++ b/Package.resolved @@ -5,8 +5,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/socketio/socket.io-client-swift", "state" : { - "revision" : "af5ce97b755d964235348d96f6db5cbdcbe334a5", - "version" : "16.0.1" + "revision" : "175da8b5156f6b132436f0676cc84c2f6a766b6e", + "version" : "16.1.0" } }, { @@ -14,8 +14,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/daltoniam/Starscream", "state" : { - "revision" : "df8d82047f6654d8e4b655d1b1525c64e1059d21", - "version" : "4.0.4" + "revision" : "ac6c0fc9da221873e01bd1a0d4818498a71eef33", + "version" : "4.0.6" } } ], diff --git a/Package.swift b/Package.swift index 5a0892e..4257704 100644 --- a/Package.swift +++ b/Package.swift @@ -17,7 +17,7 @@ let package = Package( dependencies: [ // Dependencies declare other packages that this package depends on. // .package(url: /* package url */, from: "1.0.0"), - .package(url: "https://github.com/socketio/socket.io-client-swift", .upToNextMajor(from: "16.0.1")) + .package(url: "https://github.com/socketio/socket.io-client-swift", .upToNextMajor(from: "16.1.0")) ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. From 68bcbf86aa273f49da0e1a1362a22a8dbf216a78 Mon Sep 17 00:00:00 2001 From: Mpendulo Ndlovu Date: Thu, 7 Sep 2023 12:08:08 +0200 Subject: [PATCH 14/14] Disable logging --- .../metamask-ios-sdk/Classes/Communication/SocketChannel.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/metamask-ios-sdk/Classes/Communication/SocketChannel.swift b/Sources/metamask-ios-sdk/Classes/Communication/SocketChannel.swift index b0a3413..ea17cf2 100644 --- a/Sources/metamask-ios-sdk/Classes/Communication/SocketChannel.swift +++ b/Sources/metamask-ios-sdk/Classes/Communication/SocketChannel.swift @@ -41,7 +41,7 @@ class SocketChannel { socketManager = SocketManager( socketURL: url, config: [ - .log(true), + .log(false), options ] )