iOS 26でアプリがフリーズする問題と対応記録

症状

・アプリの「お問い合わせ」に、iOS 26環境でアプリが突然終了・フリーズするという報告が相次いだ。

・Androidからの報告はなし。

・有料版(広告なし)からの報告もなし。

調査

Xcodeの解析データからスタックトレースを取得。

Thread 70 Queue: com.apple.NSURLSession-delegate (serial)

#0 UnityAds.NetworkTransactionDiagnosticAdapter.convertToDiagnosticEvent
#1 convertToNetworkMetricType
#2 GenericNetworkDiagnosticDecorator.sendNetworkMetricsIfNeed
#5 NetworkSenderBase.createDataTask
#15 _pthread_wqthread


自分のコードは一切含まれていない。

Unity Ads SDK内部でクラッシュしている。


convertToDiagnosticEvent
はバナー広告のネットワーク通信完了後に診断データを収集・変換する処理。
iOS 26でNSURLSessionTaskMetricsのAPI変更があり、SDK側が対応できていない模様。

調査の結果、以下が判明した。

  • UnityLevelPlay v9.3.0使用時はクラッシュ報告なし
  • UnityLevelPlay v9.4.1へのアップデート後からクラッシュ開始
  • iOS 26.3.1、26.4.2、26.5すべてで発生
  • Androidは同バージョンでANR修正済みのため問題なし
  • 有料版(バナーなし)は問題なし

つまりiOS 26 × UnityLevelPlay v9.4.1の組み合わせが問題。

・SDK開発元(Unity Technologies)にチケットを提出。

・ユーザーからの報告件数とスタックトレースを添付。

暫定対応 

SDK修正版のリリースを待つ間、バナーを一時停止することにした。

教訓

  • バナーはLevelPlayにおいて比較的新しい機能(SDK 8.4.0でベータ追加)であり、まだ成熟しきっていない
  • SDKのアップデートは必ずしも安全ではない