トラブルシューティング

ビルド

Carthage

Incompatible Swift version - framework was built with x.x.x and the local version is x.x.x

carthage update の実行時に次のエラーが発生する場合があります。

*** Downloading sora-ios-sdk.framework binary at "1.0.0"
*** Downloading sora-webrtc-ios.framework binary at "M57"
*** Downloading SocketRocket.framework binary at "0.4.2"
*** Checking out unbox at "2.2.1"
*** Skipped installing sora-ios-sdk.framework binary due to the error:
  "Incompatible Swift version - framework was built with 3.0.2 and the local version is 3.1."
*** Checking out sora-ios-sdk at "1.0.0"
*** xcodebuild output can be found in /var/folders/pk/nkv_60cd629g28km03t35ypm0000gn/T/carthage-xcodebuild.mkQRsi.log
*** Building scheme "Sora" in Sora.xcodeproj

このエラーは、 Sora iOS SDK のバイナリをビルドした Swift のバージョンと、使用中の Swift のバージョンが異なる場合に発生します。

次の方法を試してみてください。

Sora iOS SDK 以外のライブラリのビルドに失敗する

carthage update で Sora iOS SDK 以外のライブラリのビルドに失敗する場合は、 Sora iOS SDK と Swift (Xcode) の両方のバージョンを最新版に上げてみてください。

Xcode

Use of undeclared type 'xxx' または 'xxx' is unavailable: cannot find Swift declaration for this class

Sora モジュールをインポート (import Sora) しているにも関わらず、次のエラーでビルドできない場合があります。

  • Use of undeclared type 'xxx'
  • 'xxx' is unavailable: cannot find Swift declaration for this class

これらのエラーは、次のいずれかの状況で発生します。

  • Sora iOS SDK がサポートしていないアーキテクチャをビルドのターゲットに含めている
  • リンクする Sora iOS SDK のバージョンに存在しない API を使っている

これらのエラーが発生したら、次の方法を試してください。

  • Sora iOS SDK を最新版にアップデートする。
  • ビルドのターゲットにシミュレーターを指定しないか確認する。 Sora iOS SDK はシミュレーターをサポートしていません。
  • プロジェクトの "Build Settings" の "Valid Architectures" で指定しているアーキテクチャを確認する。 Sora iOS SDK がサポートするアーキテクチャは "armv7" と "arm64" のみです。

実行

アプリケーションが強制終了する

SDK を組み込んだアプリケーションが強制終了する場合、一つの原因として Info.plist ファイルにカメラとマイクの用途が記述されていない可能性があります。 Info.plist にカメラとマイクの用途を記述しているかどうか確認してください。

起動時に次のログが表示される: One of the two will be used.

アプリケーションを iOS 12 以降のデバイスで起動すると次のログが出力されます。

` /private/var/containers/Bundle/Application/C1E5D7C0-076A-41E3-831A-C4911C2ABB3D/MyApp.app/MyApp objc[28847]: Class RTCCVPixelBuffer is implemented in both /System/Library/PrivateFrameworks/WebCore.framework/Frameworks/libwebrtc.dylib (0x261598018) and /private/var/containers/Bundle/Application/C1E5D7C0-076A-41E3-831A-C4911C2ABB3D/MyApp.app/Frameworks/WebRTC.framework/WebRTC (0x104ce9af8). One of the two will be used. Which one is undefined. objc[28847]: Class RTCWrappedNativeVideoDecoder is implemented in both /System/Library/PrivateFrameworks/WebCore.framework/Frameworks/libwebrtc.dylib (0x25f453468) and /private/var/containers/Bundle/Application/C1E5D7C0-076A-41E3-831A-C4911C2ABB3D/MyApp.app/Frameworks/WebRTC.framework/WebRTC (0x104ce9b48). One of the two will be used. Which one is undefined. objc[28847]: Class RTCWrappedNativeVideoEncoder is implemented in both /System/Library/PrivateFrameworks/WebCore.framework/Frameworks/libwebrtc.dylib (0x25f4534b8) and /private/var/containers/Bundle/Application/C1E5D7C0-076A-41E3-831A-C4911C2ABB3D/MyApp.app/Frameworks/WebRTC.framework/WebRTC (0x104ce9b98). One of the two will be used. Which one is undefined. objc[28847]: Class RTCVideoDecoderVP8 is implemented in both /System/Library/PrivateFrameworks/WebCore.framework/Frameworks/libwebrtc.dylib (0x25f4531c0) and /private/var/containers/Bundle/Application/C1E5D7C0-076A-41E3-831A-C4911C2ABB3D/MyApp.app/Frameworks/WebRTC.framework/WebRTC (0x104ce9c10). One of the two will be used. Which one is undefined. `

このログは、 Sora iOS SDK が利用する WebRTC ライブラリのバイナリと組み込みのバイナリとの競合を示しています。

iOS 12 以降のデバイスでは WebRTC ライブラリが組み込まれるようになり、 アプリケーションを起動すると組み込みの WebRTC ライブラリがロードされます。 同時に Sora iOS SDK が利用する WebRTC ライブラリもロードされるので、同じライブラリが重複してしまいます。 そのため iOS はどちらか一方のライブラリのみを使用しますが、選択結果はわかりません (公式ドキュメントにも具体的な記述はありません) 。 ただし、 Sora iOS SDK の WebRTC ライブラリが使われていることは確認していますので、特に動作に問題はありません。

接続

Sora サーバーに接続できない

まずは wscat などのツールで WebSocket の接続の成否を確認してください。 wscat であれば次のコマンドで接続の成否を確認できます:

$ wscat --connect [URL]

もし接続できなければ URL を確認してください。

  • プロトコルは "ws" または "wss" のどちらかを指定していますか? Sora iOS SDK のシグナリングは WebSocket のみ対応しています。
  • ポート番号に間違いはありませんか? "wss" であれば通常は 443 です。
  • パスに signaling を指定していますか?

URL に問題がないのに WebSocket 接続ができない場合は、 Sora の設定やネットワーク環境を確認してください。