stripe / stripe-terminal-ios

Stripe Terminal iOS SDK
https://stripe.com/docs/terminal/sdk/ios
Other
104 stars 65 forks source link

Cancelling discovery mode fails/hangs after unsuccessfully connecting to a Bluetooth reader. #249

Closed mikado2005 closed 11 months ago

mikado2005 commented 1 year ago

Summary

I generated a reader connection error by attempting to connect a BBPOS WisePad3 to an American account and location. It may be that generating any sort of connection error will also reproduce the issue. After that error occurs, any calls to the discovery Cancellable object hangs, by never calling its completion block. The completion block of discoverReaders is also never called.

Code to reproduce

Small sample project is here: https://planetbeagle.com/stripe/ConnectionError.zip

iOS version

iOS 16.6

Installation method

Integrated into app using CocoaPods.

SDK version

StripeTerminal (2.23.0)

Other information

bric-stripe commented 1 year ago

@mikado2005 thanks for the report and sample project to reproduce! we learned about this regression last week and have a fix rolling out today. 2.23.1 should be published in the next few hours that will include the fix for this.

bric-stripe commented 1 year ago

ran the provided sample app against the pre-release 2.23.1 and confirmed it no longer gets stuck, thanks again for that.

fetchConnectionToken succeeded pst_test_XYZ
Found a WisePad reader: XYZ
Connecting to bluetooth reader UNKNOWN
ERROR! connectBluetoothReader FAILED error: Error Domain=com.stripe-terminal Code=9020 "The BBPOS WisePad 3 reader is not supported in the United States (US) ...
Cancelling discovery mode
APP WILL HANG HERE
discoveryCancellable.cancel -- SUCCESS
Terminal connection status = NOT CONNECTED
discoverReaders -- SUCCESS
Terminal connection status = NOT CONNECTED
Discovering bluetooth readers
Bluetooth discovery mode initiated
bric-stripe commented 11 months ago

closing this one out as it should be fixed in 2.23.1+ (just missed closing the issue).