環境
- Meta Quest
- Unity 6.3 LTS
- Meta XR SDK 203.0.0
発生したこと
Meta XR SDKを使って、新規アプリを開発していました。
アプリにはSpatial Anchorの生成、保存、削除などを実装しています。
開発当初はMeta XR SDKに設定されているデフォルトのApp IDを使用しており、Anchorの保存も正常に動作していました。
その後、App IDを独自に作成したものへ変更すると、Anchorの保存に失敗するようになりました。
ログを確認
原因を調べるため、UnityのAndroid LogcatでQuestのログを確認しました。
必要な部分だけ抜粋すると、以下のエラーが出ていました。
RuntimeIpcHelper: Failed RPC for saveSpaces, rpcAllowed: false
SP:AF:InsightAnchorApi: SaveSpaces (task finish)
returnCode: AnchorResultCode::ERROR_PACKAGE_UNTRUSTED(-10035)
OVRPlugin [XREVENT][XR_ERROR_SPACE_PERMISSION_INSUFFICIENT_META]
XR_TYPE_EVENT_DATA_SPACES_SAVE_RESULT_META
重要なのは以下のエラーです。
ERROR_PACKAGE_UNTRUSTED(-10035)
Unity側では権限不足のエラーに見えましたが、実際にはQuest Runtimeからアプリのパッケージが信頼されていないと判定されていました。
原因
少なくとも今回の環境では、独自App IDを使う場合、Meta Horizon Developer DashboardにAPKを登録して、Quest Runtimeから信頼されたパッケージとして扱われる必要がありそうでした。
以前はDashboardにAPKを登録しなくても動作していた記憶があるので、途中でルールやRuntime側の判定が変わったのかもしれません。
デフォルトのApp IDでは動作していたため、Dashboardへの登録が必要なことに気づきませんでした。
対処方法
公式デスクトップアプリのMeta Quest Developer Hub、またはMeta Horizon Developer Dashboardで対象のアプリを新規登録するか、既存のアプリを開き、ビルドしたAPKをリリースチャンネルへアップロードします。
今回はテスト用なので、Alphaチャンネルへ登録しました。
Meta Horizon Developer Dashboard
└ Distribution
└ Release Channels
└ Alpha
AlphaチャンネルへAPKを登録した後、再度Quest上で実行すると、Spatial Anchorを正常に保存できるようになりました。
ストアへの公開は不要で、今回の環境ではAlphaチャンネルへの登録だけで解決しました。
まとめ
Spatial Anchorの保存時に以下のエラーが発生した場合は、Developer DashboardへのAPK登録を確認するとよさそうです。
ERROR_PACKAGE_UNTRUSTED(-10035)
今回の流れは以下のとおりです。
- デフォルトのApp IDではAnchorを保存できた
- 独自App IDへ変更すると保存できなくなった
- logcatで
ERROR_PACKAGE_UNTRUSTEDを確認した - APKをDeveloper DashboardのAlphaチャンネルへ登録した
- Spatial Anchorを保存できるようになった
FailurePermissionInsufficientだけを見ると権限設定の問題に見えますが、今回はDeveloper Dashboardへのアプリ登録が原因でした。
もしかしたら他にも解決策があるかもしれないので、ご存じの方がいれば教えていただけるとうれしいです。
