iOS SDK

概要

iOS SDKを使用すると、iPad、iPhone、iPod touchデバイス用に構築されたアプリケーションでVonage Video APIを使用したビデオセッションを使用することができます。

Vonage Video API iOS SDKのリファレンスは次のとおりです。 これ.

重要な注意事項

  • SDKのバージョン2.33.0以降では、macOS 14以降を搭載したApple製シリコンMacをサポートしています。.参照 macOSサポート プラットフォーム固有の考慮事項と制限事項については、以下のセクションを参照してください。
  • SDKのバージョン2.29.0以上がiOS 15以上をサポート
  • 中継セッションに影響するiOS 14のネットワーク変更 - のリストを見る 既知の問題 リリースノートに
  • M1チップを搭載したMacでSimulatorを使ってアプリをプレビューする際の問題点 - のリストを見る 既知の問題 リリースノートに
  • macOSでの画面共有は、アプリ自身のウィンドウに限定される - フルデスクトップキャプチャはサポートされていません。参照 この既知の問題 詳細はこちら

Vonage Video APIを使用するアプリケーションはすべて2つの部分で構成されています:

iOSクライアントSDKは、アプリのコア機能のほとんどを提供します:

  • セッションへの接続
  • セッションへのストリームの公開
  • セッション内でストリームを購読する

クライアントSDKは、ウェブ、Android、iOS、Windows、macOS、Linux、React Nativeでも利用可能です。すべてのクライアントSDKは相互に作用することができます。

クライアント、サーバー、セッションなどの基本については Video APIの基本ページ。

iOS SDKを使ったビルドを学ぶ

iOS SDKの使い方を学ぶ最善の方法は 基本的なビデオチャットのチュートリアル.

Vonage iOS SDKを使ったビルドの基本を理解したら、より詳細な情報を入手し、アプリケーションをカスタマイズする方法を Vonage開発者ガイド.特定のAPIクラスやメソッドを調べるには Vonage iOS SDK API リファレンスガイド.

相互運用性

Vonage iOS SDK 2.34.1 を使用して開発されたアプリは、Vonage Client SDK バージョン 2.32 以降を使用して開発された Vonage アプリと相互運用可能です:

  • ウェブSDK(OpenTok.js)
  • アンドロイドSDK
  • Windows SDK
  • macOS SDK
  • Linux SDK
  • リアクト・ネイティブSDK

クライアントSDKは、ウェブ、Android、Windows、macOS、Linux、React Nativeでも利用可能です。すべてのクライアントSDKは相互に作用することができます。Vonage Videoクライアント、サーバ、セッションなどの基本的な情報については、Vonage Video Client SDKをご覧ください。 ビデオAPIの基礎 ページを参照されたい。

SDKの使用

iOS SDKはiOS 15以上でサポートされます。

iOS SDKはWi-Fi、4G/LTE、5G接続に対応している。

iOS SDKは ココアポッズ ポッド OTXCFrameworkこれはXCFrameworkとして配布されている。XCFrameworkを使用できない場合は OpenTok PodはユニバーサルFATフレームワークとして配布されていたが、現在はアップデートを受けていない。iOS SDKは スイフト・パッケージ・マネージャー パッケージで提供される、 VonageClientSDKVideo.パッケージをインストールするには https://github.com/vonage/vonage-video-client-sdk-swift.git リポジトリを Swift パッケージの依存関係として使用します。

iOS SDKの現在のバージョンはXcode 10以上が必要です。iOS SDKは以下のフレームワークとライブラリを必要とします:

  • AudioToolbox.フレームワーク
  • AVFoundation.フレームワーク
  • コアグラフィックス・フレームワーク
  • コアメディア・フレームワーク
  • コアテレフォニーフレームワーク
  • コアビデオ・フレームワーク
  • ファンデーション・フレームワーク
  • GLKit.framework
  • libc++.tbd (Xcode 7 より前の libc++.dylib)
  • libsqlite3++.tbd (Xcode 7 より前の libsqlite3.dylib)
  • メタル・フレームワーク
  • MetalKit.フレームワーク
  • MetalPerformanceShaders.フレームワーク
  • OpenGLES.フレームワーク
  • QuartzCore.フレームワーク
  • システム設定.フレームワーク
  • UIKit.framework
  • ビデオツールボックス・フレームワーク

を使用する。 -force_load リンカーフラグを必要とする特定のライブラリをロードするために、CocoaPods または Swift Package Manager を介して SDK を追加している場合、これはあなたのために処理されます。

iOS SDKはlibc++標準ライブラリにリンクしています。libc++標準ライブラリにリンクする他のライブラリが6.0.0より古いXcodeのバージョンでコンパイルされた場合、iOS SDKで使用すると実行時にセグメンテーションフォールトが発生する可能性があります。既知の互換性のないライブラリには、Firebase(2.1.2より前のバージョン)が含まれますが、これらに限定されません。 https://code.google.com/p/webrtc/issues/detail?id=3992 およびGoogle Maps(1.9.0より前のバージョン)を使用しています。この問題を解決するには、Xcode 6.0.0以降でコンパイルされた他のライブラリのバージョンをダウンロードしてください。を参照してください。 リリースノート SDKの最新バージョンと既知の問題のリストについては、こちらをご覧ください。

iOS10では、カメラとマイクにアクセスするために、以下の値を設定する必要があります。 NSCameraUsageDescription そして NSMicrophoneUsageDescription キーを定義します。これらは、アプリがカメラとマイクを使用する理由をユーザーに知らせるために、アプリのインストーラーに表示される文字列を定義します。

詳細は以下を参照のこと。 Cocoaキーに関するAppleのドキュメント.

参照 本文書 バックグラウンドで動作するアプリでSDKを使用する方法については、こちらをご覧ください。

システム要件

信頼性の高いビデオストリーミングを行うには、お使いのデバイスが以下の推奨スペックを満たしていることをご確認ください:

  • CPU:Apple A12 Bionicまたはそれ以降。
  • RAM:グループ通話やマルチタスクのために最低4GBのRAM。
  • ディスプレイ:iPhoneは5.4インチ以上、iPadは10.2インチ以上。
  • バッテリー容量:iPhone用3000mAh以上、iPad用7000mAh以上。
  • ネットワーク信頼性の高いインターネット接続。Wi-Fiまたは携帯電話で動作。

これらの推奨事項により、ビデオストリーミング時の安定した再生、CPU使用率の低下、スムーズなパフォーマンスが保証されます。

デバイス例:iPhone XS以降(2018+)、iPad Pro(世代を問わず)、iPad Air 3以降、iPad mini 5以降。

プライバシー・マニフェストの設定

SDKのバージョン2.25.5以降では、以下の機能がサポートされています。 プライバシー・マニフェスト アップル社のApp Storeで要求されます。これらのバージョンのSDKを使用すると、必要なプライバシー関連の設定が自動的に追加されます。 アプリのプライバシーレポートを作成する.旧バージョンのSDKを使用する必要がある場合は、以下の設定に基づいて必要なプライバシー設定を手動で追加できます。 ファイル をアプリのプライバシーマニフェストファイルに追加します。

コールキット

CallKitは、iOSアプリがOSとの統合を向上させるためのフレームワークで、アプリは以下のことができる:

  • OSへの着信・発信を通知
  • VoIPプッシュ通知でアプリを起動(着信UIを表示したい場合のみ)
  • オーディオ・ルーティングの処理
  • 進行中のすべてのアプリ間のオーディオセッションを調整する
  • オーディオ出力レベルを上げる
  • 通知とネイティブ通話UIに通話コントロールを表示する

VonageビデオはCallKitと統合する2つの方法を提供する:

  1. を設定する。 CustomAudioDevice を制御する。 AudioSession アクティベーション参照 このサンプル.
  2. を使用して通話サービスモードを有効にする。 OTAudioDeviceManager.currentAudioSessionManager().オーディオセッションマネージャーから返されたインスタンスは、オーディオセッションの設定と、オーディオセッションのアクティブ化と非アクティブ化に関するSDKへの通知に使用する必要があります。参照 このサンプル.

アプリに着信などのアプリケーションイベントを通知する必要がある場合は、開発者の責任で実装してください。 そのため プッシュキット フレームワークと VoIPプッシュ通知. 参考資料として このサンプル.

Vonage Videoのネイティブ統合には、開発者がアプリ起動の早い段階で通話サービスモードを有効にする必要があります。 VoIPプッシュ通知には CXProvider.reportNewIncomingCall そうしないと、アプリがクラッシュする可能性があります。3秒以内に設定しないと、アプリがクラッシュする可能性があります。 CXAnswerCallAction コールバックが実行される。

呼び出しサービス・モードを有効にするには、アプリの application:didFinishLaunchingWithOptions: メソッドを使用する。

let sessionManager = OTAudioDeviceManager.currentSessionManager()
sessionManager?.enableCallingServicesMode()

を設定します。 AVAudioSession での CXStartCallAction または CXAnswerCallAction CXProvider コールバックを使用します。 ビデオ通話にはビデオチャットモードを、音声のみの通話にはボイスチャットをご利用ください。

sessionManager?.preconfigureAudioSessionForCall(withMode: .videoChat)
sessionManager?.preconfigureAudioSessionForCall(withMode: .voiceChat)

オーディオセッションのアクティブ化と非アクティブ化をセッションマネージャーに通知する。

func provider(_ provider: CXProvider, didActivate audioSession: AVAudioSession) {
   sessionManager?.audioSessionDidActivate(audioSession)
}
func provider(_ provider: CXProvider, didDeactivate audioSession: AVAudioSession) {
   sessionManager?.audioSessionDidDeactivate(audioSession)
}

チェック CallKit開発者向けドキュメント をご覧ください。

中継セッションに影響するiOS 14のネットワーク変更

iOS 14で、アップルはローカル・ネットワーク・プライバシーを導入した。 このビデオ).

iOS 14以降、アプリケーションが同じローカルネットワーク上のクライアントを購読しようとすると、オペレーティングシステムはユーザーに許可を求めるプロンプトを表示します。 アプリケーションが同じローカルネットワーク上のクライアントをサブスクライブしようとした場合 が表示されます。 中継セッション. 通知のデフォルトテキストには、アプリが「ローカルネットワーク上のデバイスを見つけて接続したい」と書かれている。 と表示されます。

中継セッションの場合、Vonage Video API はローカルネットワークを使用して、可能な限りローカルネットワーク上のビデオ参加者を検出します。 を検出し、可能な場合はローカルネットワーク上のビデオ参加者に接続します。クライアント クライアントがローカルネットワークに接続できない場合、アプリケーションは OpenTok TURN サーバーを使用してオーディオ・ビデオ・ストリームを中継します。

ユーザが許可を拒否した場合、購読の試みは失敗する可能性があります。 クライアントは OpenTok TURN サーバに接続できません。この場合 この場合、パーミッションが拒否された後、同じネットワーク上のクライアントにサブスクライブしようとしても、ユーザーが設定でパーミッションを変更しない限り、失敗します。 この場合、パーミッションが拒否された後、ユーザが設定でパーミッションを変更しない限り、同じネットワーク上のクライアントにサブスクライブしようとしても失敗します。 残念なことに、iOSはアプリケーションがこの許可を受け入れたか拒否したかを判断するためのAPIを提供していません。 を判断するためのAPIを提供していません。

を使用するビデオセッションには適用されないことに注意してください。 メディア・ルーター, メディアはローカルネットワークではなく、インターネット経由で送信されるからだ。

アプリケーションがリレーされたセッションを使う場合、説明的なカスタム使用文字列を追加することを推奨します。 を追加することをお勧めします:

  1. Xcodeで、アプリのinfo.plistファイルを開く。

  2. info.plistエディターで、左側の列を右クリックして 行を追加 (または +)の設定を追加する。 プライバシー - ローカルネットワーク使用説明.

  3. この文字列の値を編集して、アプリがこのパーミッションをどのように使用するかを記述する。たとえば、"このアプリはローカル ネットワークを使用して、可能な限り同じネットワーク上のビデオ参加者を検出し このアプリは、ローカルネットワークを使用して、可能な限り同じネットワーク上のビデオ参加者を検出し、接続します。" を追加します。

ユーザーへのプロンプトには、この説明が含まれる。

ルーティング セッションを使用できず、ユーザーにローカル ネットワーク アクセスのプロンプトを表示させたくないアプリケーションの場合 ローカル・ネットワーク・アクセスのプロンプトを表示させたくないアプリケーションでは、次のセクションのオプションのいずれかを使用できます。 を使用できます。

ローカルネットワークのチェックをスキップしてメディア接続を確立する

を設定することができます。 OTSessionICEConfig.filterOutLanCandidates プロパティを使って、アプリケーションにローカル・ネットワークを使用しないように強制します。 プロパティを使って、アプリケーションにローカル・ネットワークを使用させないようにします。

let settings = OTSessionSettings()
let myICEServerConfiguration = OTSessionICEConfig()
myICEServerConfiguration.filterOutLanCandidates = true
settings.iceConfig = myICEServerConfiguration
let session = OTSession(applicationId: applicationId, sessionId: sessionId, delegate: self,
                        settings: settings)
OTSessionSettings *settings = [[OTSessionSettings alloc] init];
OTSessionICEConfig *myICEServerConfiguration = [[OTSessionICEConfig alloc] init];
myICEServerConfiguration.filterOutLanCandidates = YES;
settings.iceConfig = myICEServerConfiguration;
session = [[OTSession alloc] initWithApiKey:kApplicationId
                                   sessionId:kSessionId
                                    delegate:self settings:settings];

注: について OTSessionICEConfig.filterOutLanCandidates プロパティはVonage Video iOS SDKバージョン2.30.0以降で利用可能です。

TURNサーバーを使う

を設定することができます。 OTSessionICEConfig.transportPolicy を指定すると、アプリケーションはTURNサーバーを使って接続を確立するようになります、 次のコードのように。

let settings = OTSessionSettings()
let myICEServerConfiguration = OTSessionICEConfig()
myICEServerConfiguration.transportPolicy = .relay
settings.iceConfig = myICEServerConfiguration
let session = OTSession(applicationId: applicationId, sessionId: sessionId, delegate: self,
                        settings: settings)
OTSessionSettings *settings = [[OTSessionSettings alloc] init];
OTSessionICEConfig *myICEServerConfiguration = [[OTSessionICEConfig alloc] init];
myICEServerConfiguration.transportPolicy = OTSessionICETransportRelay;
settings.iceConfig = myICEServerConfiguration;
session = [[OTSession alloc] initWithApiKey:kApplicationId
                                   sessionId:kSessionId
                                    delegate:self settings:settings];

システム要件

Vonage iOS SDKはiOS 15以上でサポートされます。iOS 15の対応デバイスリストをご確認ください。 これ

iOS SDK 2.33.0+は、macOS 14以降を搭載したApple製シリコンMac(M1、M2、M3以降)で、iOS apps on Mac機能によりサポートされます。IntelベースのMacはサポートされていません。

Vonage iOS SDKはWi-Fi、4G/LTE、5G接続に対応しています。

macOSサポート

iOS SDK 2.33.0+は、macOS 14以降を搭載したApple製シリコンMac(M1、M2、M3以降)に対応しています。macOSでは、SDKはiOSデバイスで利用可能な機能のほとんどを提供しますが、プラットフォーム特有の違いや制限事項がいくつかありますので、ご注意ください。

macOSでのカメラの動作

macOSデバイスには通常、1つの内蔵カメラ(FaceTimeカメラ)があり、これは常にフロントカメラとしてマッピングされています (AVCaptureDevicePositionFront).Macに接続された外部カメラもフロントカメラとして扱われます。

重要な考慮事項

  • iOSデバイスとは異なり、Macには "バックカメラ "という概念がない。
  • について cameraPosition プロパティは、macOSでは常にフロントカメラに解決されます。
  • macOSで複数のカメラ(内蔵と外付けなど)を切り替えるには、カスタムビデオキャプチャを実装します。詳しくは カスタムビデオキャプチャー を案内する。

ローテーション・ハンドリング

macOSデバイスは、iOSモバイルデバイスのような自動方向回転をサポートしていません。

  • ビデオは常に横向きで公開される
  • macOSでデバイスの回転イベントが発生しない
  • 特定のレイアウト調整が必要な場合、アプリケーションは向きを手動で処理する必要があります。

トーチ(懐中電灯)の制限

カメラのトーチ(懐中電灯)機能はmacOSでは使用できません。

  • セッティング cameraTorch プロパティ true はmacOSには影響しません。
  • Macのカメラ(内蔵または外付け)はトーチ/フラッシュライト機能をサポートしていません。
  • この機能はiOSモバイル・デバイス専用です。

サンプルアプリ

サンプルはこちら Swiftサンプルアプリレポ または Objective-Cサンプル・アプリ・レポ をGitHubで公開している。

ドキュメンテーション

各 iOS メソッドの詳細なドキュメントは リファレンスガイド.

詳細情報

新機能と既知の問題のリストについては リリースノート.

バックグラウンドで動作

参照 背景状態の管理.