iOS17 Simulatorだとin-app purchaseのテストでSKError.Code.unknownが返る問題の対策
SKTestSessionを用いたテストが、Xcode15になってからiOS17 Simulatorでのみテストが通らなくなった場合の対応方法を紹介する。
iOS17では、SKTestSession.failTransactionsEnabledがdeprecatedになった。これに伴い、ここら辺の挙動がおかしくなっている。
もしデフォルト値のfalse
から返る必要がないにも関わらず設定している箇所がある場合はそのコードを削除する必要がある。(unavailableを使わずに単に削除しても良いと思う)
これは、iOS17環境下では代入を行うと強制的にtrue
になるという謎の問題があるからである。
(lldb) po session.failTransactionsEnabled
false
(lldb) po session.failTransactionsEnabled = false
0 elements
(lldb) po session.failTransactionsEnabled
true
true
に設定したい場合は正しく動作するように見えるが、iOS17以降はSKTestSession.setSimulatedError(_:forAPI:)に移行した方が良さそうだ。
記事が気に入ったらチップを送ることができます!
You can give me a cup of coffee :)
Kyash ID: soranoba
Amazon: Wish List
GitHub Sponsor: github.com/sponsors/soranoba
PayPal.Me: paypal.me/soranoba
(Updated: )