メインコンテンツまでスキップ
このページは自動翻訳されており、誤りが含まれる場合があります。 英語の原文を表示

Unity 向け iOS/visionOS 接続ガイド

適用範囲

bHaptics Unity SDK 2.8.0 以降、iOS および visionOS の実機のみに適用されます。[bHapticsUIApple] プレハブと BhapticsAppleDevices API は、エディターや他のプラットフォームでは何も動作しません。iOS/visionOS でのみ使用し、必ず実機でテストしてください。

Windows/macOS/Android では、bHaptics Player アプリがデバイス接続を管理します。iOS/visionOS ではそれができません。アプリサンドボックスが、あるアプリが他のアプリのために Bluetooth 接続を維持することを許可しないためです。代わりに、各アプリが CoreBluetooth を通じてデバイスを直接スキャンして接続します

SDK は BhapticsAppleDevices API と、サンプル UI プレハブ [bHapticsUIApple] を提供します。以下の手順ではこのプレハブを使用します。

  1. Bluetooth 使用目的の説明を追加する
  2. サンプル UI プレハブでスキャンと接続を管理する
  3. ハプティックを再生する

Bluetooth 使用目的の説明を追加する

ハプティックデバイスは Bluetooth で通信するため、アプリには NSBluetoothAlwaysUsageDescription キーが必要です。bHaptics SDK は このキーを自動的に追加しません ので、ご自身で追加する必要があります。

追加しなかった場合:

  • アプリが初めて CoreBluetooth にアクセスしたとき(たとえば、SDK がペアリング済みデバイスを再接続するために Bluetooth マネージャーを初期化するとき、またはスキャンを開始するとき)、iOS は アプリを即座にクラッシュさせます:
    This app has crashed because it attempted to access privacy-sensitive data
    without a usage description. The app's Info.plist must contain an
    NSBluetoothAlwaysUsageDescription key ...
  • App Store Connect のアップロード検証は、アプリが実行時にスキャン API をまったく呼び出さない場合でも、ITMS-90683 (Missing purpose string) でビルドを拒否することがあります。ビルドされたアプリケーションが CoreBluetooth API を参照しているためです。

説明の追加方法

生成された Xcode プロジェクトで、アプリのメインターゲット(iOS ビルドの場合は通常 Unity-iPhone)を選択し、Info タブを開きます。Privacy - Bluetooth Always Usage Description を追加するか、Info.plist を直接編集します:

<key>NSBluetoothAlwaysUsageDescription</key>
<string>This app uses Bluetooth to connect to nearby bHaptics haptic devices (such as TactSuit) and play haptic feedback.</string>

アプリが Bluetooth を使用する理由を説明する、アプリ固有の 文章を記述してください。曖昧または一般的な文章は App Review で拒否されることがあります(ガイドライン 5.1.1)。

ヒント

権限のポップアップはアプリを初めて起動したときに表示され、この文章が示されます。ローカライズには InfoPlist.strings を使用してください。

サンプル UI を使って接続する

[bHapticsUIApple] プレハブは、bHaptics デバイスをスキャンして接続する方法を示すサンプル UI で、内部的に BhapticsAppleDevices API を使用しています。

[bHapticsUIApple] プレハブは iOS/visionOS でのみ使用してください。

事前準備

このガイドは、bHaptics Unity SDK をすでにインポートし、ハプティックアプリを連携済みであることを前提としています。まだの場合は、先に Unity ガイド をご覧ください。

UI プレハブを追加する

シーンに配置された [bHapticsUIApple]

Assets/Bhaptics/SDK2/Prefabs/[bHapticsUIApple] プレハブをシーンに配置します。

スキャン

スキャン実行中

  • Scan をタップすると、周辺の bHaptics デバイスを検索します。
  • スキャンは 30 秒後に自動的に停止 し、ボタンに残り時間のカウントダウンが表示されます。もう一度タップすると、すぐにスキャンを停止します。
  • リストには 今回のスキャンで見つかったデバイスと、以前にペアリングしたデバイスが一緒に 表示されます。

接続

接続された状態

  • デバイスの Connect をタップすると、ペアリング(記憶)と接続が一度に行われます。ステータスが緑色に変わり、Connected と表示されます。
  • Disconnect は、デバイスのペアリングを解除(忘れる)し、接続を切断します。

各デバイスには接続ステータスが表示されます。ステータスは次の 3 種類です:

ステータス意味
[Position] - Connected (緑)接続済み
[Position] - Paired (グレー)記憶されているが、現在は接続されていない
[Position]スキャンされたが、ペアリングされていない
接続はアプリ単位です

ペアリング情報は、iOS の設定アプリにおけるシステムレベルの Bluetooth ペアリングではなく、アプリ自身のサンドボックス に保存されます。

  • アプリごとに個別にペアリング する必要があります。別のアプリで同じデバイスを使用するには、そのアプリから再度接続してください。
  • 一度ペアリングすると、次に SDK が初期化されるときにデバイスが 自動的に再接続されます(アプリ起動時に [bHaptics] プレハブがこれを行います)。
  • ペアリングしていないデバイスが自ら接続することはありません — スキャンとペアリングは常に明示的です(マルチユーザーや現場イベントに便利です)。

次のステップ: ハプティックの再生

スキャンと接続はそれ自体で動作しますが、イベントを再生するには SDK が初期化されている必要があります。初期化は [bHaptics] プレハブが処理します。最初のシーンにこのプレハブを追加してください(Unity ガイドAdd Prefab for Initialization を参照)。

プレハブを配置したら、いつもどおりイベントを再生します:

BhapticsLibrary.Play("my_event"); // Plays on the connected device

付録: UI を使わずに直接制御する

[bHapticsUIApple] はサンプルにすぎません — 同じ低レベル API を使って独自の接続 UI を作成できます。リファレンスの Class BhapticsAppleDevices をご覧ください。